Хелп подправтье скрипт

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
gmotor
Posts: 16
Joined: 2007-01-26 02:58:13

Хелп подправтье скрипт

Post by gmotor »

Code: Select all

######################################################## 
### Lumberjacking / Рубка деревьев Special 4 Katorga ### 
######################################################## 
###                 Oscom /www.uoo.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ому дереву.(Цикличность) 
### 
### 
### ]![ Из-за изменения скрипта и введения новых функций рекомендую почитать описание. ]![ 
### ]![ При Возникновении ошибок или глюков пишите в ICQ! ]![ 
### ]![ Чтобы скрипт заработал внимательно прочтите настройки. ]![ 
### 
################################### 
###    Режимы работы скрипта    ###    
################################### 
###   Работает в 2х режимах:    ### 
###   1)Маркировка              ### 
###   2)Рубка                   ### 
################################### 
### Режим Первый - "Маркировка" ### 
################################### 
### Этот режим отвечает за Маркирование(записывание координат) деревьев. 
### Включается переменной var GetFromFile=0 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента. 
### То есть если GetFromFile=0 координаты деревьев собиратся из клиента. 
### 
### Маркировка происходит так: 
### Поставте переменную GetFromFile равную 0 (GetFromFile=0). 
### Положите к себе в сумку Топор. 
### Идите в лес в котором вы хотите рубить. 
### Запустите Скрипт GoLumberjacking(), инжект попросит вас указать Топор 
### (появится прицел,прицелом на топор который вы с собой взяли), 
### Инжект сообщит вам что ('Собираем координаты деревьев в округе...'). 
### Инжект попросит вас указать Кирку(появится прицел,прицелом на неё). 
### Теперь вы должны в любом порядке сами прицелом указать координаты(достаточно просто нажать прицелом на дерево). 
### Если вы не промахнулись и "нажали" на дерево, то инжект сообщит вам об этом(Найдено дерево "координаты дерева"). 
### Причем что если даже вы нажмете два раза на одно дерево то он не "запомнит" его повторно. 
### Ходите по лесу и марчите деревья. 
### Для того чтобы остановить марк нажмите таргетом на себя. 
### Инжект напишет вам сообщение ('Анализ закончен, координаты деревьев записаны в файл' +FileName) и создаст файл на диске 
### С:\ куда запишет координаты деревьев. 
### После этого чар пойдет по координатам и будет вырубать деревья. 
### 
############################## 
### Режим Второй - "Рубка" ### 
############################## 
### Этот режим соответственно отвечает за рубку. 
### Включается переменной var GetFromFile=1 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента 
### То есть если GetFromFile=1 координаты деревьев будут считыватся из файла. 
### И вам не надо будет сново марчить деревья. 
### 
### Рубка происходит так: 
### Поставте переменную GetFromFile равную 1 (GetFromFile=1). 
### Положите к себе в сумку Топор. 
### Идите на место рубки(где вы замаркали местность), укажите топор таргетом, и чар начнет рубить. 
### 
################## 
### Переменные ### 
################## 
################################################################################################################## 
### 
var FileName=('C:\trees.dat') ## - Путь к файлу в котором будут хранится координаты деревьев. 
### 
var TryHiding=1 ## 1 - Перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет . 
### 
var GetFromFile=1 ## 1 - Координаты деревьев будут считыватся из файла, 0 - собиратся из клиента 
### (сначала соберите а потом считывайте из файла). 
### 
var LogsQty=1500 ## - Количество логов при котором чар складывает логи в чек. 
### 
var QuantityImpact=15 ## - Сколько раз чар будет ударять по дереву, прежде чем перейдет к другому.(стандарт - 15) 
### 
var LogsType='0x1BDD' ## - Тип логов на каторге. 
### 
################################################################################################################## 
### 
### После настройки: 
### Идите в лес в котором вы хотите рубить. 
### Запустите cкрипт GoLumberjacking(), Инжект попросит вас указать Топор 
### (появится прицел, прицелом на топор который вы с собой взяли), 
### затем инжект попросит вас указать Рунбук(появится прицел, прицелом на него) ,Руну(прицелом на неё) и Сундук для логов. 
### После этого чар пойдет по координатам и будет вырубать деревья. 
########### 
### Код ### 
########### 
sub GoLumberjacking() 
uo.Print('Выбери Топор: ') 
uo.Exec('addobject Axe') 
while uo.Targeting() 
wait(100) 
wend 
uo.Exec('exec Lumberjacking') 
end sub 

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 

