Люди помогите скиньте скрип на ламбер!!!
Moderators: Murderator+, Murderator
Люди помогите скиньте скрип на ламбер!!!
народ помогите плз скиньте скриптик на ламбер токо тот который деревья сам ищет буду очень признателен!!!Зарание спасибо
Code: Select all
###############################################################
### Скрипт на ламбер ###
###############################################################
### (c) Elthar aka Duo.
### Требуется YokoInjection со скрипт парсером версии 0.3
### http://yoko.netroof.net
###############################################################
### Инструкции по применению ###
###############################################################
### Во время работы скрипта рекомендуется не говорить,
### это будет тормозить его выполнение, хотя и не смертельно.
### Вердату желательно иметь нормальную, не с пеньками вместо
### деревьев.
###
### 1. До запуска скрипта в бэкпаке должно быть: любой топор,
### кирка (a pickaxe); если надо, чтобы чар реколился домой и
### складывал логи, то еще две руны и спеллбук с реколом (или
### свитки.
### 2. Марчим одну руну куда-нить в безопасное место (например,
### в дом), вторую туда, где хотим рубить. Идем туда, врубаем
### скрипт.
### 3. Появится прицел и мессага "Выберите топор". Кликаем на
### топор. Если переменная TryRecall=1 то так же выбираем
### сначала руну домой, потом руну в лес. Если в спеллбуке нет
### заклинания Recall, то нужно выставить переменную
### RecallFromScroll=1, тогда еще выбираем стопку свитков рекола.
### Нужно обязательно проверить, хватает ли регов или свитков,
### иначе чар застрянет посреди леса.
### 4. Если переменная GetFromFile=1, то скрипт считает из файла
### координаты деревьев и сразу побежит к первому дереву. Если
### GetFromFile=0, то начнется анализ территории. ВО ВРЕМЯ АНАЛИЗА
### ОКНО КЛИЕНТА ДОЛЖНО БЫТЬ АКТИВНО, И КУРСОР ДОЛЖЕН НАХОДИТЬСЯ
### НА ИГРОВОМ ПОЛЕ!!! Можно менять переменную Area от 1 до 4,
### чтобы увеличивать/уменьшать размер территории для анализа.
### Сколько выбирать, зависит от густоты леса и скилла Ламбера,
### пробуй сам.
### 5. Когда база загрузится, появится соответствующая мессага,
### и начнется бесконечный цикл на обход деревьев. Он происходит
### так: идем к дереву; если переменная TryHiding=1 то пытаемся
### уйти в хайд; начинаем рубить логи, пока все не вырубим, или
### пока не кончится таймер (30 ударов); если переменная
### TryRecall=1 и логов больше чем переменная LogsQty, то
### реколимся домой, складываем логи на пол, реколимся обратно;
### идем к следующему дереву и все повторяется сначала.
###
### Вот собственно и все! Enjoy it!
###############################################################
sub Lumber()
var i=0,j=0,k=0,r=0,q=0,ii,jj
var TopX=324,TopY=65
dim TreeX[100], TreeY[100],TreeT[100]
dim TreeTile[100]
var flag=0,treeCount=0,clicks=0,flag2=0
var f=file("C:\trees.dat")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
var Area=4 ## Размер обрабатываемой территории, можно менять от 1 до 4.
var TryHiding=1 ## 1 - перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет
var TryRecall=1 ## 1 - после того как соберет LogsQty логов, будет пытаться реколиться домой,
# складывать логи на пол и реколиться обратно (нужно выбрать две руны), 0 - не будет.
var LogsQty=500 ## Количество логов, добыв которое надо реколиться домой.
var RecallFromScroll=0 ## 1 - рекол со свитков, 0 - из спеллбука
var GetFromFile=0 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#Графика деревьев
TreeTile[0]=3283
TreeTile[1]=3277
TreeTile[2]=3293
TreeTile[3]=3296
TreeTile[4]=3202
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.addobject("a key ring", 0x400866CE) # Обьект кейринга
uo.addobject("spellbook", 0x4019FFB0) # Обьект спелбука
uo.addobject("runebook", 0x400C617E) # Обьект runebook
uo.addobject("runebook2", 0x40080646) # Обьект runebook
uo.addobject("pestik", 0x4008610D) # пестик
uo.print('Выбери топор: ')
uo.exec('addobject axe')
wait(5000)
uo.print('сумку с регами: ')
uo.exec('addobject bag')
wait(5000)
if TryRecall==1 then
uo.print('Выбери руну домой: ')
uo.exec('addobject runeHome')
wait(5000)
uo.print('Выбери руну в лес: ')
uo.exec('addobject runeLumber')
wait(5000)
if RecallFromScroll==1 then
uo.print('Выбери свитки Recall:' )
uo.exec('addobject RecallScroll')
wait(5000)
end if
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('Собираем координаты деревьев в округе...')
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.usetype('0x0E86')
waitForTarget()
uo.DeleteJournal()
uo.LClick(TopX+i*21-j*21,TopY+i*21+j*21)
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:\trees.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(RecallFromScroll)
end if
uo.print('Идем к дереву '+str(i)+': x='+str(treex[i])+' y='+str(treey[i]))
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(FromScroll)
RecallToHome(FromScroll)
wait(500)
uo.press(36)
wait(500)
uo.press(36)
wait(500)
repeat
wait(600)
gotoxy(776,1920)
uo.exec("emptycontainer 400 'backpack' 0x400634A4")
wait(1000)
uo.setreceivingcontainer('backpack')
wait(500)
uo.grab(0,'bag')
wait(500)
uo.grab(0,'runeHome')
wait(500)
uo.grab(0, "a key ring")
uo.grab(0, "spellbook")
wait (500)
uo.grab(0, "runebook")
wait (500)
uo.grab(0, "runebook2")
uo.grab (0,"runeLumber")
wait (500)
uo.grab (0,"pestik")
wait(1000)
RecallToLumber(FromScroll)
end sub
sub RecallToHome(FromScroll)
var i
uo.print('Реколимся домой...')
for i=1 to 10
uo.deletejournal()
uo.waittargetobject('runeHome')
if FromScroll==0 then
uo.cast('Recall')
else
uo.useobject('RecallScroll')
end if
if WaitForRecall()==1 then
return 1
end if
next
return 0
end sub
sub RecallToLumber(FromScroll)
var i
uo.print('Реколимся обратно...')
for i=1 to 10
uo.deletejournal()
uo.waittargetobject('runeLumber')
if FromScroll==0 then
uo.cast('Recall')
else
uo.useobject('RecallScroll')
end if
if waitForRecall()==1 then
return 1
end if
next
return 0
end sub
sub ToHide()
var i
uo.print('Пытаемся уйти в хайд...')
for i=1 to 15
uo.deletejournal()
uo.useskill('Stealth')
if WaitForHide()==1 then
return 1
end if
next
return 0
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:\trees.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 main()
Lumber()
end sub
2BOT Аяяй, не хорошо чужие скрипты выкладывать.
Он проверяет очень долго, ты его включи и сходи попей чай.Ajax wrote:У меня он начинает работать.. но как доходит дело до чтения месности...
я ставль параметр=1 за 10 мин он так и не закончил....
хотелось бы узнать скока он анализирует местность???
при =1, =2,=3, =4???
,simsim otkrojsja. А если серьёзно ,exec lumberJonni wrote:Как етот скрипт включаеться какими словами?
внимательно прочел инструкцию, вставил в инжект, настроил чтобы считывалось с клиента и не реколился вообще, начанаеться скрипт, просит указать топор и бек пек и все, потом мышка иногда подергиваеться и вылетает сообщение No item found и все.. помогите пожалуйсто, че надо сделать?
пс. играю на шарде Oskom free
кстате зачем надо иметь кирку в бек пеке?

