Code: sub Lumber() var i=0,j=0,k=0,r=0,q=0,ii,jj, a=0 var TopX=324,TopY=65 dim TreeX[300], TreeY[300],TreeT[300] dim TreeTile[300] var flag=0,treeCount=0,clicks=0,flag2=0 var f=file("C:\trees3.dat")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; var Area=4 ## Ðàçìåð îáðàáàòûâàåìîé òåððèòîðèè, ìîæíî ìåíÿòü îò 1 äî 4.
var TryHiding=1 ## 1 - ïåðåä òåì êàê ðóáèòü äåðåâî, áóäåò ïûòàòüñÿ óéòè â õàéä, 0 - íå áóäåò
var TryRecall=1 ## 1 - ïîñëå òîãî êàê ñîáåðåò LogsQty ëîãîâ, áóäåò ïûòàòüñÿ ðåêîëèòüñÿ äîìîé, # ñêëàäûâàòü ëîãè íà ïîë è ðåêîëèòüñÿ îáðàòíî (íóæíî âûáðàòü äâå ðóíû), 0 - íå áóäåò.
var LogsQty=555 ## Êîëè÷åñòâî ëîãîâ, äîáûâ êîòîðîå íàäî ðåêîëèòüñÿ äîìîé.
var RecallFromScroll=0 ## 1 - ñ ðóí, 0 - èç ðóíáóêà
var GetFromFile=1 ## 1 - êîîðäèíàòû äåðåâüåâ áóäóò ñ÷èòûâàòñÿ èç ôàéëà, 0 - ñîáèðàòñÿ èç êëèåíòà
var Const=2 ## âî ñêîëüêî ðàç óâåëè÷èâàòü ðàçìåð òåñòîâîé òåððèòîðèè (êîýôôèöèåíò) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#Ãðàôèêà äåðåâüåâ 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('aXE: ') uo.exec('addobject axe') wait(5000)
if TryRecall==1 then uo.print('rUNBOOK' ) uo.exec('addobject Runebook') wait(5000) if RecallFromScroll==1 then uo.print('Âûáåðè ðóíó äîìîé: ') uo.exec('addobject runeHome') wait(5000) uo.print('Âûáåðè ðóíó â ëåñ: ') uo.exec('addobject runeLumber') 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 a=1 to Const 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('0x09A8') 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 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 30 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(1000) Unload() wait(1000) RecallToLumber(FromScroll) end sub
sub RecallToHome(FromScroll) var i uo.print('Ðåêîëèìñÿ äîìîé...') for i=1 to 10 uo.deletejournal() if FromScroll==0 then RecallRunebookhome() else uo.waittargetobject('runeHome') uo.cast('Recall') 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() if FromScroll==0 then RecallRunebookles() else uo.waittargetobject('runeLumber') uo.cast('Recall') 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('Hiding') 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 400 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 main() Lumber() end sub
sub Unload() var UnloadCont='0x40125B73' #àéäè ñåéôà ToHide() VAR Exit, i DIM Ore[5] Ore[0]=0x1bdd Ore[1]=0x1bdd Ore[2]=0x1bdd Ore[3]=0x1bdd
UO.SetReceivingContainer(UnloadCont) ; storecontainer wait(500)
For i=0 to 3 Exit=0 repeat UO.FindType(Ore[i]) if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') CheckLag() wait(1500) Else Exit=1 endif until Exit==1 Next
UO.UnSetReceivingContainer() end sub
sub CheckLag() UO.DeleteJournal() UO.Click('backpack')
repeat wait(500) until UO.InJournal('backpack') end sub
sub RecallRunebookhome() ToHide() UO.UseObject('Runebook') wait(500) UO.LClick(136,70) wait(1000) end sub
sub RecallRunebookles() ToHide() Uo.UseObject('Runebook') wait(500) UO.LClick(136,160) wait(1000) end sub
Привет всем, вот играю на DRW и пользуюсь таким скриптом на ламбер. Скрипт старый, но хороший. И вобщем то нет проблем, но хотелось бы, что бы в случае появления элема, чар просто останавливался и продолжал рубить дальше после определённой задержке И так внимание на экран, вопрос знатокам Куда поставить эту саму задержку, подскажи если не сложно. Последний раз просил тут помощи года 2-3 тому-назад, мне помогли и я исчез и ненадоедал, помогите пожалуйсто и я опять исчезну года на 2-3
|