Здраствуйте нужен скрипт на ламбер

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
GNOMIK
Posts: 1
Joined: 2010-03-07 11:39:43

Здраствуйте нужен скрипт на ламбер

Post by GNOMIK »

Мне нужен простой скрипт на ламбер чтоб он тупо ходил и рубил без сбора ресов можно чтоб выкидовал или самое простое чтобы они валились из под него суть в чом . Нужно прокачать скилл , все скрипты с форума я перепробывла почему в какомто моменте отказываются работать(.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: Здраствуйте нужен скрипт на ламбер

Post by lavdenis »

вот какои то

Code: Select all

############################################ 
### Lumberjacking / Рубка деревьев v3.7 ### 
############################################ 
### Шард Dragon World / www.drw.ru 
############################################ 
### Реавтор этого скрипта: BETEP [WOD] or BETEPAH ### 
############################################ 
############################################ 
### Оформление дополнений cOoler [Sw!Ne$]### 
############################################ 
### 
############################# 
### Описание и настройка ### 
############################# 
### 
### Чар бегает от дерева к дереву(координаты деревьев берет из файла). 
### Вырубит, бежит к следующему,при логах 700 штук в паке порталится домой скидывает логи в сундук, 
### после реколится обратно бежит к последнему дереву и продолжает рубить. 
### Пример: В файле 100 деревьев, вы вырубив 74 дошли до придела в 700 логов сработала система рекола 
### и вы "порталитесь" домой и складываете логи в сундук,после вы реколитесь обратно в лес и бежите к 75 дереву. 
### Дойдя до 100 дерева (тоесть последнего в списке) чар перейдет к 1ому дереву.(Цикличность) 
### 
### Для тех то кто им пользуется сообщаю, переделал, доработал, отредактировал.! 
### 
### Нововведения: 
### 1 )Логи складываются не на пол а в сундук. (BETEPAH) 
### 2 )Рекол в лес и домой по РУНБУКЕ (а не по рункам). (BETEPAH) 
### ВНИМАНИЕ!!! В СКРИПТЕ РУНБУКИ НАСТРОЕНЫ ПОД DRW (шард) 
### 3 )Система Автомарка Убрана ,и переделана в сомостоятельное маркирование деревьев 
### (раньше чар сам бегал по лесу и очень долго марчил деревья)теперь бегаем сами и просто прицелом по деревам 
### (марчим также,как и раньше в руках кирка). (BETEPAH) 
### 4 )Увеличен придел замаркированых деревьев да 500 шт. (BЕТЕРАН) 
### 5 )Улучшна система Хайда (ходим, не бегаем). (BЕТЕРАН) 
### 6 )Добавлена система InfoLogs. (Mguai, доработана BETEPAH) 
### 7 )Добавлен выбор кирки.(cOoler,доработана BETEPAH) 
### 8 )Система реконекта (выложаная сверху),хорошо сочетается с скриптом лумбер. (Fox M) 
### 
### !!! Чтобы скрипт заработал ВНИМАТЕЛЬНО прочтите настройки.!!!! 
### 
### Работает в 2ух режимах: 
### 1)Маркировка 
### 2)Рубка 
### 
################################### 
### Режимы работы скрипта ### 
################################### 
### Режим первый - "Маркировка".### 
################################### 
### 
### Этот режим отвечает за Маркирование(записывание координат) деревьев. 
### Включается переменной var GetFromFile=0 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента. 
### То есть если GetFromFile=0 координаты деревьев собиратся из клиента. 
### 
### Маркировка происходит так. 
### Поставте переменную GetFromFile равную 0 (GetFromFile=0 ). Положите в суммку к себе Топор,Рунбук(с Рунами домой и в лес) и !!Кирку!!. 
### Идите в лес в котором вы хотите рубить.Запустите Скрипт main(),Инжект попросит вас указать Топор 
### (появится прицел,прицелом на топор который вы с собой взяли),потом инжект попросит вас указать Рунбук(появится прицел,прицелом на него). 
### Инжект сообщит вам что ('Собираем координаты деревьев в округе...'). Чар автоматом возмет в руки кирку и появится прицел. 
### Теперь вы должны в любом порядке САМИ прицелом указать координаты (достаточно просто нажать прицелом на дерево). 
### Если вы не промахнулись и "нажали" на дерево то инжект сообщит вам об этом (Найдено дерево "координаты дерева"). 
### Причем что если даже вы нажмете два раза на одно дерево то он не "запомнит" его повторно. 
### Ходите по лесу и марчите деревья,после того как вы "наберете" достаточное количество деревьев. 
### Инжект напишет вам сообщение ('Анализ закончен, координаты деревьев записаны в файл C:\trees3.dat') и создаст файл на диске С:\ куда запишет 
### координаты деревьев.Система марка зависит от Времени и переменной Area.При Area = 1, 
###марк продлится примерно 20-25 мин.Остоновить марк нельзя, можно только дождатся его конца. 
###500 .Это ПРИДЕЛ (можно хоть 10,хоть 499),но если вы замарчите 501 дерево то скрипт повиснет. 
### После этого чар пойдет по координатам и будет вырубать деревья. 
### 
############################## 
### Режим Второй - "Рубка".### 
############################## 
### 
### Этот режим соответственоо отвечает за рубку. 
### Включается переменной var GetFromFile=1 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента 
### То есть если GetFromFile=1 координаты деревьев будут считыватся из файла. И вам не надо будет сново марчить деревья. 
### 
### Рубка происходит так,Поставте переменную GetFromFile равную 1 ( GetFromFile=1 ). 
### Положите в суммку к себе Топор и Рунбук(с Рунами домой и в лес). 
### Внимание!!! В РУНБУКЕ РУНА В 1ом слоте ДОМОЙ,в 9ом В лес.После установок рун в РУНБУК. 
### ВНИМАНИЕ!!! В СКРИПТЕ НОМЕРА РУН В РУНБУКЕ НАСТРОЕНЫ ПОД DRW (шард). 
### 
### Настройте скрипт под себя при помощи переменных. 
################### 
### Переменные: ### 
################### 
### 1)var TryHiding=1 ## 1 - перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет 
### 2)var LogsQty=700 ## Количество логов, добыв которое надо реколиться домой. 
### 3)var TryRecall=1 ## 1 - после того как соберет LogsQty логов, будет пытаться реколиться домой,складывать логи в сундук и реколиться обратно 
### (нужно указать Рунбук в которой,1 ая руна домой, а 9 ая в лес), 0 - не будет реколится домой и выключит скрипт. 
### 4)VAR Meshok='0x401C1142'## - Айди сундука в который должен складывать Логи.(айди сундука можно узнать написав ,info и прицелом на сундук 
### (в данном случие этот Айди 0x401C1142).Переменная находится ниже в скрипте (примерно в районе 327 строки). 
### 
### После настройки: 
### 
### Идите в лес в котором вы хотите рубить.Запустите Скрипт Lumberjacking(),Инжект попросит вас указать Топор 
### (появится прицел,прицелом на топор который вы с собой взяли),потом инжект попросит вас указать Рунбук(появится прицел,прицелом на него). 
### После этого чар пойдет по координатам и будет вырубать деревья. 
########### 
### Код ### 
########### 
sub Lumberjacking() 
var i=0,j=0,k=0,r=0,q=0,ii,jj 
var TopX=324,TopY=65 
dim TreeX[500], TreeY[500],TreeT[500] 
dim TreeTile[10] 
var flag=0,treeCount=0,clicks=0,flag2=0 
###################### 
### Меню / Options ### 
###################### 
############################################################################################ 
var f=file("C:\trees3.dat") ## - Путь к файлу в котором будут хранится координаты Деревьев. 
### 
var Area=1 ## Размер обрабатываемой территории, можно менять от 1 до 4. 
### 
var TryHiding=1 ## 1 - Перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет . 
### 
var TryRecall=1 ## 1 - После того как соберет LogsQty логов, будет пытаться реколиться домой, 
# складывать логи в сундук и реколиться обратно (нужно указать Рунбук в которой,1 ая руна домой, а 9 ая в лес), 0 - не будет. 
### 
var LogsQty=700 ## Количество логов, добыв которое надо реколиться домой. 
### 
var GetFromFile=0 ## 0 - Координаты деревьев будут считыватся из файла, 0 - собиратся из клиента 
#(сначала соберите а потом считывайте из файла). 
### 
uo.exec("set norbcheck 1")# Для рекола. 
### 
uo.exec("set norbcalc 1") # Для рекола . 
### 
############################################################################################ 
######################## 
### Графика деревьев ### 
######################## 
TreeTile[0]=3283 
TreeTile[1]=3277 
TreeTile[2]=3293 
TreeTile[3]=3296 
TreeTile[4]=3302 
TreeTile[5]=3299 
TreeTile[6]=3290 
TreeTile[7]=3288 
TreeTile[8]=3286 
TreeTile[9]=3280 

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 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('Собираем координаты деревьев в округе...') 
for q=1 to Area 
if q==2 then 
gotoxy(uo.getx()+20,uo.gety()-10) 
end if 
if q==3 then 
gotoxy(uo.getx(),uo.gety()+20) 
end if 
if q==4 then 
gotoxy(uo.getx()-20,uo.gety()) 
end if 
for r=0 to 3 
if r==1 then 
gotoxy(uo.getx()+10,uo.gety()) 
end if 
if r==2 then 
gotoxy(uo.getx(),uo.gety()+10) 
end if 
if r==3 then 
gotoxy(uo.getx()-10,uo.gety()) 
end if 
for j=0 to 8 
for i=0 to 8 
clicks=0 
flag=0 
uo.DeleteJournal() 
####################### 
### Кликаем на тайл ### 
####################### 
uo.useobject('Pickaxe') 
waitForTarget() 
uo.DeleteJournal() 

WaitForTryRock() 

############################### 
### Проверяем дерево ли это ### 
############################### 
flag=0 
for k=0 to 9 
if uo.LastTile(0)==TreeTile[k]+1 then 
flag=2 
end if 
next 
if flag==0 then 
for k=0 to 9 
if uo.LastTile(0)==TreeTile[k] then 
flag=1 
end if 
next 
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('Найдено дерево: 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('Найдено дерево: x='+str(uo.lasttile(1))+' y='+str(uo.lastTile(2))) 
end if 
end if 
next 
next 
next 
next 
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 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 15 
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() 
VAR Meshok='0x401C1142' ## - ID сундука в который чар должен складывать логи 
RecallToHome() 
wait(500) 
uo.press(36) 
wait(500) 
uo.press(36) 
wait(500) 
repeat 
wait(500) 
repeat 
wait(500) 
repeat 
wait(500) 
repeat 
wait(600) 
UO.SetReceivingContainer(Meshok) 
uo.findtype('ZLK') 
wait(500) 
UO.Grab('all','finditem') 
infologs() 
wait(500) 
until uo.GetQuantity('finditem')==0 
UO.UnSetReceivingContainer() 
UO.SetReceivingContainer(Meshok) 
uo.findtype('ZLK') 
wait(500) 
UO.Grab('all','finditem') 
infologs() 
wait(500) 
until uo.GetQuantity('finditem')==0 
UO.UnSetReceivingContainer() 
UO.SetReceivingContainer(Meshok) 
uo.findtype('ZLK') 
wait(500) 
UO.Grab('all','finditem') 
infologs() 
wait(500) 
until uo.GetQuantity('finditem')==0 
UO.UnSetReceivingContainer() 
RecallToLumber() 
end sub 

sub RecallToHome() 
UO.Print("!!Прыгаем ДоМОЙ!!") 
uo.exec("recall Runebook 21") 
wait(10000) 
end sub 

sub RecallToLumber() 
UO.Print("!!Прыгаем в ЛЕС!!") 
uo.exec("recall Runebook 1025") 
wait(10000) 
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 mess 
for var i=0 to 200 
mess=uo.journal(0) 
if uo.Journal(0)==Text2 OR uo.Journal(0)==Text3 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 abs(x-myX)<=1 AND abs(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 abs(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 infologs() 
UO.Print('У вас всего '+Str(UO.Count('0x1BDD'))+' логов в сумке') 
UO.Print('Из них '+Str(UO.Count('0x1BDD','0x0000'))+' простых и ' +str(uo.count('0x1BDD')-uo.count('0x1BDD','0x0000'))+' цветных') 
end sub 

############################################################## 
### ВНИМАНИЕ!!! В СКРИПТЕ РУНБУКИ НАСТРОЕНЫ ПОД DRW (шард) ### 
##############################################################
только переменные и координаты все поменяи
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: Здраствуйте нужен скрипт на ламбер

Post by lavdenis »

вот еще

Code: Select all

############################################ 
### Lumberjacking / Рубка деревьев ### 
############################################ 
### Шард Groza / www.uo.groza.ru ### 
############################################ 
### Реавтор этого скрипта: Reddevill ### 
############################################ 
################## 
### Переменные ### 
################## 
################################################################################################### 
var f=file("C:\trees4.dat") ## - Путь к файлу в котором будут хранится координаты деревьев. 
### 
var TryHiding=1 ## 1 - Перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет . 
### 
var LogsQty=1100 ## - Количество логов, добыв которое надо идти к банку. 
### 
var GetFromFile=1 ## 1 - Координаты деревьев будут считыватся из файла, 0 - собиратся из клиента 
### (сначала соберите а потом считывайте из файла). 
### 
var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки) 
### 
var Chest='0x40021264' ## - ID сундука куда будут выгружаться логи. 
### 
var Trytodrop=1 ## Будем пытатся подходить к сундуку или нет. 
### 
var ContX=4471 ##Координаты X у сундука 
### 
var ContY=1163 ##Координаты Y у сундука 
### 
var oldX,oldY,time ## - Для рекола. 
###
var Axe='0x0F43' ## ID топора
###
var FoodSoondook = 1
###
var Sunduk='0x40021264'
###
var ContX1=4442 ## 1-я координата пути к ресалке
var ContY1=1188
###
var ContX2=4442 ## 2-я координата пути к ресалке
var ContY2=1169
###
var ContX3=4451 ## 3-я координата пути к ресалке
var ContY3=1169 
###
var ContX4=4451 ## 4-я координата пути к ресалке
var ContY4=1162
###
var ContX5=4462 ## Координата на путь к банку (что бы никуда не врезался)
var ContY5=1169
###
var ContX6=4462 ## Координата на путь к банку (что бы никуда не врезался)
var ContY6=1179
###
var ContX7=4471 ## Координата на путь к банку (что бы никуда не врезался)
var ContY7=1179
###
var MaxTraceDistance=10 
var TraceLoopIncrease=5 #Увеличение MaxTraceDistance при исчерпании количества ходов 
var LimitTrace=20 #Сколько шагов в ОБЕ стороны от начальной точки обхода прекращают ходилку (выхода нет). 
var Speed=1 
var StepTimeOut=500 #Таймаут шага. Устанавливать не в размер пинга, а в размер шага + размер пинга. 
# Для ходьбы - 500+Ping 
# Для бега/ходьбы на лошади - 300+Ping 
# Бег на лошади - 150 + Ping 

var CheckCnt=2 #Количество слепых проверок. УВЕЛИЧИВАЕТ В СТОЛЬКО РАЗ ТАЙМАУТ. Использовать только на БЫСТРОМ но НЕСТАБИЛЬНОМ коннекте. При большом пинге будет УЖАС. 
var DynamicPause=30 #Минимальные паузы в циклах. Чем меньше число - тем меньше рывков и тем больше нагрузка процессора. 

########### 
### Код ### 
########### 
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?'") 
##################################### 
### Загружаем координаты из файла ### 
##################################### 
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))+' '+str(treeCount)) 
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==150) 
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 
end if 
if Trytodrop==1 and uo.Count('ZLK')>=LogsQty then 
DropLogs() 
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 GetTree(Type,X,Y,Z) 
var i 
uo.Print('Начинаем рубку дерева...') 
for i=0 to 15 
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 ToHide() 
while not uo.Hidden() 
uo.Print('Пытаемся уйти в хайд...') 
uo.DeleteJournal() 
uo.UseSkill('Stealth') 
wait(3000) 
wend 
wait(100) 
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='You hack at the tree for a while, but fail to produce any useable wood' 
var Text2='There is nothing 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 DropLogs() 
GotoXY(ContX1,ContY1,2)
wait(1500)
GotoXY(ContX2,ContY2,2)
wait(1500)
GotoXY(ContX5,ContY5,2)
wait(1500)
GotoXY(ContX6,ContY6,2)
wait(1500)
GotoXY(ContX7,ContY7,2)
wait(1500)
GotoXY(ContX,ContY,2) 
wait(1500)
uo.say("Bank") 
if uo.Waiting() then 
uo.CancelTarget() 
end if 
var a,Exit 
dim Logs[1] 
Logs[0]=0x1BDD 
uo.Print('Выкладываем Логи.') 
uo.SetReceivingContainer(Chest) 
wait(5000) 
for a=0 to 0 
Exit=0 
repeat 
uo.FindType(Logs[a]) 
if uo.GetQuantity('finditem')>0 then 
uo.Grab('0','finditem') 
wait(5000)
uo.say("Bank") 
wait(2000)
else 
Exit=1 
end if 
until Exit==1 
next 
uo.UnSetReceivingContainer(Chest) 
uo.Print('Логи Выложены.') 
wait(1000)
PutFood()
GotoXY(ContX7,ContY7,2)
wait(1500)
GotoXY(ContX6,ContY6,2)
wait(1500)
GotoXY(ContX5,ContY5,2)
wait(1500)
GotoXY(ContX2,ContY2,2)
wait(1500)
GotoXY(ContX1,ContY1,2)
wait(1500)
end sub 

