Хм интересно...

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
kuviCk
Posts: 127
Joined: 2004-09-08 13:09:13
Contact:

Хм интересно...

Post by kuviCk »

Вот вопросик у меня такой почему этотскрипт с такой ходилкой не пашет? Точнее пашет но не рубит ... просто ходит от координаты к координате ... если кто знает поправьте плз а то я не допру вообще

Code: Select all

########################################################## 
### Lumberjacking / Рубка деревьев v8.7 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". 
### -За помощь в доработке скрипта спасибо:"Legio". 
### -А также за систему подсчета логов спасибо:"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)Убрана система Area. [BETEPAH,Аskaneli] 
### 28)Добавлена система подсчета деревьев. [BETEPAH,cOoler,Аskaneli] 
### 29)Увеличен предел деревьев до 5000 шт. [BETEPAH,Аskaneli] 
### 30)Переработана функция рекола при атаке.(подробнее в "Рекол при Атаке") [cOoler,Legio] 
### 31)Введена функция выхода из UO после рекола от атакующего. [cOoler] 
### 32)Введена функция цикличности скрипта. [cOoler] 
### 33)Переработына функции рекола и контроля за опасностью. [cOoler] 
### 34)Поправлено множество багов и переработаны некоторые функции. [cOoler] 
### 35)Исправлена функция перемещения предметов. [cOoler] 
### 36)Добавлен рекол при появлении в близи вас любово чара(синий,пк,криминал). [Legio] 
### 
### ]![ Из-за изменения скрипта и введения новых функций рекомендую почитать описание. ]![ 
### ]![ Чтобы скрипт заработал внимательно прочтите настройки. ]![ 
### 
################################### 
### Режимы работы скрипта ### 
################################### 
### Работает в 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:\uo\trees3.dat') ## - Путь к файлу в котором будут хранится координаты деревьев. 
### 
var TryHiding=1 ## 1 - Перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет . 
### 
var TryRecall=1 ## 1 - После того как соберет LogsQty логов, будет пытаться реколиться домой, 
### складывать логи в сундук и реколиться обратно , 0 - не будет. 
### 
var RuneToHome=1 ## - Номер руны Домой,по счёту в рунбуке.(сейчас в 4ом слоте,можно менять от 1-9) 
### 
var RuneToForest=3 ## - Номер руны в Лес,по счёту в рунбуке.(сейчас в 5ом слоте,можно менять от 1-9) 
### 
var RechargeBook=1 ## 1 - Включить речарж рунбуки, 0 - отключить речарж. 
### 
var GetFromFile=1 ## 1 - Координаты деревьев будут считыватся из файла, 0 - собиратся из клиента 
### (сначала соберите а потом считывайте из файла). 
### 
var LogsQty=1000 ## - Количество логов, добыв которое надо реколиться домой. 
### 
var QuantityImpact=1500 ## - Сколько раз чар будет ударять по дереву, прежде чем перейдет к другому.(стандарт - 15) 
### 
var ControlOfDanger=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - отключить рекол. 
### 
var PhysicalDanger=1 ## 1 - влючить рекол при физической атаке, 0 - отключить рекол. 
### 
var SeenDanger=0 ## 1 - влючить рекол при появлении рядом ПК ил криминала, 0 - отключить рекол. 
### 
var RecallFromAll=0 ## 1 - включить рекол при появлении рядом любово чара, 0 - отключить рекол. 
### 
var DisturbingSound=('C:\uo\Warning.wav') ## - Звук которы будет пригран при атаке.(замените на свой) 
### 
var DangerousTime=50000 ## - Время которое чар будет ждать(после рекола) пока уйдет ПК или Ент.(сейчас 50 секунд) 
### 
var CycleScript=1 ## 1 - Скрипт не отключается после рекола от атакующего, 0 - отключаетсяи закрывает UO. 
### 
var EatingFood=1 ## 1 - Будем есть, 0 - нет. 
### 
var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки) 
### 
var Reconnect=1 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект. 
### 
var Chest='0x402B4DD4' ## - ID сундука куда будут выгружаться логи, где должны лежать реколы и еда. 
### 
var AddObject=1 ## 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],1) 
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 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 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 

(C) SerrouS 
sub InitStack() 
uo.SetGlobal('STACK', '0') 
end sub 

sub Push( param ) 
var Check=val(uo.GetGlobal('STACK')) ; количество элементов в стеке 
uo.SetGlobal('STACK',str(Check + 1)) 
uo.SetGlobal('STACK_'+str(Check), param) 
end sub 

sub Pop () 
var Check=val(uo.GetGlobal('STACK')) ; количество элементов в стеке 
if Check then 
uo.SetGlobal('STACK',str(Check - 1)) 
return uo.GetGlobal('STACK_'+str(Check - 1)) 
else 
return '' 
end if 
end sub 

sub GoToXY(X,Y,prec) 
dim Turn[8] 
Turn[0] = 39 
Turn[1] = 34 
Turn[2] = 40 
Turn[3] = 35 
Turn[4] = 37 
Turn[5] = 36 
Turn[6] = 38 
Turn[7] = 33 

dim DeltaX[8]
dim DeltaY[8] 
DeltaX[0] = 1 
DeltaX[1] = 1 
DeltaX[2] = 1 
DeltaX[3] = 0 
DeltaX[4] = -1 
DeltaX[5] = -1 
DeltaX[6] = -1 
DeltaX[7] = 0 