пс. играю на шарде Oskom free
кстате зачем надо иметь кирку в бек пеке?
Sasquach wrote:внимательно прочел инструкцию, вставил в инжект, настроил чтобы считывалось с клиента и не реколился вообще, начанаеться скрипт, просит указать топор и бек пек и все, потом мышка иногда подергиваеться и вылетает сообщение No item found и все.. помогите пожалуйсто, че надо сделать?
пс. играю на шарде Oskom free
кстате зачем надо иметь кирку в бек пеке?
Это старая версия лумбера с автомпрком ...... жуткое и страшное )))
Но итем фоунд ...это он видать у тебя не видет кирку. А кирка нужна для автомарка деревьев.
Все просто.
BETEPAH ™
BETEPAH ™
Krueger wrote:У меня вопрос по поводу скрипта
как писать файл с координатами деревьев?
пример вынесете плиз
Code: Select all
100
3289 2052 1947
3277 2052 1950
3299 2052 1953
3291 2052 1956
3289 2052 1959
3291 2052 1962
3286 2056 1959
3286 2056 1962
3302 2056 1965
3296 2056 1971
3289 2056 1974
3280 2056 1980
3294 2056 1983
3280 2056 1986
3299 2056 1989
3277 2056 1992
3283 2060 1989
3294 2060 1992
3280 2060 1995
3299 2056 1998
3299 2060 2001
3302 2060 2004
3277 2064 2004
3283 2064 1998
3280 2068 1992
3296 2068 1989
3277 2064 1989
3299 2064 1986
3289 2064 1980
3302 2064 1977
3286 2068 1977
3283 2064 1971
3299 2068 1971
3291 2064 1968
3280 2068 1965
3280 2068 1962
3283 2068 1959
3299 2072 1962
3280 2076 1959
3296 2080 1956
3291 2080 1959
3296 2084 1959
3299 2092 1956
3302 2096 1959
3302 2096 1962
3283 2100 1962
3302 2096 1965
3302 2100 1965
3289 2096 1971
3280 2092 1971
3289 2092 1974
3302 2092 1977
3299 2096 1977
3283 2096 1980
3277 2100 1986
3302 2096 1989
3294 2092 1989
3277 2092 1986
3286 2088 1986
3299 2088 1989
3277 2088 1992
3289 2088 1995
3291 2084 1992
3299 2084 1995
3299 2084 1998
3302 2088 1998
3296 2088 2001
3286 2084 2001
3280 2084 2007
3296 2080 2010
3291 2080 2007
3280 2080 2004
3283 2076 2007
3280 2076 2004
3294 2076 1998
3286 2076 1992
3299 2076 1989
3291 2076 1986
3286 2072 1986
3296 2068 1989
3280 2068 1992
3277 2064 1989
3299 2064 1986
3289 2064 1980
3302 2064 1977
3286 2068 1977
3289 2072 1980
3296 2072 1977
3296 2072 1974
3299 2076 1971
3294 2076 1974
3291 2076 1980
3302 2080 1971
3302 2084 1974
3289 2084 1977
3294 2084 1980
3277 2088 1977
3296 2088 1974
3283 2088 1971
3302 2092 1977