uo.FilterSpeech('on') 
uo.FilterSpeech('add', 'Where do you want to use the pickaxe?') 

##################################### 
### Загружаем координаты из файла ### 
##################################### 
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 
###################################### 
### Собираем координаты из клиента ### 
###################################### 
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.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 uo.Count('ZLK')>=LogsQty or uo.Weight>=uo.STR*4+20 then 
ClickingOnLogs() 
end if 

uo.Print('Идем к дереву номер '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i])) 
InfoLogs() 
flag=GotoXY(TreeX[i],TreeY[i],2) 
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 GotoXY(x,y,r) 
var LastX=0,LastY=0,i=0 
while Numb(y-uo.GetY())>r 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
if (y-uo.GetY())>r then 
LastX=uo.GetX() 
LastY=uo.GetY() 
for i=0 to 2 
uo.Press(35) 
next 
if LastY==uo.GetY() then 
for i=0 to 2 
uo.Press(37) 
next 
end if 
if LastY==uo.GetY() then 
for i=0 to 2 
uo.Press(40) 
next 
end if 
if LastX==uo.GetX() and LastY==uo.GetY() then 
for i=0 to 5 
uo.Press(38) 
next 
end if 
end if 
if (uo.GetY()-y)>r then 
LastY=uo.GetY() 
for i=0 to 2 
uo.Press(33) 
next 
if LastY==uo.GetY() then 
for i=0 to 2 
uo.Press(39) 
next 
end if 
if LastY==uo.GetY() then 
for i=0 to 2 
uo.Press(38) 
next 
end if 
if LastX==uo.GetX() and LastY==uo.GetY() then 
for i=0 to 5 
uo.Press(40) 
next 
end if 
end if 
wend 
while Numb(x-uo.GetX())>r 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
if (x-uo.GetX())>r then 
LastX=uo.GetX() 
LastY=uo.GetY() 
for i=0 to 2 
uo.Press(34) 
next 
if LastX==uo.GetX() then 
for i=0 to 2 
uo.Press(40) 
next 
end if 
if LastX==uo.GetX() then 
for i=0 to 2 
uo.Press(39) 
next 
end if 
if LastX==uo.GetX() and LastY==uo.GetY() then 
for i=0 to 5 
uo.Press(37) 
next 
end if 
end if 
if (uo.GetX()-x)>r then 
LastX=uo.GetX() 
for i=0 to 2 
uo.Press(36) 
next 
if LastX==uo.GetX() then 
for i=0 to 2 
uo.Press(38) 
next 
end if 
if LastX==uo.GetX() then 
for i=0 to 2 
uo.Press(37) 
next 
end if 
if LastX==uo.GetX() and LastY==uo.GetY() then 
for i=0 to 5 
uo.Press(39) 
next 
end if 
end if 
wend 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
else 
return 0  
end if 
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 ClickingOnLogs() 
wait(100) 
uo.UseType(LogsType) 
uo.UseType(LogsType) 
wait(100) 
end sub 

sub Terminate() 
uo.Exec('terminate Lumberjacking') 
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 
вроде написано для оскома но там на русском пишет что
(Тут не осталось пригоднои древесины. Нечего рубить.) и пока он 15 раз не кликнет на дерево он неатходет к следушему хелп!!
Post Reply