sub PutFood()
uo.msg ('bank')
uo.SetReceivingContainer('backpack')
uo.FindType('0x097B','-1',Sunduk)
uo.Grab('10','finditem')
wait(500)
repeat
uo.FindType(TypeFood)
  if uo.GetQuantity('finditem')>0 then
  uo.UseType(TypeFood)
  wait(1000)
  else
  EatingFood=0
  wait(1000)
  return 1
  endif
until uo.InJournal("You are stuffed!") or uo.injournal("You are simply too full")
if uo.Waiting() then
uo.CancelTarget()
endif
uo.SetReceivingContainer(Sunduk)
uo.FindType('0x097B','-1','backpack')
if uo.GetQuantity('finditem')>0 then
uo.Grab('-1','finditem')
wait(1500)
else
return 0
endif
uo.UnSetReceivingContainer(Sunduk)
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 ttt() 
walker(1165,1661,1) 
end sub 

Sub GotoXY(GoX,GoY,Prec) 
  UO.SetGlobal("Logging","0") 
  UO.SetGlobal("BlindWalk","0") 
  var LastDir 
  var MoveRes 
  var TracerCnt 
  UO.SetGlobal("GlobalGoX",str(GoX)) 
  UO.SetGlobal("GlobalGoY",str(GoY)) 
  while not IsEnd(GoX,GoY,Prec) 
  TracerCnt = MaxTraceDistance 
  repeat 
  LogInfo('Just walking') 
  LastDir=GoUntilHit(GoX,GoY,Prec) 

  if IsEnd(GoX,GoY,Prec) then 
  return 1 
  end if 

  LogInfo('Tracing') 
  MoveRes = FullAroundTrace(LastDir,GoX,GoY,Prec,TracerCnt) 
  if TracerCnt > LimitTrace then 
  return 0 
  endif 
  TracerCnt = TracerCnt + TraceLoopIncrease 
  until MoveRes == 1 
  wend 
  return 1 
