Code: VAR Pickaxe="0x0f39" VAR X,Y,Stoplocation = 0 VAR ItemBB="0x19b9" VAR PickAxeCC=3 VAR MoveDelay=2500,MoveNumber=1,Ep=0.001,XN = 1117,YN = 1462 VAR Maxcountpick=14 #ìàêñèìàëüíîå êîëè÷åñòâî ïîïûòîê êîïàòü VAR KolScrolls=0 VAR Master="AeR" VAR selfname="Mama" VAR Box="0x400FA8A8" VAR Box_from_instruments="0x400FA8A9"
sub start() main() end sub
sub main() VAR e,eTemp,Minestatus=0 uo.addobject("Box",Box) uo.addobject("Box_from_instruments",Box_from_instruments) preload() while 1==1 if Getlocation()<>0 then gobase() end if while checkinv()==0 wait(150) wend bandageself() uo.setglobal("Status","OK") Uo.deletejournal() wait(200) gomine() uo.print("gomine cicle end!") repeat eTemp=0 repeat e=Change_point_coordinates() eTemp=gotoxy(val(uo.getglobal("X")),val(uo.getglobal("Y")),1) until eTemp<>1 Minestatus=mine() uo.print("Minestatus= "+str(Minestatus)) if Minestatus==1 then gobase() end if if Minestatus==2 then uo.exec("exec bandageself") gobase() end if until Minestatus==1 or Minestatus==2 wend end sub
Sub mine() var Tim,Jurn,HP,countpick=0 Dim Ñliloc[10] Ñliloc[0]="cliloc# 0xA867" Ñliloc[1]="cliloc# 0xAD03" Ñliloc[2]="cliloc# 0xAD00" Ñliloc[3]="cliloc# 0x6B31" Ñliloc[4]="cliloc# 0xEE46" Ñliloc[5]="cliloc# 0x5DE1" Ñliloc[6]="cliloc# 0x5DE6" Ñliloc[7]="cliloc# 0xA2DE" Ñliloc[8]="cliloc# 0xACF9" Ñliloc[9]="cliloc# 0xA866" Ñliloc[10]="cliloc# 0xA20D" HP=Uo.GetHP() REPEAT Uo.waitTargetTile(uo.getglobal("T"),uo.getglobal("X"),uo.getglobal("Y"),uo.getglobal("Z")) Uo.usetype(Pickaxe) wait(2100) Tim = Uo.Timer() REPEAT wait(150) Jurn=Uo.Journal(0) UNTIL Uo.Timer()-Tim>40 or not Uo.Weight<470 or Jurn == Ñliloc[1] or Jurn == Ñliloc[2] or Jurn == Ñliloc[3] or Jurn == Ñliloc[4] or Jurn == Ñliloc[0] or Jurn == Ñliloc[9] or Jurn == Ñliloc[10] or Uo.GetHP()<HP countpick=countpick+1
UNTIL Jurn == Ñliloc[3] or not Uo.Weight <470 or Jurn == Ñliloc[2] or Uo.count(Pickaxe)==0 or Jurn == Ñliloc[7] or Jurn == Ñliloc[0] or Jurn == Ñliloc[9] or Jurn == Ñliloc[10] or Uo.GetHP()<HP or countpick>=Maxcountpick IF (Jurn == Ñliloc[2] or Jurn == Ñliloc[0] or Jurn == Ñliloc[7] or Jurn == Ñliloc[9] or countpick>=Maxcountpick ) and not Uo.GetHP()<HP then Uo.Print("No metal !!!") Return 0 end if if Uo.GetHP()<HP or uo.injournal("121") then uo.textopen() uo.textprint("alert at "+time()) uo.textprint(uo.getglobal("T")+"$$$"+uo.getglobal("X")+"$$$"+uo.getglobal("Y")+"$$$"+uo.getglobal("Z")) Return 2 end if Return 1 Uo.deletejournal() wait(200) end sub
Sub CheckINV() uo.addobject("Box",Box) uo.addobject("Box_from_instruments",Box_from_instruments) gobase() uo.say("bank") wait(2000) Uo.useobject("Box_from_instruments") wait(2000) Uo.useobject("Box") wait(2000) Uo.useobject("backpack") wait(2000) while Uo.count(ItemBB) Uo.findtype(ItemBB) Uo.moveitem("finditem","0","Box") wait(700) wend
while uo.count(Pickaxe)<3 #or uo.count("0x1f4c")< KolScrolls Uo.findtype(Pickaxe,"-1","Box_from_instruments") wait(500) IF Uo.findCount()>(PickaxeCC-Uo.count(Pickaxe)) then while Uo.count(Pickaxe)<PickaxeCC Uo.grab(STR(PickaxeCC-Uo.count(Pickaxe)),"finditem") wait(700) Uo.findtype(Pickaxe,"-1","Box_from_instruments") wend else wait(3000) end if wait(700) wend if Uo.count("0x0e21")<20 then Uo.findtype("0x0e21","-1","Box_from_instruments") Uo.grab(str(20-Uo.count("0x0e21")),"finditem") wait(700) end if Informer() end sub
Sub preload() VAR iPath,iPoint DIM Path[50],Point[500] Path[0]="0 2512 551 0" Path[1]="0 2515 543 0" Path[2]="0 2522 537 0" Path[3]="0 2528 536 0" Path[4]="0 2528 521 0" Path[5]="0 2528 519 0" Path[6]="0 2526 508 15" Path[7]="0 2525 507 15" Path[8]="0 2525 502 15" Path[9]="0 2527 501 15" Path[10]="0 2527 501 15" Path[11]="1852 2528 501 15" Path[12]="1852 2530 501 25" Path[13]="1993 2531 502 30" Path[14]="1993 2537 501 30" Path[15]="1993 2544 502 30" Path[16]="1996 2547 502 30" Path[17]="1850 2548 502 25" Path[18]="1850 2549 501 20" Path[19]="1850 2549 501 20" Path[20]="1850 2550 501 15" Path[21]="0 2551 502 15" Path[22]="0 2555 503 4" Path[23]="0 2556 502 0" Path[24]="0 2557 502 0" Path[25]="1340 2557 500 0"
Point[0]="1339 2556 498 0" Point[1]="1339 2556 497 0" Point[2]="1339 2557 494 0" Point[3]="1339 2558 496 0" Point[4]="1339 2560 498 0" Point[5]="1339 2560 496 0" Point[6]="1339 2562 494 0" Point[7]="1342 2559 494 0" Point[8]="1339 2561 493 0" Point[9]="1339 2563 493 0" Point[10]="1350 2565 491 0" Point[11]="1339 2563 491 0" Point[12]="1340 2561 491 0" Point[13]="1342 2560 492 0" Point[14]="1355 2558 492 0" Point[15]="1355 2558 490 0" Point[16]="1339 2559 488 0" Point[17]="1339 2561 486 0" Point[18]="1339 2562 485 0" Point[19]="1354 2562 483 0" Point[20]="1353 2563 481 0" Point[21]="1339 2565 480 0" Point[22]="1355 2565 479 0" Point[23]="1339 2566 477 0" Point[24]="1339 2568 475 0" Point[25]="1339 2569 475 0" Point[26]="1339 2571 476 0" Point[27]="1342 2573 476 0" Point[28]="1339 2575 476 0" Point[29]="1339 2573 475 0" Point[30]="1339 2576 475 0" Point[31]="1339 2572 475 0" Point[32]="1339 2579 478 0" Point[33]="1352 2581 480 0" Point[34]="1339 2580 482 0" Point[35]="1339 2578 484 0" Point[36]="1339 2578 482 0" Point[37]="1339 2576 482 0" Point[38]="1339 2576 480 0" Point[39]="1339 2576 478 0" Point[40]="1342 2577 478 0" Point[41]="1339 2576 477 0" Point[42]="1339 2574 477 0" Point[43]="1339 2574 479 0" Point[44]="1339 2574 481 0" Point[45]="1339 2575 480 0" Point[46]="1339 2573 483 0" Point[47]="1339 2573 484 0" Point[48]="1341 2572 482 0" Point[49]="1339 2573 482 0" Point[50]="1339 2572 484 0" Point[51]="1339 2571 486 0" Point[52]="1339 2571 485 0" Point[53]="1339 2570 486 0" Point[54]="1340 2571 488 0" Point[55]="1340 2569 488 0" Point[56]="1342 2569 486 0" Point[57]="1339 2569 484 0" Point[58]="1339 2567 484 0" Point[59]="1339 2566 487 0" Point[60]="1339 2568 488 0" Point[61]="1339 2568 485 0" Point[62]="1339 2566 487 0" Point[63]="1339 2566 489 0" Point[64]="1339 2564 488 0" Point[65]="1339 2564 486 0" Point[66]="1339 2566 484 0" Point[67]="1340 2568 482 0" Point[68]="1339 2570 480 0" Point[69]="1341 2572 482 0" Point[70]="1339 2574 484 0" Point[71]="1342 2575 485 0" Point[72]="1339 2577 485 0" Point[73]="1340 2571 488 0" Point[74]="1339 2571 481 0" Point[75]="1342 2571 479 0" Point[76]="1339 2569 479 0" Point[77]="1339 2567 481 0" Point[78]="1340 2566 483 0" Point[79]="1339 2564 485 0" Point[80]="1339 2566 485 0" Point[81]="1339 2565 487 0" Point[82]="1339 2563 487 0" Point[83]="1339 2561 489 0" Point[84]="1340 2561 491 0" Point[85]="1339 2561 493 0" Point[86]="1339 2559 495 0" Point[87]="1339 2557 497 0" uo.setglobal("kolcoord",87)
FOR iPath=0 to 25 uo.setglobal("Path"+str(iPath),Path[iPath]) next
FOR iPoint=0 to 87 uo.setglobal("point"+str(iPoint),Trim(Point[iPoint])) next end sub
Sub Change_point_coordinates() uo.setglobal("T",GetNumb(uo.getglobal("point"+uo.getglobal("point_number")),0)) uo.setglobal("X",GetNumb(uo.getglobal("point"+uo.getglobal("point_number")),1)) uo.setglobal("Y",GetNumb(uo.getglobal("point"+uo.getglobal("point_number")),2)) uo.setglobal("Z",GetNumb(uo.getglobal("point"+uo.getglobal("point_number")),3)) IF val(uo.getglobal("kolcoord"))-val(uo.getglobal("point_number"))>1 then uo.setglobal("point_number",val(uo.getglobal("point_number"))+1) else uo.setglobal("point_number",0) end if end sub
Sub gomine() VAR Temp,Location=Getlocation(),x,y Temp=Location while Temp<>25 x=Getnumb(trim(uo.getglobal("Path"+str(Temp+1))),1) y=Getnumb(trim(uo.getglobal("Path"+str(Temp+1))),2) if gotoxy(x,y,1)==1 then Temp=Temp-2 end if Temp=Temp+1 if Temp<0 then Temp=2 end if wend end sub
Sub gobase() If uo.weight>418 then uo.drop(1, ItemBB) endif VAR Temp,Location=Getlocation(),x,y Temp=Location uo.print("My location = "+str(Temp)) while Temp<>0 x=Getnumb(trim(uo.getglobal("Path"+str(Temp-1))),1) y=Getnumb(trim(uo.getglobal("Path"+str(Temp-1))),2) if gotoxy(x,y,1)==1 then Temp=Temp+2 end if Temp=Temp-1 if Temp>25 then Temp=24 end if wend uo.deletejournal() end sub
Sub Getlocation() var i,x,y,point=0,minPath=100,tempminPath for i=0 to 25 x=Getnumb(trim(uo.getglobal("Path"+str(i))),1) y=Getnumb(trim(uo.getglobal("Path"+str(i))),2) tempminPath=Getdistance(x,y) if tempminPath<minPath then minPath=tempminPath point=i end if next return point end sub
Sub Getdistance(x,y) var dx,dy,dd dx=uo.getx("self")-x dy=uo.gety("self")-y if dx<0 then dx=-1*dx end if if dy<0 then dy=-1*dy end if if dx>dy then dd=dx else dd=dy end if return dd end sub
Sub GetNumb(C,I) VAR J,T,K J=0 K=1 while K>0 J=J+1 IF (Mid(C,J,1)==" ") Or (J>=Len(C)-1) then IF I==0 then T=Val(Left(C,J)) Else T=GetNumb(Right(C,Len(C)-J-1),I-1) end if K=0 end if wend return T end sub
Sub gotoxy(x,y,prec) var ld=0,ldc=0 var dx,dy var mx,my var ox,oy,mk,k
start: mx=UO.GetX() my=UO.GetY() dx=mx-x if dx<0 then dx=0-dx endif dy=my-y if dy<0 then dy=0-dy endif if dy>dx then dx=dy end if if dx<=prec then return end if if not ldc then ;uo.print(STR(dx)) end if if dx<3 then mk=70 else mk=15 end if
ox=mx oy=my for k=1 to mk mx=UO.GetX() my=UO.GetY() if mx<>ox or my<>oy then goto sdidapl end if wait(1) next sdidapl:
mx=UO.GetX() my=UO.GetY() dx=mx-x if dx<0 then dx=0-dx endif dy=my-y if dy<0 then dy=0-dy endif if dy>dx then dx=dy end if
if dx<=prec then return end if if ld==dx then ldc=ldc+1 if ldc>20 then uo.print("Can not reach location!") return 1 end if else ld=dx end if
if mx==x then if my==y then return endif if my>y then
UO.Press(33) goto start endif
UO.Press(35) goto start end if if mx<x then if my>y then
UO.Press(39) goto start endif if my==y then
UO.Press(34) goto start endif
UO.Press(40) goto start end if if my<y then UO.Press(37) goto start endif if my==y then
UO.Press(36) goto start endif UO.Press(38) goto start end sub
Sub Numb(num) if num>=0 then return num else return num*(-1) end if 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 bandageself() VAR Mess,Timst while Uo.count("0x0e21") and uo.life<90 uo.bandageself() repeat wait(150) Mess=Uo.Journal(0) until (Uo.Timer()-Timst) > 40 or uo.life==uo.str or not Uo.count("0x0e21") wend end sub
sub control() VAR i,Ok=0 uo.deletejournal() wait(200) while 1==1 if uo.injournal(Master+": "+selfname+" reload") then uo.setglobal("Reload","Yes") uo.say("Ok!") uo.exec("terminate gotoxy") wait(500) uo.exec("terminate gopapa") wait(500) uo.exec("terminate mine") wait(500) uo.exec("terminate main") wait(500) uo.exec("exec main") wait(500) uo.deletejournal() wait(200) end if wait(150) wend end sub
Sub Informer() VAR i DIM Color[20],Name[20] Color[0]="0x0001" # Iron Color[1]="0x0BB7" # Bronze Color[2]="0x096D" # Copper Color[3]="0x0BB5" # Silver Color[4]="0x0BB5" # Gold Color[5]="0x0BB3" # Blood rock Color[6]="0x0BB2" # Shining Color[7]="0x0BB1" # Spectral Color[8]="0x0BB0" # Iguana Color[9]="0x0BAF" # Star Color[10]="0x0001" # Color[11]="" # Name[0]="Iron" Name[1]="Bronze" Name[2]="Copper" Name[3]="Silver" Name[4]="Gold" Name[5]="Blood rock" Name[6]="Shining" Name[7]="Spectral" Name[8]="Iguana" Name[9]="Star" Name[10]="0x0000" Name[11]="" if uo.getglobal("Reload")=="Yes" then FOR i=1 to 9 uo.findtype("ItemBB",Color[i],"Box") uo.say(Name[i]+" = "+str(uo.getQuantity("finditem"))) wait(200) NEXT uo.setglobal("Reload","No") end if uo.say("*-*-*-*-*-*-*-*") uo.findtype("Pickaxe",-1,"Box_from_instruments") uo.say("Pickaxe = "+str(uo.findcount())) uo.findtype("0x0e21",-1,"Box_from_instruments") uo.say("Bandages = "+str(uo.getQuantity("finditem"))) uo.say("*-*-*-*-*-*-*-*") end sub
|