DeltaY[0] = -1 
DeltaY[1] = 0 
DeltaY[2] = 1 
DeltaY[3] = 1 
DeltaY[4] = 1 
DeltaY[5] = 0 
DeltaY[6] = -1 
DeltaY[7] = -1 

var MoveX,MoveY 
var CurrentX,CurrentY 
var LastX=0,LastY=0,LastD=-1 

var pathFind=0 
var Index 
var recursInd=0 
var fout=0 
var stepdelay=100 

InitStack() 
repeat 
CurrentX=uo.GetX() 
CurrentY=uo.GetY() 

MoveX=CurrentX-X 
if MoveX<0 then 
MoveX=0-dx 
end if 

dy=CurrentY-Y 
if MoveY<0 then 
MoveY=0-MoveY 
end if 

if MoveY>MoveX then 
MoveX=MoveY 
end if 

if MoveX<=prec then 
return 
end if 

if CurrentX==X and CurrentY==Y then 
return 
end if 

LastX=CurrentX 
LastY=CurrentY 
LastD=uo.GetDir() 

if CurrentX==X and Current>Y then 
uo.Press(33) 
end if 

if CurrentX==X and CurrentY<Y then 
uo.Press(35) 
end if 

if CurrentX<X and CurrentY==Y then 
uo.Press(34) 
end if 

if CurrentX<X and CurrentY>Y then 
uo.Press(39) 
end if 

if CurrentX<X and CurrentY<Y then 
uo.Press(40) 
end if 

if CurrentX>X and CurrentY==Y then 
uo.Press(36) 
end if 

if CurrentX>X and CurrentY>Y then 
uo.Press(38) 
end if 

if CurrentX>X and CurrentY<Y then 
uo.Press(37) 
end if 

uo.Print('KeyPressed') 
wait(stepdelay) 

if LastX==uo.GetX() and LastY==uo.GetY() and LastD==uo.GetDir() then 
uo.Print('PathFind') 
recursInd=0 
repeat 
################################################# 
Index=LastD 
uo.Print(str(Index)) 
fout=0 
repeat ; идем в обход пока не упремся снова или не кончится стена 
uo.Print('Iteration') 
CurrentX=uo.GetX() 
CurrentY=uo.GetY() 
LastD=uo.GetDir() 
uo.Press(Turn[ Index ]) 
wait(stepdelay) 
if (uo.GetX()==LastX and uo.GetY()==LastY and LastD==uo.GetDir()) then 
fout=1 ; уперлись 
else 
MoveX=uo.GetX()-CurrentX 
MoveY=uo.GetY()-CurrentY 
uo.Print('deltas '+str(MoveX)+' '+str(MoveY)) 
if DeltaX[ Index ]==MoveX and DeltaY[ Index ]==MoveY then 
fout=2 ; препятствие пройдено 
end if 
end if 
until fout 
uo.Print('fout '+ str(fout)) 
if fout==1 then ; уходим на следующий поворот 
recursInd=recursInd+1 
Push(str( ind )) 
;ld = ind 
else ; fout == 2 
; надо попытаться восстановить контекст из стека, или выйти из обхода 
uo.Print('Iter '+ str(recursInd)) 
pathFind=0 
if recursInd then ; восстановление 
pathFind=1 
recursInd=recursInd-1 
LastD=val(Pop())-1 
if LastD==-1 then 
LastD=7 
end if 
uo.Press(turn[LastD]) 
wait(stepdelay) ; в сиkу того, что ондо нажатие меняет напрваление 
end if 
end if 
################################################# 
until not recursInd and not pathFind 
uo.Print('PathFind END') 
end if 

until 0 
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 
uo.UseObject(Chest) 
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 
Spirit
Posts: 101
Joined: 2006-03-23 19:25:23

Post by Spirit »

У меня было такое давно. Возможно это из-за того, что когда подходишь к деревьям, они становятся невидимыми и тыкнуть по ним таргетом не получается, убери это в настройках в уо.
:O
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Options > Miscellaneous > Use circle of transparency > Off.

Но я подозреваю дело не в этом..
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Re: Хм интересно...

Post by Ururu »

kuviCk wrote: Проверь сообщения при хайде:

Code: Select all

var Text1=uo.GetName()+': You have hidden yourself well' 
var Text2=uo.GetName()+": You can't seem to hide here."

Сообщения при рубке:

Code: Select all

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."

Сообщения при копке:

Code: Select all

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
Типы деревьев:

Code: Select all

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
Шард [b]Антарес[/b]
[color=blue][b]Ururu[/b][/color]
kuviCk
Posts: 127
Joined: 2004-09-08 13:09:13
Contact:

Re: Хм интересно...

Post by kuviCk »

Ururu wrote:
kuviCk wrote: Проверь сообщения при хайде:

Code: Select all

var Text1=uo.GetName()+': You have hidden yourself well' 
var Text2=uo.GetName()+": You can't seem to hide here."

Сообщения при рубке:

Code: Select all

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."

Сообщения при копке:

Code: Select all

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
Типы деревьев:

Code: Select all

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
да дело то не в этом. Просто даж система рубки не срабатывает он просто ходит по координатам покругу... и все
BETEPAH2
Posts: 33
Joined: 2007-08-15 20:07:20
Contact:

Post by BETEPAH2 »

Для проверчки ппробуй во время бега ВРУЧНУЮ ПОТЫКАТЬ на топор ....если врубится то ...считай проблема будет решена (это мне для проверки одной мысли нуна ) что получится пиши в топик.....
Post Reply