end sub 
  
Sub FullAroundTrace(StartDir,GoX,GoY,Prec,MaxTrace) 
  var LineX=UO.GetX() 
  var LineY=UO.GetY() 
  var CurDir=StartDir 
  var Direction=CountDirection(GoX,GoY,CurDir,Prec) 
  var StartX,StartY 
  var MovesDone=0 
  repeat 
  StartX=UO.GetX() 
  StartY=UO.GetY() 
  CurDir=Tracer(CurDir,Direction,Prec) 
  if (CurDir==GetDir(GoX,GoY,Prec)) then 
  return 1 
  endif 
  if MovesDone>0 and PrevMoveCross(GetDirToDir(UO.GetDir(),Prec),LineX,LineY,GoX,GoY,StartX,StartY,Prec) then 
  return 1 
  end if 
  MovesDone=MovesDone+1 
  CurDir=AddToDir(CurDir,-Direction,Prec) 
  until MovesDone>MaxTrace 
  return 0 
end sub 
  
Sub CountDirection(GoX,GoY,StartDir,Prec) 
  var GoDir=GetDir(GoX,GoY,Prec) 
  var MyX=UO.GetX() 
  var MyY=UO.GetY() 
  if GoDir<StartDir then 
  return -1 
  end if 
  if GoDir>StartDir then 
  return 1 
  end if 
  if Abs(MyX-GoX)>Abs(MyY-GoY) then 
  if (GoDir==3 and GoY>MyY) OR (GoDir==7 and GoY<MyY) then 
  return -1 
  else 
  return 1 
  end if 
  else 
  if (GoDir==1 and GoX<MyX) or (GoDir==5 and GoX>MyX) then 
  return -1 
  else 
  return 1 
  end if 
  end if 
