| ВОТ СКРИПТ НИЖЕ... НАРОД СКАЖИТЕ КАК СДЕЛАТЬ ТАК , ЧТО ЫБ СКПРИТ РАБОТАЛ ПО ПРИНЦЫПУ ( ТЫКАЛ ЕН ПО СТВОЛУ ДЕРЕВА , А ПО ЛИСТВЕ , АТК КАК НА MIDDLE-EATRTH  ТОЛЬКО ПРИ ТЫКАНИЕ ТАРГЕТА ТОПОРА НА ЛЕСТВУ РАБОТАЕТ .... ТАК ЖЕ ПРОБОВАЛРАБОАТЕТ ТАКАЯ ФИШКА ...  ( ,INFOTILE .............. А ПОТОМ , waittragettile ........ + топр )  скиньте пожалуйста . .что где заменить надо  оч прошу... заранее спасибо.
 
 
 Code: ########################################################## ###      Lumberjacking / Рубка деревьев v7.3 Full      ###
 ##########################################################
 ###           Шард Dragon World / www.drw.ru           ###
 ##########################################################
 ### Внимание:
 ### Для  работы скрипта нужна версия YokoInjection 4ZD.
 ### Скачать dll этой версии можно
 ### от сюда: http://www.swines.nm.ru/injection.zip
 ##########################################################
 ### По вопросам и предложениям обращаться сюда:
 ### ICQ: 333358386 [cOoler]
 ### Авторы:
 ### -За основу взят скрипт:"©Elthar aka Duo",
 ### за что его автору большое спасибо.
 ### -Редактировал и дополнял:"BETEPAH".
 ### -Идеи по доработке и переработке:"cOoler".
 ### -За неоценимую помощь спасибо:"Mafia".
 ### -За коректнную помощь и идеи:"Аskaneli".
 ### -За помощь в переработке скрипта спасибо:"Sfagnum"
 ### -А также за систему подсчета логов спасибо:"Mguai"
 ### Спасибо всем кто каким либо образом помогал в
 ### разработке этого скрипта.
 #########################################################
 ############################
 ### Описание и настройка ###
 ############################
 ### Обратите внимание на значки "]![" ими выделенны важные сообщения.
 ###
 ### Чар бегает от дерева к дереву (координаты деревьев берет из файла).
 ### Вырубит, бежит к следующему, при логах 700 штук в паке порталится домой скидывает логи в сундук,
 ### после реколится обратно бежит к последнему дереву и продолжает рубить.
 ### Пример: В файле 100 деревьев, вы вырубив 74 дошли до придела в 700 логов сработала система рекола
 ### и вы "порталитесь" домой и складываете логи в сундук, после вы реколитесь обратно в лес и бежите к 75 дереву.
 ### Дойдя до 100 дерева (тоесть последнего в списке) чар перейдет к 1ому дереву.(Цикличность)
 ###
 ####################
 ### Нововведения ###
 ####################
 ### 1)Логи складываются не на пол а в сундук. [BETEPAH]
 ### 2)Рекол в лес и домой по рунбуке (а не по рункам). [BETEPAH]
 ### ]![ Внимание в скрипте номера рун в рунбуке настроены под ДРВ шард. ]![ [Шард]
 ### 3)Система автомарка убрана и переделана в сомостоятельное маркирование деревьев
 ### (раньше чар сам бегал по лесу и очень долго марчил деревья)теперь бегаем сами и просто прицелом по деревьям
 ### (марчим также, как и раньше в руках кирка). [BETEPAH]
 ### 4)Увеличен придел замаркированых деревьев до 500 шт. [BЕТЕРАН]
 ### 5)Улучшена система хайда (ходим, не бегаем). [BЕТЕРАН]
 ### 6)Добавлена система InfoLogs. [Mguai, доработана BETEPAH]
 ### 7)Добавлен выбор кирки. [cOoler, доработана BETEPAH]
 ### 8)Добавлена система защиты от ентов. [BETEPAH]
 ### 9)Убыстрена система рекола при атаке. [cOoler]
 ### 10)Добавлен реконнект. [FoX M, размещен cOoler]
 ### 11)Добавлены новые функции выбор на атаку и реконект. [cOoler]
 ### 12)Изменена система сброса логов в сундук. [cOoler]
 ### 13)Полностью изменен(упращен) рекол. [cOoler]
 ### 14)Добавлены выбор рун в рунбуке в лес и домой. [cOoler]
 ### 15)Добавлен каст на нападающего. [cOoler]
 ### 16)Добавлен выбор файла со звуком. [cOoler]
 ### 17)Добавлен речарж(заполнение скролами) рунбуки. [cOoler]
 ### 18)Добавлен рекол домой и выгруска логов после атаки. [cOoler]
 ### 19)Добавлена функция употребления пищи. [cOoler]
 ### 20)Полностью изменена функция употребления пищи. [cOoler]
 ### 21)Переработана система речаржа рунбуки. [cOoler]
 ### 22)Модифицированна система перемещения предметов. [Sfagnum]
 ### 23)Добавлена функция записи имен тех кто вас атачит. [cOoler]
 ### 24)Добавлены коментарии.Добавлена контроля за количеством логов по весу. [Sfagnum]
 ### 25)Убраны переходы при марке. [BETEPAH,Аskaneli]
 ### 26)Переделана система ожидания сейва координат в файл. [BETEPAH,Аskaneli]
 ### 27)Убрана система Ареа. [BETEPAH,Аskaneli]
 ### 28)Добавлена система подсчета деревьев. [BETEPAH,cOoler,Аskaneli]
 ### 29)Увеличен предел деревьев до 5000 шт. [BETEPAH,Аskaneli]
 ###
 ### ]![ Чтобы скрипт заработал внимательно прочтите настройки. ]![
 ###
 ###################################
 ###    Режимы работы скрипта    ###
 ###################################
 ### Работает в 2х режимах:      ###
 ### 1)Маркировка                ###
 ### 2)Рубка                     ###
 ###################################
 ### Режим Первый - "Маркировка" ###
 ###################################
 ### Этот режим отвечает за Маркирование(записывание координат) деревьев.
 ### Включается переменной var GetFromFile=0 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента.
 ### То есть если GetFromFile=0 координаты деревьев собиратся из клиента.
 ###
 ### Маркировка происходит так:
 ### Поставте переменную GetFromFile равную 0 (GetFromFile=0).
 ### Положите к себе в сумку Топор, Рунбук(с рунами домой и в лес) и Кирку.
 ### Идите в лес в котором вы хотите рубить.
 ### Запустите Скрипт Lumberjacking(), инжект попросит вас указать Топор
 ### (появится прицел,прицелом на топор который вы с собой взяли), потом инжект попросит вас указать Рунбук(появится прицел,прицелом на него).
 ### Инжект сообщит вам что ('Собираем координаты деревьев в округе...').
 ### Инжект попросит вас указать Кирку(появится прицел,прицелом на неё).
 ### Теперь вы должны в любом порядке сами прицелом указать координаты(достаточно просто нажать прицелом на дерево).
 ### Если вы не промахнулись и "нажали" на дерево, то инжект сообщит вам об этом(Найдено дерево "координаты дерева").
 ### Причем что если даже вы нажмете два раза на одно дерево то он не "запомнит" его повторно.
 ### Ходите по лесу и марчите деревья.
 ### Для того чтобы остановить марк нажмите таргетом на себя.
 ### Инжект напишет вам сообщение ('Анализ закончен, координаты деревьев записаны в файл C:\trees3.dat') и создаст файл на диске
 ### С:\ куда запишет координаты деревьев.
 ### После этого чар пойдет по координатам и будет вырубать деревья.
 ###
 ##############################
 ### Режим Второй - "Рубка" ###
 ##############################
 ### Этот режим соответственно отвечает за рубку.
 ### Включается переменной var GetFromFile=0 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента
 ### То есть если GetFromFile=0 координаты деревьев будут считыватся из файла.
 ### И вам не надо будет сново марчить деревья.
 ###
 ### Рубка происходит так:
 ### Поставте переменную GetFromFile равную 1 (GetFromFile=1).
 ### Положите к себе в сумку Топор и Рунбук(с рунами домой и в лес).
 ### ]![ Внимание в рунбуке руна в 1ом слоте "Домой", в 9ом слоте "В лес". ]![
 ### После установок рун в рунбук.
 ### ]![ Внимание в скрипте номера рун в рунбуке настроены под ДРВ шард. ]![
 ###
 ######################################
 ### Дополнительные функции скрипта ###
 ######################################
 ### В скрипте 3 доп. функции:      ###
 ### 1)Речарж Рунбуки               ###
 ### 2)Кушанье                      ###
 ### 3)Побег при Атаке              ###
 ### 4)Реконнект                    ###
 ##########################################
 ### Функция Первая - "Речарж Рунбуки"  ###
 ##########################################
 ### Этот режим соответственно отвечает за Речарж(заполнение скролами) Рунбуки.
 ### Включается переменной var RechargeBook=0 ## 1 - Включить речарж рунбуки, 0 - отключить речарж.
 ### То есть если RechargeBook=0 чар будет речаржить рунбуку.
 ###
 ### Речарж происходит так:
 ### Поставте переменную RechargeBook равную 1 (RechargeBooks=1).
 ### Положите в сундук, в который будут выгручаться логи, реколы.
 ### Чар берет 50 реколов из сундука, речаржет рунбуку, оставшиеся кладет обратно в сундук.
 ###
 ############################################
 ### Функция Вторая - "Употребление Пищи" ###
 ############################################
 ### Этот режим соответственно отвечает за Употребление Пищи.
 ### Включается переменной var EatingFood=0 ## 1 - Будем есть, 0 - нет.
 ### То есть если EatingFood=0 чар будет кушать.
 ###
 ### Употребление Пищи происходит так:
 ### Поставте переменную EatingFood равную 1 (EatingFood=1).
 ### Положите в сундук куда будут выгружаться логи и где лежат реколы - еду,
 ### тип которой вы указали тут var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки)
 ### ]![ Советую положить в сундук побольше еды т.к. ели она кончиться скрипт встанет! ]![
 ### После того как чар выложит логи и речаржнет рунбуку, будет кушать.
 ### Он берет 20 единиц еды и кушает, что осталось выгружает обратно в сундук.
 ###
 ##########################################
 ### Функция Третья - "Побег при Атаке" ###
 ##########################################
 ### Этот режим соответственно отвечает за Побег при атаке ентов и не только.
 ### Включается переменной var AttackEnts=0 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - отключить рекол.
 ### То есть если AttackEnts=0 чар будет реколиться при атаке.
 ###
 ### Побег происходит так:
 ### Поставте переменную AttackEnts равную 1 (AttackEnts=1).
 ### Замарчите Руну в безопастном месте.
 ### Положите к себе в сумку
 ### Руну(которую замарчили) и Реагенты.(Black Pearls,Blood Moss,Mandrake Root.)
 ### ]![ Внимание руна должна лежать в стандартном положении(как продается, толька замарканная). ]![
 ### При атаке вы автоматически телепортитесь на то место,
 ### где замаркана руна(в бакпаке).
 ### В это время записывается имя того кто вас атачил.
 ### При этом скрипт "отключается!"
 ### Что нада сделать далее:
 ### 1) Телепортироваться самому на место рубки.
 ### 2) 3апустить скрипт заново!
 ###
 #######################################
 ### Функция Четвёртая - "Реконнект" ###
 #######################################
 ### Этот режим соответственно отвечает за Реконнект при выкидывании с сервера.
 ### Включается переменной var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект.
 ### То есть если Reconnect=0 чар будет реколиться при атаке.
 ###
 ### Реконнект происходит так:
 ### Поставте переменную Reconnect равную 1 (Reconnect=1).
 ### Если вдруг повиснет игровая сфера или вас выкинет по любой другой причине
 ### реконнектор законнектит вса на сервер автоматически.
 ### Пишется время дисконнекта и коннекта на сервер.
 ###
 ### ]![ Настройте скрипт под себя при помощи переменных. ]![
 ###
 ##################
 ### Переменные ###
 ##################
 ###################################################################################################
 var f=file("C:\trees3.dat") ## - Путь к файлу в котором будут хранится координаты деревьев.
 ###
 var TryHiding=0 ## 1 - Перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет .
 ###
 var TryRecall=0 ## 1 - После того как соберет LogsQty логов, будет пытаться реколиться домой,
 ### складывать логи в сундук и реколиться обратно , 0 - не будет.
 ###
 var RechargeBook=0 ## 1 - Включить речарж рунбуки, 0 - отключить речарж.
 ###
 var RuneToHome=0 ## - Номер руны Домой,по счёту в рунбуке.(сейчас в 4ом слоте,можно менять от 1-9)
 ###
 var RuneToLumber=0 ## - Номер руны в Лес,по счёту в рунбуке.(сейчас в 5ом слоте,можно менять от 1-9)
 ###
 var LogsQty=5000 ## - Количество логов, добыв которое надо реколиться домой.
 ###
 var Quant=1 ## - Сколько  раз чар будет ударять по дереву, прежде чем перейдет к другому.(стандарт - 15)
 ###
 var GetFromFile=1 ## 1 - Координаты деревьев будут считыватся из файла, 0 - собиратся из клиента
 ### (сначала соберите а потом считывайте из файла).
 ###
 var ControlOfDanger=0 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - отключить рекол.
 ###
 var CastAtAttack=0 ## 1 - Включить каст - "Magic Arrow" на напавшего, 0 - отключить каст.
 ###
 var EatingFood=0 ## 1 - Будем есть, 0 - нет.
 ###
 var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки)
 ###
 var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект.
 ###
 var RecallDrop=0 ## 1 - Включить рекол после побега от ента домой и выложить логи, 0 -выключить.
 ###
 var RecallLumber=0 ## 1 - Включить рекол в лес после указания обьектов, 0 - выключить.
 ###
 var Chest='0x40209126' ## - ID сундука куда будут выгружаться логи, где должны лежать реколы и еда.
 ###
 var LumberSound=('C:\Warning.wav') ## - Звук которы будет пригран при атаке.(замените на свой)
 ###
 var OldX,OldY,time ## - Для рекола.
 ###
 ###################################################################################################
 ###
 ### После настройки:
 ### Идите в лес в котором вы хотите рубить.
 ### Запустите cкрипт Lumberjacking(), Инжект попросит вас указать Топор
 ### (появится прицел, прицелом на топор который вы с собой взяли),
 ### затем инжект попросит вас указать Рунбук(появится прицел, прицелом на него).
 ### После этого чар пойдет по координатам и будет вырубать деревья.
 ###########
 ### Код ###
 ###########
 sub Lumberjacking()
 var i=0,j=0,k=0,r=0,q=0,ii,jj
 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
 
 uo.Exec("filterspeech on")
 uo.Exec("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.Exec('exec ControlOfDanger')
 end if
 
 if Reconnect==1 then
 uo.Exec('exec Reconnect')
 end if
 
 if RecallLumber==1 then
 uo.Exec('exec RecallToLumber')
 wait(9000)
 end if
 #####################################
 ### Загружаем координаты из файла ###
 #####################################
 if GetFromFile==1 then
 uo.Print('Загружаем координаты из файла...')
 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
 ######################################
 ### Собираем координаты из клиента ###
 ######################################
 uo.Print('Выбери Кирку: ')
 uo.Exec('addobject Pickaxe')
 while uo.Targeting()
 wait(100)
 wend
 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.Exec("filterspeech off")
 uo.Print('Анализ закончен, координаты деревьев записаны в файл C:\trees3.dat')
 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 GetTree(Type,X,Y,Z)
 var i
 uo.Print('Начинаем рубку дерева...')
 for i=0 to Quant
 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 ToRecall()
 RecallToHome()
 DropLogs()
 InfoLogs()
 if RechargeBook==1 then
 RechargeBook()
 wait(4000)
 end if
 if EatingFood==1 then
 EatingFood()
 end if
 wait(3000)
 RecallToLumber()
 end sub
 
 sub RecallToHome()
 uo.Print('Прыгаем Домой.')
 RunebookRecall(RuneToHome)
 end sub
 
 sub RecallToLumber()
 uo.Print('Прыгаем в Лес.')
 RunebookRecall(RuneToLumber)
 end sub
 
 sub ToHide()
 while not uo.Hidden()
 uo.Print('Пытаемся уйти в хайд...')
 uo.DeleteJournal()
 uo.UseSkill('Stealth')
 wait(4100)
 wend
 wait(100)
 end sub
 
 sub WaitForRecall()
 var Text1=uo.GetName()+': The spell fizzles.'
 var mess='',LastX=uo.GetX(),LastY=uo.GetY()
 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 are no logs 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 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 SaveToFile(treeCount,TreeX,TreeY,TreeT)
 var f=file("C:\trees3.dat")
 var s=0,i=0
 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 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 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 RunebookRecall(n)
 OldX=uo.GetX()
 OldY=uo.GetY()
 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()
 until OldX<>uo.GetX() or OldY<>uo.GetY() or uo.Dead() or uo.InJournal('needs')
 end sub
 
 sub Open(Container)
 uo.DeleteJournal()
 uo.UseObject(Container)
 repeat
 wait(500)
 until uo.InJournal('Contains')
 end sub
 
 sub MovingItems(tItem,cItem,qItem,FromBackPack)
 var idResivCont
 var idSendCont
 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',qItem,idResivCont)
 wait(1000)
 CheckLag()
 if qItem>0 then
 return
 end if
 uo.FindType(tItem,cItem,idSendCont)
 wend
 end sub
 
 sub RechargeBook()
 var Time,Space
 Time=Time()
 Space=' '
 uo.TextOpen()
 uo.TextPrint("Речарим рунбуку - " +Space +Time)
 repeat
 MovingItems('0x1F4C','-1',-1,1)
 uo.UseObject('Runebook')
 wait(1000)
 Checklag()
 uo.Lclick(296,91)
 wait(1000)
 until uo.InJournal('charges are 50') or uo.InJournal('fully')
 while uo.Count('0x1F4C')>0
 MovingItems('0x1F4C','-1',-1,0)
 end sub
 
 sub EatingFood()
 var Time,Space
 Time=Time()
 Space=' '
 uo.TextOpen()
 uo.TextPrint("Кушаем - " +Space +Time)
 MovingItems(TypeFood,'-1',20,1)
 repeat
 CheckLag()
 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()
 MovingItems(TypeFood,'-1',-1,0)
 end sub
 
 sub WriteNames()
 var Time,Space
 Time=Time()
 Space=' '
 uo.GetStatus("uo.JournalSerial(0)")
 uo.SetGlobal("name",uo.GetName(uo.JournalSerial(0)))
 uo.TextOpen()
 uo.TextPrint("Вас атаковал - "+uo.GetName(uo.JournalSerial(0)) +Space +Time)
 end sub
 
 sub ControlOfDanger()
 uo.DeleteJournal()
 var Enemy='0x00000000'
 repeat
 if uo.InJournal('is attacking you') or uo.InJournal('OOPS !!!') or uo.InJournal('Wis Quas') then
 WriteNames()
 uo.Exec('terminate Lumberjacking')
 Enemy=uo.JournalSerial(uo.InJournal('is attacking you')-1)
 uo.PlayWav(LumberSound)
 if CastAtAttack==1 then
 uo.Cast('Magic Arrow',Enemy)
 end if
 uo.DeleteJournal()
 RecallAtDanger()
 end if
 wait(1000)
 until false
 end sub
 
 sub RecallAtDanger()
 var mX,mY
 reccal:
 uo.DeleteJournal()
 if uo.Waiting() then
 uo.CancelTarget()
 end if
 mX=uo.GetX("self")
 mY=uo.GetY("self")
 uo.DeleteJournal()
 uo.FindType('0x1F14',-1,'mY')
 uo.Cast('Recall','finditem')
 uo.TextOpen()
 uo.TextPrint("Пытаемся сбежать!")
 uo.SayU('This script coded by Cooler!')
 uo.SayU('Fuck your self!')
 wait(4000)
 if not uo.GetX("self")<>mX and not uo.GetY("self")<>mY then
 goto reccal
 end if
 uo.TextOpen()
 uo.TextPrint("Сбежали удачно!")
 if RecallDrop==1 then
 RecallToHome()
 DropLogs()
 InfoLogs()
 end if
 Terminate()
 end sub
 
 sub Reconnect()
 var ReconnectTime,rFlag
 ReconnectTime='0'
 rFlag=1
 repeat
 while (uo.ObjAtLayer('Bpack')=='')
 if rFlag then
 ReconnectTime=MakeTime()
 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 MakeTime()
 var d,t,ret,i
 ret=str(uo.Time())
 t=""
 for i=0 to Len(ret)
 t=ret[Len(ret)-i]+t
 if (i==2) or (i==4) then
 t=":"+t
 end if
 next
 ret=str(uo.Date())
 d=""
 for i=0 to Len(ret)
 d=ret[Len(ret)-i] + d
 if (i==2) or (i==4) then
 d="."+d
 end if
 next
 ret=t+" @ "+d
 return ret
 end sub
 
 sub Time()
 var hh,mm,ss,hms,t=str(uo.Time())
 if len(t)<=2 then
 hh="0"
 mm="0"
 ss=t
 endif
 if len(t)==3 then
 hh="0"
 mm=left(t,len(t)-2)
 ss=right(t,len(t)-1)
 endif
 if len(t)==4 then
 hh="0"
 mm=left(t,len(t)-2)
 ss=right(t,len(t)-2)
 endif
 if len(t)==5 then
 hh=left(t,len(t)-4)
 hms=left(t,len(t)-2)
 mm=right(hms,len(hms)-1)
 ss=right(t,len(t)-3)
 endif
 if len(t)==6 then
 hh=left(t,len(t)-4)
 hms=left(t,len(t)-2)
 mm=right(hms,len(hms)-2)
 ss=right(t,len(t)-4)
 endif
 return hh+":"+mm+":"+ss
 end sub
 
 sub Terminate()
 uo.Print('Скрипт и все его функции выключены!')
 uo.DeleteJournal()
 uo.Exec('terminate all')
 wait(100)
 uo.Exec('terminate all')
 wait(100)
 uo.Exec('terminate all')
 wait(100)
 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
 |