Перейти к содержанию
Форум шарда Middle-Earth

trotil

Members
  • Публикаций

    7
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные trotil


  1. последнии 2 дня лагать так стало- играть невозможно

    у вас с инетом что то?

    и если можно добавьте раздел для нубов : описание поуер скроллов градацию, и как их использовать и для чего

    а в таблицы скакого уровня скилла мастер может работать с цветным деревом, рудой, кожей


  2. Не хочу ничего рекламировать, но скажем так. Это не верно. Есть места, где играет взрослый, адекватный контингент без стремления к самоутверждению на всем что движется.

    и И где ж такие замечательные и адекватные есть??? Я лично за месяц встретил только 3 человек. Хотя с другой стороны пусть лучше на пикселах самоутверждаются чем к примеру котят мучат. Ущербных тут дофига

     


  3. Пару постов выше лежит нормальный скрипт на стрелы.

    спасибо, проверил работает туда еще можно добавить кучкователь стрел вот такой

    sub ArrowArrow()
    while uo.count("0x0f3f") > 0
    uo.findtype("0x0f3f")
    If UO.FindCount() > 0 Then
    UO.MoveItem( 'finditem', '1' )
    wait( 50 )
    Endif
    wend
    end sub

    он выше лежал на другой странице

    А насчет ламбера можешь скащать что нибуть?

     


  4. да и еще спросить хотел: скрипт стрелы делать, всем хорош только не пойму почему ему постоянно надо показываит прицелом на шафты, а как сделать что бы один раз показал а дальше скрипт в автомате работаел?

    а то он постоянно спрашивает "grab what?" и пока прицелом на шафты не покажешь не работает (

    sub Bowcraft()
      while uo.count(0x1BD1) > 0
        uo.findtype(0x1BD4, -1, "ground")
        uo.waittargetobject(uo.getserial("shaft"))
        uo.exec("grab 1")
        
        repeat
          wait(500)
        until uo.count(0x1BD4) > 0
    
        uo.waitmenu("What", "Arrow")
        uo.waittargettype(0x1BD1)
        uo.usetype("shaft")
    
        uo.deletejournal()
        repeat
          wait(250)
        until uo.injournal("You create") or uo.injournal("You destroy")
        repeat
          wait(250)
       
      wend
    end sub


  5. ну что ж раз телепатов тут нет (досадно, да?) :D :D :D привожу скрипт хотя он есть на 3 странице этого топика как я сразу и написал.Вообщем проблема такая марчю деревья, а когда пытаюсь ходить по собранным координатам ходить ходит но не рубит (

    ##########################################################
    ###      Lumberjacking / Рубка деревьев v8.7 Full      ###
    ##########################################################
    ###                                                                    ###################################
    ###    Режимы работы скрипта    ###    
    ###################################
    ###   Работает в 2х режимах:    ###
    ###   1)Маркировка              ###
    ###   2)Рубка                   ###
    ###################################
    ### Режим Первый - "Маркировка" ###
    ###################################
    ### Этот режим отвечает за Маркирование(записывание координат) деревьев.
    ### Включается переменной var GetFromFile=0 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента.
    ### То есть если GetFromFile=0 координаты деревьев собиратся из клиента.
    ###
    ### Маркировка происходит так:
    ### Поставте переменную GetFromFile равную 0 (GetFromFile=0).
    ### Положите к себе в сумку Топор, Рунбук(с рунами домой и в лес), Руну(в безопасное место) и Кирку.
    ### Идите в лес в котором вы хотите рубить.
    ### Запустите Скрипт Lumberjacking(), инжект попросит вас указать Топор
    ### (появится прицел,прицелом на топор который вы с собой взяли),
    ### потом инжект попросит вас указать Рунбук(появится прицел,прицелом на него) и Руну в безопасное место(прицелом на нее).
    ### Инжект сообщит вам что ('Собираем координаты деревьев в округе...').
    ### Инжект попросит вас указать Кирку(появится прицел,прицелом на неё).
    ### Теперь вы должны в любом порядке сами прицелом указать координаты(достаточно просто нажать прицелом на дерево).
    ### Если вы не промахнулись и "нажали" на дерево, то инжект сообщит вам об этом(Найдено дерево "координаты дерева").
    ### Причем что если даже вы нажмете два раза на одно дерево то он не "запомнит" его повторно.
    ### Ходите по лесу и марчите деревья.
    ### Для того чтобы остановить марк нажмите таргетом на себя.
    ### Инжект напишет вам сообщение ('Анализ закончен, координаты деревьев записаны в файл' +FileName) и создаст файл на диске
    ### С:\ куда запишет координаты деревьев.
    ### После этого чар пойдет по координатам и будет вырубать деревья.
    ###
    ##############################
    ### Режим Второй - "Рубка" ###
    ##############################
    ### Этот режим соответственно отвечает за рубку.
    ### Включается переменной var GetFromFile=1 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента
    ### То есть если GetFromFile=1 координаты деревьев будут считыватся из файла.
    ### И вам не надо будет сново марчить деревья.
    ###
    ### Рубка происходит так:
    ### Поставте переменную GetFromFile равную 1 (GetFromFile=1).
    ### Положите к себе в сумку Топор и Рунбук(с рунами домой и в лес).
    ### ]![ Внимание руны в рунбуке вы можете указать в переменных RuneToHome=4 и RuneToForest=5(вместо 4 и 5 номера ваших рун). ]![
    ### После установок рун в рунбук.
    ### ]![ Внимание в скрипте система рекола по рунбуке настроена под ДРВ шард. ]![
    ###
    #########################################
    ###  Дополнительные функции скрипта   ###
    #########################################
    ###     В скрипте 4е доп. функции:    ###
    ###     1)Речарж Рунбуки              ###
    ###     2)Употребление Пищи           ###
    ###     3)Рекол при Атаке             ###
    ###     4)Реконнект                   ###
    #########################################
    ### Функция Первая - "Речарж Рунбуки" ###
    #########################################
    ### Этот режим соответственно отвечает за Речарж(заполнение скролами) Рунбуки.
    ### Включается переменной var RechargeBook=1 ## 1 - Включить речарж рунбуки, 0 - отключить речарж.
    ### То есть если RechargeBook=1 чар будет речаржить рунбуку.
    ###
    ### Речарж происходит так:
    ### Поставте переменную RechargeBook равную 1 (RechargeBooks=1).
    ### Положите в сундук, в который будут выгручаться логи, реколы.
    ### Чар берет 50 реколов из сундука, речаржет рунбуку, оставшиеся кладет обратно в сундук.
    ###
    ############################################
    ### Функция Вторая - "Употребление Пищи" ###
    ############################################
    ### Этот режим соответственно отвечает за Употребление Пищи.
    ### Включается переменной var EatingFood=1 ## 1 - Будем есть, 0 - нет.
    ### То есть если EatingFood=1 чар будет кушать.
    ###
    ### Употребление Пищи происходит так:
    ### Поставте переменную EatingFood равную 1 (EatingFood=1).
    ### Положите в сундук куда будут выгружаться логи и где лежат реколы - еду,
    ### тип которой вы указали тут var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки)
    ### После того как чар выложит логи и речаржнет рунбуку, будет кушать.
    ### Он берет 20 единиц еды и кушает, что осталось выгружает обратно в сундук.
    ###
    ##########################################
    ### Функция Третья - "Рекол при Атаке" ###
    ##########################################
    ### Этот режим соответственно отвечает за Рекол при атаке ентов и не только(также стоит проверка на ПК и Криминалов).
    ### Включается переменной var ControlOfDanger=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - отключить рекол.
    ### То есть если ControlOfDanger=1 чар будет реколиться при атаке.
    ###
    ### Побег происходит так:
    ### Поставте переменную ControlOfDanger равную 1 (ControlOfDanger=1).
    ### Замарчите Руну в безопасном месте.
    ### Положите к себе в сумку
    ### Руну(которую замарчили в безопасном месте), Реагенты(Black Pearls,Blood Moss,Mandrake Root.)
    ### и Бутылки расчитывая на то сколько вы хотите рубить.(Invizible Potion,Mana Potion,Heal Potion).
    ### При атаке, появлении ПК или криминала вы выпиваете Invizible Potion, автоматически телепортитесь на то место,
    ### где замаркана руна(в бакпаке).
    ### В это время записывается имя того кто вас атачил.
    ### После рекола руна маркается и проверяется ваша мана и здоровье, если чегото меньше,
    ### чар выпивает Mana Potion или Heal Potion в зависимости от надобности.
    ###
    ######################################
    ### Вариант Первый - "Цыкличность" ###
    ######################################
    ### Есди вы хотите чтобы скрипт не прекращал свою работу, то поставьте переменную CycleScript раную 1 (CycleScript=1),
    ### затем после указания предметов таргетом задите в "Edit current script"(в окно редактирования скрипта) и
    ### поставьте переменную AddObject равную 0 (AddObject=0).
    ### Теперь после рекола скрипт не будет выключаться, а будет ждать указанное время(DangerousTime) и затем
    ### реколиться домой, речаржить рунбуку, есть и опять реколиться на место рубки и рубить.
    ###
    #####################################
    ### Вариант Второй - "Выключение" ###
    #####################################
    ### Есди вы хотите чтобы скрипт не прекращал свою работу, то поставьте переменную CycleScript раную 0 (CycleScript=0),
    ### Теперь после рекола скрипт выключится и закроет окно UO.
    ###
    #######################################
    ### Функция Четвертая - "Реконнект" ###
    #######################################
    ### Этот режим соответственно отвечает за Реконнект при выкидывании с сервера.
    ### Включается переменной var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект.
    ### То есть если Reconnect=1 чар будет реколиться при атаке.
    ###
    ### Реконнект происходит так:
    ### Поставте переменную Reconnect равную 1 (Reconnect=1).
    ### Если вдруг повиснет игровая сфера или вас выкинет по любой другой причине
    ### реконнектор законнектит вас на сервер автоматически.
    ### Пишется время дисконнекта и коннекта на сервер.
    ###
    ### ]![ Настройте скрипт под себя при помощи переменных. ]![
    ###
    ##################
    ### Переменные ###
    ##################
    ################################################################################
    ##################################
    ###
    var FileName=('C:\trees3.dat') ## - Путь к файлу в котором будут хранится координаты деревьев.
    ###
    var TryHiding=0 ## 0 - Перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет .
    ###
    var TryRecall=0 ## 0 - После того как соберет LogsQty логов, будет пытаться реколиться домой,
    ### складывать логи в сундук и реколиться обратно , 0 - не будет.
    ###
    var RuneToHome=4 ## - Номер руны Домой,по счёту в рунбуке.(сейчас в 4ом слоте,можно менять от 1-9)
    ###
    var RuneToForest=5 ## - Номер руны в Лес,по счёту в рунбуке.(сейчас в 5ом слоте,можно менять от 1-9)
    ###
    var RechargeBook=0 ## 1 - Включить речарж рунбуки, 0 - отключить речарж.
    ###
    var GetFromFile=1 ## 1 - Координаты деревьев будут считыватся из файла, 0 - собиратся из клиента
    ### (сначала соберите а потом считывайте из файла).
    ###
    var LogsQty=3700 ## - Количество логов, добыв которое надо реколиться домой.
    ###
    var QuantityImpact=15 ## - Сколько раз чар будет ударять по дереву, прежде чем перейдет к другому.(стандарт - 15)
    ###
    var ControlOfDanger=0 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - отключить рекол.
    ###
    var PhysicalDanger=0 ## 1 - влючить рекол при физической атаке, 0 - отключить рекол.
    ###
    var SeenDanger=0 ## 1 - влючить рекол при появлении рядом ПК ил криминала, 0 - отключить рекол.
    ###
    var RecallFromAll=0 ## 1 - включить рекол при появлении рядом любово чара, 0 - отключить рекол.
    ###
    var DisturbingSound=('C:\Warning.wav') ## - Звук которы будет пригран при атаке.(замените на свой)
    ###
    var DangerousTime=50000 ## - Время которое чар будет ждать(после рекола) пока уйдет ПК или Ент.(сейчас 50 секунд)
    ###
    var CycleScript=0 ## 1 - Скрипт не отключается после рекола от атакующего, 0 - отключаетсяи закрывает UO.
    ###
    var EatingFood=0 ## 1 - Будем есть, 0 - нет.  
    ###
    var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки)
    ###
    var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект.
    ###
    var Chest='0x40203CC2' ## - ID сундука куда будут выгружаться логи, где должны лежать реколы и еда.
    ###
    var AddObject=0 ## 1 - Если надо добавить обьекты, 0 - не надо.
    ###
    ################################################################################
    ##################################
    ###
    ### После настройки:
    ### Идите в лес в котором вы хотите рубить.
    ### Запустите cкрипт Lumberjacking(), Инжект попросит вас указать Топор
    ### (появится прицел, прицелом на топор который вы с собой взяли),
    ### затем инжект попросит вас указать Рунбук(появится прицел, прицелом на него) и Руну(прицелом на неё).
    ### После этого чар пойдет по координатам и будет вырубать деревья.
    ###########
    ### Код ###
    ###########
    sub Lumberjacking()
    var i=0,j=0,k=0,r=0,q=0,ii,jj,f
    var TopX=324,TopY=65
    dim TreeX[5000],TreeY[5000],TreeT[5000]
    dim TreeTile[29]
    var flag=0,TreeCount=0,clicks=0,flag2=0
    ########################
    ### Графика деревьев ###
    ########################
    TreeTile[0]=3277
    TreeTile[1]=3280
    TreeTile[2]=3283
    TreeTile[3]=3286
    TreeTile[4]=3289
    TreeTile[5]=3291
    TreeTile[6]=3294
    TreeTile[7]=3296
    TreeTile[8]=3299
    TreeTile[9]=3302
    TreeTile[10]=3393
    TreeTile[11]=3394
    TreeTile[12]=3395
    TreeTile[13]=3396
    TreeTile[14]=3415
    TreeTile[15]=3416
    TreeTile[16]=3417
    TreeTile[17]=3418
    TreeTile[18]=3419
    TreeTile[19]=3438
    TreeTile[20]=3439
    TreeTile[21]=3440
    TreeTile[22]=3441
    TreeTile[23]=3442
    TreeTile[24]=3460
    TreeTile[25]=3461
    TreeTile[26]=3462
    TreeTile[27]=3290
    TreeTile[28]=3288
    
    if AddObject==1 then
    uo.FilterSpeech('on')
    uo.FilterSpeech('add', 'Where do you want to use the pickaxe?')
    
    uo.Print('Выбери Топор: ')
    uo.Exec('addobject Axe')
    while uo.Targeting()
    wait(100)
    wend
    
    if TryRecall==1 then
    uo.Print('Выбери PунБук: ')
    uo.Exec('addobject Runebook')
    while uo.Targeting()
    wait(100)
    wend
    end if
    
    if ControlOfDanger==1 then
    uo.Print('Выбери Руну: ')
    uo.Exec('addobject Rune')
    while uo.Targeting()
    wait(100)
    wend
    end if
    end if
    
    if ControlOfDanger==1 then
    uo.Exec('exec ControlOfDanger')
    end if
    
    if Reconnect==1 then
    uo.Exec('exec Reconnect')
    end if
    
    #####################################
    ### Загружаем координаты из файла ###
    #####################################
    if GetFromFile==1 then
    uo.Print('Загружаем координаты из файла...')
    f=file(FileName)
    f.Open()
    TreeCount=safe call f.ReadNumber()
    for i=1 to TreeCount
    TreeT[i]=safe call f.ReadNumber()
    TreeX[i]=safe call f.ReadNumber()
    TreeY[i]=safe call f.ReadNumber()
    next
    f.Close()
    else
    ######################################
    ### Собираем координаты из клиента ###
    ######################################
    if AddObject==1 then
    uo.Print('Выбери Кирку: ')
    uo.Exec('addobject Pickaxe')
    while uo.Targeting()
    wait(100)
    wend
    end if
    uo.Print('Собираем координаты деревьев в округе...')
    repeat
    clicks=0
    flag=0
    uo.DeleteJournal()
    #######################
    ### Кликаем на тайл ###
    #######################
    uo.UseObject('Pickaxe')
    waitForTarget()
    uo.DeleteJournal()
    WaitForTryRock()
    ###############################
    ### Проверяем дерево ли это ###
    ###############################
    flag=0
    for k=0 to 28
    if uo.LastTile(0)==TreeTile[k]+1 then
    flag=2
    end if
    next
    if flag==0 then
    for k=0 to 28
    if uo.LastTile(0)==TreeTile[k] then
    flag=1
    end if
    next
    end if
    if uo.Lasttile(1)==uo.GetX() and uo.Lasttile(2)==uo.GetY() then
    flag=3
    end if
    #########################
    ### Кликнули на ствол ###
    #########################
    if flag==1 then
    flag2=0
    if TreeCount>0 then
    for ii=1 to TreeCount
    if TreeX[ii]==uo.LastTile(1) and TreeY[ii]==uo.LastTile(2) then
    flag2=1
    end if
    next
    end if
    if flag2==0 then
    TreeCount=TreeCount+1
    TreeX[TreeCount]=uo.LastTile(1)
    TreeY[TreeCount]=uo.LastTile(2)
    TreeT[TreeCount]=uo.LastTile(0)
    uo.Print('Найдено дерево номер '+str(TreeCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2)))
    end if
    end if
    ##########################
    ### Кликнули по листве ###
    ##########################
    if flag==2 then
    flag2=0
    if TreeCount>0 then
    for ii=1 to TreeCount
    if TreeX[ii]==uo.LastTile(1) and TreeY[ii]==uo.LastTile(2) then
    flag2=1
    end if
    next
    end if
    if flag2==0 then
    TreeCount=TreeCount+1
    TreeX[TreeCount]=uo.LastTile(1)
    TreeY[TreeCount]=uo.LastTile(2)
    TreeT[TreeCount]=uo.LastTile(0)-1
    uo.Print('Найдено дерево номер '+str(TreeCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2)))
    end if
    end if
    until (flag==3) or (TreeCount==5000)
    uo.FilterSpeech('off')
    uo.Print('Анализ закончен, координаты деревьев записаны в файл ' + FileName)
    SaveToFile(TreeCount,TreeX,TreeY,TreeT)
    end if
    uo.Print('Деревьев найдено: '+str(TreeCount))
    wait(2000)
    ######################################
    ### Ходим по собранным координатам ###
    ######################################
    while 1==1
    if TreeCount>0 then
    for i=1 to TreeCount
    if TryRecall==1 and uo.Count('ZLK')>=LogsQty or uo.Weight>=uo.STR*4+20 then
    ToRecall()
    end if
    uo.Print('Идем к дереву номер '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i]))
    InfoLogs()
    flag=GotoXY(TreeX[i],TreeY[i])
    if flag==1 then
    if TryHiding==1 then
    ToHide()
    end if
    GetTree(str(TreeT[i]),str(TreeX[i]),str(TreeY[i]),str(uo.GetZ()))
    end if
    next
    end if
    wend
    end sub
    
    sub SaveToFile(TreeCount,TreeX,TreeY,TreeT)  
    var s=0,i=0,f
    f=file(FileName)
    f.Open()
    f.Create()
    s=safe call f.Writeln(TreeCount)
    for i=1 to TreeCount
    s=safe call f.Writeln(str(TreeT[i])+' '+str(TreeX[i])+' '+str(TreeY[i]))
    next
    f.Close()
    end sub
    
    sub GetTree(Type,X,Y,Z)
    var i
    uo.Print('Начинаем рубку дерева...')
    for i=0 to QuantityImpact
    if uo.Warmode()==1 then
    return 0
    end if
    wait(200)
    uo.DeleteJournal()
    uo.WaitTargetTile(Type,X,Y,Z)
    uo.UseObject('Axe')
    if WaitForChange()==1 then
    return 1
    end if
    next
    return 0
    end sub
    
    sub WaitForRecall()
    var Text1=uo.GetName()+': The spell fizzles.'
    var LastX=uo.GetX()
    var LastY=uo.GetY()
    var mess=''
    for var i=0 to 200
    mess=uo.Journal(0)
    if uo.Journal(0)==Text1 then
    return 0
    end if
    if uo.GetX()<>LastX or uo.GetY()<>LastY then
    return 1
    end if
    wait(50)
    next
    return 0
    end sub
    
    sub WaitForHide()
    var Text1=uo.GetName()+': You have hidden yourself well'
    var Text2=uo.GetName()+": You can't seem to hide here."
    var mess
    for var i=0 to 200
    mess=uo.Journal(0)
    if uo.Journal(0)==Text1 then
    return 1
    end if
    if uo.Journal(0)==Text2 then
    return 0
    end if
    wait(50)
    next
    return 0
    end sub
    
    sub WaitForChange()
    var Text1=uo.GetName()+': You hack at the tree for a while, but fail to produce any useable wood.'
    var Text2="There's not enough wood here to chop."
    var Text3="You can't reach this."
    var Text4='That is too far away.'
    var Text5="You can't do much in your current state."
    var mess
    for var i=0 to 200
    mess=uo.Journal(0)
    if uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 then
    return 1
    end if
    if uo.Journal(0)==Text1 then
    return 0
    end if
    if mess[0]=='Y' and mess[1]=='o' and mess[2]=='u' and mess[4]=='p' and mess[5]=='u' and mess[6]=='t' then
    return 0
    end if
    wait(50)
    next
    return 0
    end sub
    
    sub WaitForTryRock()
    var Text1='That is too far away.'
    var Text2='Try mining in rock.'
    var Text3='There is no ore here to mine.'
    var Text4='You have no line of sight to that location'
    var Text5="You can't see the target"
    for var i=0 to 50
    if uo.Journal(0)==Text1 or uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 or uo.Journal(0)==Text5 then
    return 1
    end if
    wait(200)
    next
    return 0
    end sub
    
    sub WaitForTarget()
    for var i=0 to 50
    if uo.Targeting()==1 then
    return 1
    end if
    wait(200)
    next
    return 0
    end sub
    
    sub WaitForChangeXY(myX,myY,LastX,LastY)
    for var i=1 to 50
    if LastX<>myX or LastY<>myY then
    return 1
    end if
    wait(200)
    next
    return 0
    end sub
    
    sub MovingItems(tItem,cItem,qItem,FromBackPack)
    var idResivCont,idSendCont
    Open(Chest)
    uo.UseObject('backpack')
    if FromBackPack==1 then
    idResivCont=uo.GetSerial('backpack')
    idSendCont=Chest
    else
    idSendCont=uo.GetSerial('backpack')
    idResivCont=Chest
    end if        
    CheckLag()    
    uo.Findtype(tItem,cItem,idSendCont)
    while uo.GetQuantity('finditem')>0
    uo.MoveItem('finditem',str(qItem),idResivCont)
    wait(1000)
    CheckLag()
    if qItem>0 then
    return
    end if
    uo.FindType(tItem,cItem,idSendCont)
    wend
    end sub
    
    sub InfoTrees(sNum,fStr,lStr,Sort)
    var n=VAL(Right(sNum,1))
    if n==0 then
    if Sort==0 then
    uo.Print(fStr+'а'+lStr)
    else
    uo.Print(fStr+lStr)
    end if
    return
    end if
    if n<5 then
    uo.Print(fStr+'а'+lStr)
    return
    end if
    if Sort==0 then
    uo.Print(fStr+'ев'+lStr)
    else
    uo.Print(fStr+'ов'+lStr)
    end if
    end sub
    
    sub Open(Container)
    uo.DeleteJournal()
    uo.UseObject(Container)
    repeat
    wait(500)
    until uo.InJournal('Contains')
    end sub
    
    sub GotoXY(x,y)
    var myX,myY,LastX=0,LastY=0,i,halt=0,z,r=0
    for i=1 to 60
    myX=uo.GetX()
    myY=uo.GetY()
    if LastX==myX and LastY==myY then
    halt=halt+1
    else
    halt=0
    end if
    if halt>=10 then
    if uo.GetDir()==1 then
    for z=0 to 8
    uo.Press(40)
    next
    end if
    if uo.GetDir()==3 then
    for z=0 to 8
    uo.Press(37)
    next
    end if
    if uo.GetDir()==5 then
    for z=0 to 8
    uo.Press(38)
    next
    end if
    if uo.GetDir()==7 then
    for z=0 to 8
    uo.Press(39)
    next
    end if
    halt=15
    end if
    if Numb(x-myX)<=1 and Numb(y-myY)<=2 then
    return 1
    end if
    if x<=myX then
    if y<=myY then
    for z=0 to 3
    uo.Press(38)
    next
    else
    for z=0 to 3
    uo.Press(37)
    next
    end if
    else
    if y<=myY then
    for z=0 to 3
    uo.Press(39)
    next
    else
    for z=0 to 3
    uo.Press(40)
    next
    end if
    end if
    LastX=myX
    LastY=myY
    wait(200)
    next
    return 0
    end sub
    
    sub Numb(num)
    if num>=0 then
    return num
    else
    return num*(-1)
    end if
    end sub
    
    sub InfoLogs()
    uo.Print('У вас всего '+str(uo.Count('0x1BDD'))+' логов в сумке')
    uo.Print('Из них '+str(uo.Count('0x1BDD','0x0000'))+' простых и ' +str(uo.Count('0x1BDD')-uo.Count('0x1BDD','0x0000'))+' цветных')
    end sub
    
    sub ToHide()
    while not uo.Hidden()
    uo.Print('Пытаемся уйти в хайд...')
    uo.DeleteJournal()
    uo.Exec('warmode 0')
    uo.UseSkill('Stealth')
    wait(4100)
    wend
    wait(100)
    end sub
    
    sub ToRecall()
    uo.Exec('terminate ControlOfDanger')
    RecallToHome()
    DropLogs()
    InfoLogs()
    if RechargeBook==1 then
    RechargeBook()
    wait(4000)
    end if
    if EatingFood==1 then
    EatingFood()
    end if
    wait(3000)
    RecallToLumber()
    uo.Exec('exec ControlOfDanger')
    end sub
    
    sub RecallToHome()
    uo.Print('Прыгаем Домой.')
    RuneBookRecall(RuneToHome)
    end sub
    
    sub RecallToLumber()
    uo.Print('Прыгаем в Лес.')
    RuneBookRecall(RuneToForest)
    end sub
    
    sub RuneBookRecall(n)
    var OldX=uo.GetX()
    var OldY=uo.GetY()
    var Time
    repeat
    uo.Exec('warmode 0')
    uo.UseObject('Runebook')
    CheckLag()
    uo.Lclick(135, n*15+55)  
    CheckLag()
    Time=uo.Timer()
    repeat
    wait(500)
    until OldX<>uo.GetX() or OldY<>uo.GetY() or uo.Dead() or uo.InJournal('needs') or uo.InJournal('fizzles') or Time+200<uo.Timer()
    uo.DeleteJournal()
    until OldX<>uo.GetX() or OldY<>uo.GetY() or uo.Dead() or uo.InJournal('needs')
    end sub
    
    sub DropLogs()
    var Time,Space
    Time=Time()
    Space=' '
    uo.TextOpen()
    uo.TextPrint('Выкладываем логи - ' +Space +Time)
    ToHide()
    var a,Exit
    dim Logs[1]
    Logs[0]=0x1BDD
    uo.Print('Выкладываем Логи.')
    for a=0 to 0
    MovingItems(Logs[a],'-1',-1,0)
    next
    uo.Print('Логи Выложены.')
    end sub
    
    sub RechargeBook()
    var Time,Space
    Time=Time()
    Space=' '
    uo.TextOpen()
    uo.TextPrint('Речарим рунбуку - ' +Space +Time)
    repeat
    MovingItems('0x1F4C','-1',50,1)
    uo.UseObject('Runebook')
    wait(1000)
    Checklag()
    uo.Lclick(296,91)
    wait(1000)
    until uo.InJournal('charges are 50') or uo.InJournal('fully') or uo.InJournal('You need a Recall Scroll') or uo.Dead()
    while uo.Count('0x1F4C')>0
    MovingItems('0x1F4C','-1',-1,0)
    wend
    end sub
    
    sub EatingFood()
    var Time,Space
    Time=Time()
    Space=' '
    uo.TextOpen()
    uo.TextPrint('Кушаем - ' +Space +Time)
    MovingItems(TypeFood,'-1',20,1)
    repeat      
    CheckLag()
    if uo.Count(TypeFood)<=0 then
    uo.Exec('terminate EatingFood')
    end if
    uo.UseType(TypeFood)
    while not uo.InJournal('full') and not uo.InJournal('stuffed') and not uo.InJournal('hungry') and not uo.InJournal('satiated') and not uo.Dead()
    wait(100)        
    wend
    until uo.InJournal('too full') or uo.Dead()
    while uo.Count(TypeFood)>0
    MovingItems(TypeFood,'-1',-1,0)
    wend
    end sub
    
    sub ControlOfDanger()
    var Time,danger,Space
    Time=Time()
    Space=' '
    while 1
    uo.DeleteJournal()
    while not uo.InJournal(':')
    wait(100)
    wend
    danger=uo.GetNotoriety(uo.JournalSerial(0))
    
    if PhysicalDanger==1 then
    if uo.InJournal('OOPS') then
    uo.TextOpen()
    uo.TextPrint('Был вырублен Ент ' +Space +Time)
    uo.Exec('exec RecallRune')
    end if
    
    if uo.InJournal('attacking you') then
    uo.GetStatus('uo.JournalSerial(0)')
    uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0)))
    uo.TextOpen()
    uo.TextPrint('Вы были атакованы - '+uo.GetName(uo.JournalSerial(0)) +Space +Time)
    uo.Exec('exec RecallRune')
    end if
    end if
    
    if SeenDanger==1 then
    if Danger==6 and UO.JournalSerial(0) <> UO.GetSerial() then
    uo.GetStatus('uo.JournalSerial(0)')
    uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0)))
    uo.TextOpen()
    uo.TextPrint('Рядом оказался ПК - '+uo.GetName(uo.JournalSerial(0)) +Space +Time)
    uo.Exec('exec RecallRune')
    end if
    
    if Danger==4 and UO.JournalSerial(0) <> UO.GetSerial() then
    uo.GetStatus('uo.JournalSerial(0)')
    uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0)))
    uo.TextOpen()
    uo.TextPrint('Рядом оказался криминал - '+uo.GetName(uo.JournalSerial(0)) +Space +Time)
    uo.Exec('exec RecallRune')
    end if
    
    if RecallFromAll==1 then
    if Danger==1 and UO.JournalSerial(0) <> UO.GetSerial() then
    uo.GetStatus('uo.JournalSerial(0)')
    uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0)))
    uo.TextOpen()
    uo.TextPrint('Рядом оказался чар - '+uo.GetName(uo.JournalSerial(0)) +Space +Time)
    uo.Exec('exec RecallRune')
    end if
    end if
    end if
    wend
    end sub  
    
    sub RecallRune()
    Terminate()
    uo.PlayWav(DisturbingSound)
    uo.UseType('0x0F0E','0x0631')
    wait(100)
    repeat                                                        
    uo.WaitTargetObject('Rune')
    uo.Exec('warmode 0')
    uo.Cast('Recall')
    wait(3000)
    until not uo.InJournal('spell fizzles')
    repeat
    uo.DeleteJournal()
    uo.WaitTargetObject('Rune')
    wait(100)
    uo.Cast('Mark')
    if uo.InJournal('mana for this spell') then
    ManaUp('Bottle')
    wait(100)
    end if
    wait(3000)
    until not uo.InJournal('spell fizzles')
    if uo.Life<uo.STR then
    LifeUp('Bottle')
    wait(100)
    end if
    if CycleScript==1 then
    uo.Exec('exec DangerWait')
    end if
    if CycleScript==0 then
    uo.Exec('exec ExitUO')
    end if
    end sub
    
    sub DisturbingSound(amount)
    var i
    for i=1 to amount
    uo.PlayWav(DisturbingSound)
    wait(1500)
    next
    end sub
    
    sub DangerWait()
    wait(DangerousTime)
    ToRecall()
    uo.Exec('exec Lumberjacking')
    end sub
    
    sub ExitUO()
    wait(3000)
    uo.CloseUO()
    end sub
    
    sub LifeUp(Mode)
    if Mode=='Healing' then
    while uo.Life<uo.STR
    uo.Exec('bandageself')
    wait(4000)
    wend
    end if
    if Mode=='Bottle' then
    if uo.Life<uo.STR then
    uo.UseType('0x0F0E','0x09BB')
    wait(100)
    end if
    end if
    end sub
    
    sub ManaUp(Mode)
    if Mode=='Meditation' then
    while uo.Mana<uo.INT
    uo.Exec('useskill Meditation')
    wait(4000)
    wend
    end if
    if Mode=='Bottle' then
    if uo.Mana<uo.INT then
    uo.UseType('0x0F0E','0x09DF')
    wait(100)
    end if
    end if
    end sub
    
    sub Reconnect()
    var ReconnectTime,rflag
    ReconnectTime='0'
    rflag=1
    repeat
    while (uo.ObjAtLayer('Bpack')=='')
    if rflag then
    ReconnectTime=Time()
    rflag=0
    end if
    wait(20000)
    uo.Say('')
    wait(3000)
    uo.Say('')
    wait(3000)
    uo.Say('')
    wait(3000)
    uo.Ldblclick(357,164)
    uo.Lclick(616,459)
    wait(3000)
    wend
    wait(3000)
    if (rflag==0) and (ReconnectTime<>'0') then
    uo.TextOpen()
    uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
    rflag=1
    ReconnectTime='0'
    end if
    until false
    end sub
    
    sub Time()
    var Date,nTime,uTime,i
    uTime=str(uo.Time())
    nTime=''
    for i=0 to Len(uTime)
    nTime=uTime[Len(uTime)-i]+nTime
    if (i==2) or (i==4) then
    nTime=':'+nTime
    end if
    next
    uTime=str(uo.Date())
    Date=''
    for i=0 to Len(uTime)
    Date=uTime[Len(uTime)-i]+Date
    if (i==2) or (i==4) then
    Date='.'+Date
    end if
    next
    uTime=nTime+' @ '+Date
    return uTime
    end sub
    
    sub Terminate()
    uo.Exec('terminate Lumberjacking')
    uo.Exec('terminate ControlOfDanger')
    uo.Exec('terminate Reconnect')
    end sub
    
    sub CheckLag()
    if uo.Waiting()>0 then
    uo.Exec('canceltarget')
    end if
    uo.DeleteJournal()
    uo.Click('backpack')
    repeat
    wait(50)
    until uo.InJournal('backpack')
    end sub

×
×
  • Создать...