end sub 
  
Sub PrevMoveCross(Dir,x1,y1,x2,y2,StartX,StartY,Prec) 
  var x3,y3,x4,y4 
  x3=StartX 
  y3=StartY 
  x4=StartX+(XFromDir(Dir)-StartX)*Speed 
  y4=StartY+(YFromDir(Dir)-StartY)*Speed 
  return LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec) 
end sub 
  
Sub LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec) 
  if x1==x3 and y1==y3 then 
  return false 
  end if 
  var z1=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1) 
  var z2=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1) 
  if z1*z2>0 then 
  return false 
  else 
  LogInfo('Vector info:') 
  LogInfo('x1= '+str(x1)) 
  LogInfo('y1= '+str(y1)) 
  LogInfo('x2= '+str(x2)) 
  LogInfo('y2= '+str(y2)) 
  LogInfo('x3= '+str(x3)) 
  LogInfo('y3= '+str(y3)) 
  LogInfo('x4= '+str(x4)) 
  LogInfo('y4= '+str(y4)) 
  return true 
  end if 
end sub 
  
Sub IsDiap(X,X0,X1,Prec) 
  if X<=X0+Prec and X>=X1-Prec OR X>=X0-Prec and X<=X1+Prec then 
  return true 
  end if 
  return false 
end sub 
  
Sub GoUntilHit(GoX,GoY,Prec) 
  var LastDir 
  LastDir=GetDir(GoX,GoY,Prec) 
  var CouldMove 
  repeat 
  LastDir=GetDir(GoX,GoY,Prec) 
  if LastDir<>0 and not IsEnd(GoX,GoY,Prec) then 
  CouldMove=TryDir(LastDir,Prec) 
  end if 
  until LastDir==0 or IsEnd(GoX,GoY,Prec) or not CouldMove 
  return LastDir 
end sub 
  
Sub IsEnd(GoX,GoY,Prec) 
  if Abs(UO.GetX()-GoX)<=Prec and Abs(UO.GetY()-GoY)<=Prec then 
  LogInfo('END FOUND') 
  return true 
  else 
  return false 
  end if 
end sub 
  
Sub GetDir(GoX,GoY,Prec) 
  var MyX=UO.GetX() 
  var MyY=UO.GetY() 
  var DiffX=Abs(UO.GetX()-GoX) 
  var DiffY=Abs(UO.GetY()-GoY) 
  var GoDir=0 
  if (DiffX/(DiffY+0.1))>=2 then 
  if (MyX>GoX) then 
  GoDir=7 
  else 
  GoDir=3 
  end if 
  else 
  
  if (DiffY/(DiffX+0.1))>=2 then 
  if (MyY>GoY) then 
  GoDir=5 
  else 
  GoDir=1 
  end if 
  else 
  
  if (MyX>GoX) and (MyY>GoY) then 
  GoDir=6 
  else 
  if (MyX>GoX) and (MyY<GoY) then 
  GoDir=8 
  else 
  if (MyX<GoX) and (MyY>GoY) then 
  GoDir=4 
  else 
  if (MyX<GoX) and (MyY<GoY) then 
  GoDir=2 
  end if 
  end if 
  end if 
  end if 
  end if 
  end if 
  return GoDir 
end sub 
  
Sub Tracer(StartDir,Direction,Prec) 
  var CurDir=StartDir 
  var Result 
  repeat 
  Result=TryDir(CurDir,Prec) 
  if not Result then 
  CurDir=AddToDir(CurDir,Direction,Prec) 
  end if 
  until Result 
  return Result 
end sub 
  
Sub AddToDir(Dir,Cnt,Prec) 
  var NewDir=Dir 
  NewDir=NewDir+Cnt 
  while NewDir>8 
  NewDir=NewDir-8 
  wend 
  while NewDir<1 
  NewDir=NewDir+8 
  wend 
  return NewDir 
end sub 
  
Sub TryDir(Dir,Prec) 
  var BegX=UO.GetX() # Ia?aeuiia O 
  var BegY=UO.GetY() # Ia?aeuiia Y 
  var Counter=0 
  var GoX=BegX 
  var GoY=BegY 
  GoX=XFromDir(Dir) 
  GoY=YFromDir(Dir) 
  if not IsPass(GoX,GoY) then 
  LogInfo(str(GoX)+':'+str(GoY)+' is not passable') 
  return false 
  end if 
  return TurnAndGoDir(Dir,Prec) 
end sub 
  
Sub XFromDir(Dir) 
  if Dir==2 OR Dir==3 Or Dir==4 then 
  return (UO.GetX()+1) 
  end if 
  if Dir==6 OR Dir==7 Or Dir==8 then 
  return (UO.GetX()-1) 
  end if 
  return (UO.GetX()) 
end sub 
  
Sub YFromDir(Dir) 
  if Dir==8 OR Dir==1 Or Dir==2 then 
  return (UO.GetY()+1) 
  end if 
  if Dir==4 OR Dir==5 Or Dir==6 then 
  return (UO.GetY()-1) 
  end if 
  return (UO.GetY()) 
end sub 
  
Sub TurnAndGoDir(Dir,Prec) 
  var StartDir=GetDirToDir(UO.GetDir(),Prec) 
  var StartX=UO.GetX() 
  var StartY=UO.GetY() 
  var EndDir 
  var Counter=0 
  var TestCounter=CheckCnt 

#Direction Test 
  repeat 
  Counter = 0 
  LogInfo('Dir: '+str(StartDir)+' Counter: '+str(Counter))  
  PressDir(Dir) 
  repeat 
  EndDir=GetDirToDir(UO.GetDir(),Prec) 
  wait(DynamicPause) 
  Counter=Counter+1 
  until StartDir<>EndDir or StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause 
  TestCounter = TestCounter - 1 
  LogInfo('Dir: '+str(EndDir)+' Counter: '+str(Counter))  
  until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause 

  if Counter>=StepTimeOut/DynamicPause then 
  LogInfo('Direction timeout reached') 
  return 0 
  end if 
  #End direction Test 

  if StartY<>UO.GetY() or StartX<>UO.GetX() then 
  return Dir 
  end if 
  
  #Start Primary test 
  TestCounter=CheckCnt 
  repeat 
  GoDir(Dir,Prec) 
  Counter=0 
  repeat 
  wait(DynamicPause) 
  Counter=Counter+1 
  until StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause 
  TestCounter = TestCounter - 1 
  until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause 
  #End primary test 

  if Counter>=StepTimeOut/DynamicPause then 
  LogInfo('Step timeout reached') 
  return 0 
  else 
  return Dir 
  end if 
end sub 
  
Sub GetDirToDir(GotDir,Prec) 
  var ChangedDir=-GotDir 
  ChangedDir=AddToDir(ChangedDir,5,Prec) 
  return ChangedDir 
end sub 
  
Sub DirToInj(Dir) 
  dim Dirs[9] 
  Dirs[1]=1 
  Dirs[2]=2 
  Dirs[3]=3 
  Dirs[4]=6 
  Dirs[5]=9 
  Dirs[6]=8 
  Dirs[7]=7 
  Dirs[8]=4 
  
  return (Dirs[Dir]) 
end sub 

Sub PressDir(Dir) 
  dim Dirs[9] 
  Dirs[1]=35 
  Dirs[2]=40 
  Dirs[3]=34 
  Dirs[4]=39 
  Dirs[5]=33 
  Dirs[6]=38 
  Dirs[7]=36 
  Dirs[8]=37 
  
  UO.Press(Dirs[Dir],1) 
end sub 

Sub GoDir(Dir,Prec) 
  dim Dirs[9] 
  Dirs[1]=35 
  Dirs[2]=40 
  Dirs[3]=34 
  Dirs[4]=39 
  Dirs[5]=33 
  Dirs[6]=38 
  Dirs[7]=36 
  Dirs[8]=37 
  
  var DistanceX=Abs(UO.GetX()-val(UO.GetGlobal("GlobalGoX"))) 
  var DistanceY=Abs(UO.GetY()-val(UO.GetGlobal("GlobalGoY"))) 
  var GoDistance 
  if (DistanceX-Prec)<Speed then 
  GoDistance=DistanceX-Prec 
  else 
  if (DistanceY-Prec)<Speed then 
  GoDistance=DistanceY-Prec 
  else 
  GoDistance=Speed 
  endif 
  endif 
  
  UO.Press(Dirs[Dir],GoDistance) 
end sub 
  
Sub IsPass(X,Y) 
  if UO.GetGlobal("BlindWalk") then 
  return true 
  endif 
  
  dim Types[60] 
  Types[1]=3 
  Types[2]=25 
  Types[3]=51 
  Types[4]=63 
  Types[5]=113 
  Types[6]=140 
  Types[7]=172 
  Types[8]=219 
  Types[9]=232 
  Types[10]=235 
  Types[11]=239 
  Types[12]=243 
  Types[13]=248 
  Types[14]=251 
  Types[15]=264 
  Types[16]=267 
  Types[17]=282 
  Types[18]=289 
  Types[19]=321 
  Types[20]=379 
  Types[21]=420 
  Types[22]=440 
  Types[23]=476 
  Types[24]=499 
  Types[25]=513 
  Types[26]=542 
  Types[27]=578 
  Types[28]=586 
  Types[29]=622 
  Types[30]=700 
  Types[31]=804 
  Types[32]=1740 
  Types[33]=1758 
  Types[34]=1770 
  Types[35]=1779 
  Types[36]=1779 
  Types[37]=1881 
  Types[38]=1886 
  Types[39]=1801 
  Types[40]=1805 
  Types[41]=1813 
  Types[42]=1820 
  Types[43]=1831 
  Types[44]=1833 
  Types[45]=1843 
  Types[46]=1850 
  Types[47]=1873 
  Types[48]=1876 
  Types[49]=1885 
  Types[50]=1888 
  Types[51]=1946 
  Types[52]=1969 
  Types[53]=2500 
  Types[54]=2539 
  
  for var i=1 TO 53 STEP 2 
  if UO.PrivateGetTile(X,Y,-1,Types[i],Types[i+1]) then 
  return true 
  end if 
  next 
  return false 
end sub 
  
Sub LogInfo(Line) 
  if not UO.GetGlobal("Logging")=="0" then 
  UO.TextOpen() 
  UO.TextPrint(str(UO.GetX())+":"+str(UO.GetY())+" - "+Line); 
  end if 
end sub 
  
Sub Abs(X) 
  if X>0 then 
  return X 
  else 
  return (-X) 
  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 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 Open(Container) 
uo.DeleteJournal() 
uo.UseObject(Container) 
repeat 
wait(500) 
until uo.InJournal('Contains') 
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 
sub LumberWithRessurectionLoader() 
  repeat 
  uo.exec( "exec Lumberjacking" ) 
  while not uo.dead() 
  wait( 100 ) 
  wend 
  funcKill( "Lumberjacking" ) 
  Ressurect() 
  until false 
endsub 
Sub funcKill( Lumberjacking ) 
  var i 
  for i = 1 to 3 
  uo.exec( "terminate " + Lumberjacking ) 
  wait( 300 ) 
  next 
endsub

sub Ressurect() 
while uo.dead() 
UO.Print( "Go 1" ) 
GotoXY(ContX1,ContY1,2) 
wait(500) 
UO.Print( "Go 2" ) 
GotoXY(ContX2,ContY2,2) 
wait(500) 
UO.Print( "Go 3" ) 
GotoXY(ContX3,ContY3,2) 
wait(500) 
UO.Print( "Go 4" ) 
GotoXY(ContX4,ContY4,2) 
wait(1500) 
onwar() 
wait(500) 
UO.Print( "Go 3" ) 
GotoXY(ContX3,ContY3,2) 
UO.Print( "Go 2" ) 
GotoXY(ContX2,ContY2,2) 
wait(1500)
UO.Print( "Go 1" ) 
GotoXY(ContX1,ContY1,2) 
wait(1500) 
wend 
while (UO.Life<40) 
wait(500) 
wend 
end sub 

sub onwar() 
if uo.warmode(1) then 
UO.WarMode(0) 
end if 
end sub

sub Reconnector() 
var ReconnectTime, RFlag 
ReconnectTime = '0' 
RFlag = 1 
Repeat 
While (UO.ObjAtLayer('Bpack') == '') 
if RFlag Then 
ReconnectTime = MakeTime() 
RFlag = 0 
endif 
Wait(20000) # WorldSave Protection 
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.Exec('terminate all') 
;UO.Exec('exec autoload') 
UO.TextOpen() 
UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) 
RFlag = 1 
ReconnectTime = '0' 
endif 
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 
EndIf 
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 
EndIf 
Next 
Ret = T + " @ " + D 
RETURN Ret 
end sub
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: Здраствуйте нужен скрипт на ламбер

Post by lavdenis »

А так готового ни кто ни че не даст так как шарды разные да и переменные в большинстве своем тоже. Надо самому сидеть разбираться. Или попроси у кого нить со своего шарда. Если нет желания разбираться то либо пусть те напишут либо руби руками
Post Reply