| Yoko http://forum.yoko.com.ua/ |
|
| Помогите со скриптом http://forum.yoko.com.ua/viewtopic.php?f=17&t=15363 |
Page 1 of 1 |
| Author: | dertor [ 2009-12-14 18:56:42 ] |
| Post subject: | Помогите со скриптом |
Дайте пожалуйста скрипт на миннг чтоб он относил метал в лодку плис очень нужно пытался переделать с ламбера вот что вышло но он постоянно глючит var command_use = 0 var wood_needed = 1 var near_lodka_x = 2017 #указываем координаты с которых будем заходить на лодку .where var near_lodka_y = 425 var on_board_x = 2017 #указываем координаты где надо сбрасывать дерево .where var on_board_y = 428 var id_keys = "0x5F0972D5" #ИД ключей в бек паке var id_trap = "0x5FA8F468" #ИД Трапа var opt_weight = 300 sub main() uo.exec ("terminate reconnector") uo.exec ("exec reconnector") uo.deletejournal() uo.exec ("set finddistance 1") uo.exec ("useobject backpack") var i,b,f,tile,xx,yy,j dim x[50] dim y[50] dim t[50] dim a[50] start: a[1] = "1343 1935 319 0" # ????????? ?????????? ???????? ? ??????? ,infotile a[2] = "1339 1937 319 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[3] = "1342 1933 318 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[4] = "1341 1933 317 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[5] = "1340 1935 316 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[6] = "1339 1931 317 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[7] = "1343 1931 315 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[8] = "1340 1933 314 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[9] = "1342 1929 314 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[10] = "1339 1930 313 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[11] = "1339 1932 312 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[12] = "1341 1939 323 0" # ????????? ?????????? ???????? ? ??????? ,infotie a[13] = "1342 1937 321 0" # ????????? ?????????? ???????? ? ?????? lodka() for j = 1 to 50 if a[j] then b = a[j] i = 1 t[j] = b[0] while b[i] <> " " t[j] = t[j] + b[i] i = i + 1 wend i = i + 1 x[j] = b[i] while b[i] <> " " x[j] = x[j] + b[i+1] i = i + 1 wend i = i + 1 y[j] = b[i] while b[i] <> " " y[j] = y[j] + b[i+1] i = i + 1 wend xx = val(x[j]) yy = val(y[j]) tile = val(t[j]) uo.print("Tile: "+t[j]+" X: "+x[j]+" Y: "+y[j]) uo.print("Tree number "+str(j)) rubka(xx,yy,tile) endif next goto start: end sub sub rubka(xx,yy,tile) uo.deletejournal() var a,b,c uo.print (str(xx)+" "+str(yy)) var D = 1 var T = "True" var x = xx var y = yy GoToTile(x,y,d,t) c = uo.timer() uo.exec ("waittargettile "+str(tile)+" "+str(xx)+" "+str(yy)+" 0") wait (500) uo.exec ("usetype 0x0E85") #,addtype topor repeat If UO.InJournal("your tool broke") then uo.exec ("usetype 0x0E85") endif wait (500) until uo.injournal("There is no more ore here to mine") or uo.timer() > c + 1800 or uo.injournal("That is too far away") vibros() wait(600) a = uo.getx() b = uo.gety() lodka() end sub sub lodka() var x = near_lodka_x var y = near_lodka_y var prec = 0 if uo.weight > opt_weight or command() == 1 then var d,t var f = 0 d = 1 t = "True" gototile(x,y,d,t) while uo.getdistance(id_trap) > 1 uo.exec ("useobject "+id_trap+";useobject "+id_trap) ### ID trapa wait (1000) wend vibros() if command() == 1 then uo.print("terminate") f = 1 endif hungry() if f == 1 then uo.exec ("closeuo") uo.exec("terminate all") endif while uo.getdistance(id_trap) < 2 uo.exec ("useobject "+id_trap) gotoxy(uo.getx(id_trap),uo.gety(id_trap),0) wait (1500) wend endif end sub sub vibros() uo.exec ("set finddistance 1") var i,l var type = "0x19B9" var container, color dim derevo[17] derevo[1] = "0x0602" # Copper derevo[2] = "0x0362" # derevo[3] = "0x010D" # derevo[4] = "0x0094" # derevo[5] = "0x01B0" # derevo[6] = "0x01A2" # derevo[7] = "0x0026" # derevo[8] = "0x00CB" # derevo[9] = "0x094A" # derevo[10] = "0x092B" # derevo[11] = "0x0931" # derevo[12] = "0x093F" # derevo[13] = "0x0074" # derevo[14] = "0x09EF" # derevo[15] = "0x006F" # derevo[16] = "0x0119" # derevo[17] = "0x000B" # var nugnoe = wood_needed # vibros ne nugnogo dereva if nugnoe > 1 then for i = 1 to nugnoe - 1 color = derevo[i] l = 0 container = "ground" drop(type,color,l,container) next endif # skladivanie nugnogo dereva if uo.getx() == on_board_x and uo.gety() == on_board_y then uo.print ("Dropping") for i = 1 to 17 if uo.count(type) <> 0 then color = derevo[i] l = 1 container = "ground" drop(type,color,l,container) wait (750) endif next endif if uo.count("0x097B") <= 1 then uo.exec ("findtype 0x097B -1 ground") uo.exec ("moveitem finditem 10 backpack") endif end sub sub drop(type,color,l,container) var serial=0 if l == 1 then UO.FindType(type,color,"backpack") if uo.findcount() <> 0 then serial=UO.GetSerial("finditem") UO.Ignore(serial) if container=="ground" then UO.FindType(type,color,"ground") if UO.FindCount()>0 then if uo.getquantity("finditem") < 59000 then UO.MoveItem(serial,"0","finditem","0","0","0") else UO.DropHere(serial) endif else uo.ignore ("finditem") UO.DropHere(serial) endif else UO.MoveItem(serial,"0",container) endif wait(1000) endif else uo.findtype(type,color,"backpack") if uo.findcount() <> 0 then uo.exec ("drop 0 0 0 0 finditem") wait (500) endif wait (500) endif UO.IgnoreReset() end sub var need_hungry_level = 1 sub hungry() var i,htest,htime,htest2 dim a[11] a[0] = "You are absolutely stuffed" a[1] = "You are stuffed" a[2] = "You aren't hungry at all" a[3] = "You are a little hungry" a[4] = "You are somewhat hungry" a[5] = "You are REALLY hungry" a[6] = "Your stomash hurts" a[7] = "Your stomash hurts and you feel dizzy" a[8] = "You are starving" a[9] = "You are almost dying of hunger" a[10] = "You are DYING of hunger" htest = 0 repeat uo.deletejournal() uo.serverprint(".hungry") wait (1000) i = 0 htest2 = 0 if uo.count("0x097B") > 0 then repeat if uo.injournal(a[i]) then if (i - need_hungry_level) > 0 then uo.exec("usetype 0x097B") repeat wait (50) until uo.injournal("Tasty!") or uo.injournal("Good!") or uo.injournal("Yum!") or uo.injournal("I am already") or uo.injournal("123") htest2 = 1 else htest = 1 htest2 = 1 endif endif i = i + 1 until i == 11 or htest2 == 1 else htest = 1 endif until htest == 1 endsub #При работе должна быть "отжата" кнопка NumLock Var MoveDelay=200 # Промежуток между шагами Var MoveNumber=3 # Количество шагов при смене дислокации Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие препятствия - увеличить. 0.172 - сбаланчированный. Sub Perp(Dir) Var D D=Dir If Dir==1 Then D=3 EndIf If Dir==2 Then D=4 EndIf If Dir==3 Then D=-1 EndIf If Dir==4 Then D=-2 EndIf If Dir==-1 Then D=-3 EndIf If Dir==-2 Then D=-4 EndIf If Dir==-3 Then D=1 EndIf If Dir==-4 Then D=2 EndIf RETURN D EndSub Sub MoveOnce(Dir,Del,Rev) Var Num If Rev Then Num=MoveNumber+1 Else Num=MoveNumber EndIf If (Num>0) and (Dir<>0) Then If Dir==1 Then UO.Press(38,Num,Del) EndIf If Dir==2 Then UO.Press(33,Num,Del) EndIf If Dir==3 Then UO.Press(39,Num,Del) EndIf If Dir==4 Then UO.Press(34,Num,Del) EndIf If Dir==-1 Then UO.Press(40,Num-1,Del) EndIf If Dir==-2 Then UO.Press(35,Num,Del) EndIf If Dir==-3 Then UO.Press(37,Num,Del) EndIf If Dir==-4 Then UO.Press(36,Num,Del) EndIf If Rev Then If Dir<>-1 Then UO.Press(40,1,Del) EndIf EndIf EndIf EndSub Sub GetQDir(x,y) Var J=0 If X==0 Then J=1 Else If (Y/X)<ep Then J=3 Else If (X/Y)<ep Then J=1 Else J=2 EndIf EndIf EndIf RETURN J EndSub sub GetDir(myx,myy,ox,oy) Var I,J J=0 Var X=ox-myx Var Y=oy-myy I=GetQDir(Abs(X),Abs(Y)) If X>=0 Then If Y>=0 Then If I==1 Then J=-2 Else If I==2 Then J=-1 Else If I==3 Then J=4 EndIf EndIf EndIf Else If I==1 Then J=2 Else If I==2 Then J=3 Else If I==3 Then J=4 EndIf EndIf EndIf EndIf Else If Y>=0 Then If I==1 Then J=-2 Else If I==2 Then J=-3 Else If I==3 Then J=-4 EndIf EndIf EndIf Else If I==1 Then J=2 Else If I==2 Then J=1 Else If I==3 Then J=-4 EndIf EndIf EndIf EndIf EndIf RETURN J endsub sub abs(a) Var b If a<0 Then b=-a Else b=a endif return b endsub Sub PermResend() Var Mn=9 Repeat UO.Resend() Wait(MoveDelay*Mn) Until (1>2) EndSub sub max(A,B) Var C If A>B Then C=A Else C=B EndIf Return C EndSub sub GetDistance(X,Y) return max(abs(X-uo.getx()),abs(Y-uo.gety())) endsub sub GoToTile(OX,OY,N,S) var myx, myy, MD, J var Lx1 ,Ly1 var Lx2 ,Ly2 var Sx ,Sy var T var Des=N J=1 MD=MoveDelay*1.5 myx=uo.getx() myy=uo.gety() MoveOnce(GetDir(uo.getx(),uo.gety(),ox,oy),MD,False) Sx=0 Sy=0 Lx1=uo.getx()/2 Ly1=uo.gety()/2 Lx2=Lx1/2 Ly2=Ly1/2 T=UO.Timer() If (GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N) Then UO.Exec('exec PermResend') EndIf While ((GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N)) and (OX>=0) and (OY>=0) If ((UO.Timer()-T)*15>MoveDelay) Then T=UO.Timer() UO.Print(Str(uo.getx())+' '+Str(uo.gety())+' '+Str(ox)+' '+Str(oy)+' '+Str(GetDir(uo.getx(),uo.gety(),ox,oy))+' '+Str(T)) Lx2=Lx1 Ly2=Ly1 Lx1=myx Ly1=myy myx=uo.getx() myy=uo.gety() endIf MD=MoveDelay If ((OX-uo.getx())*(OX-uo.getx())+(OY-uo.gety())*(OY-uo.gety())>0) Then MD=MD*3/GetDistance(ox,oy) EndIf wait(MD) If GetDistance(OX,OY)>Des Then MoveOnce(GetDir(uo.GetX(),uo.GetY(),ox,oy),MD,False) Else If S Then If GetDistance(OX,OY)<Des Then If GetDistance(OX,OY)<>0 Then MoveOnce(GetDir(ox,oy,uo.GetX(),uo.GetY()),MD,False) Else MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False) EndIf EndIf EndIf EndIf If GetDistance(OX,OY)<>Des Then If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then J=1 EndIf J=J+1 UO.Resend() Sx = uo.getx() Sy = uo.gety() Stun(ox,oy,J) EndIf EndIf Wend UO.Exec('terminate PermResend') endsub Sub Stun(X,Y,N) Var I Var myx Var myy myx = uo.getx() myy = uo.gety() For I=1 to N MoveOnce(perp(GetDir(myx,myy,x,y)),MoveDelay,False) Next Wait(MoveDelay) UO.Resend() If (myx==uo.getx()) and (myy==uo.gety()) Then For I=1 to N MoveOnce(-perp(GetDir(myx,myy,x,y)),MoveDelay,False) Next Wait(MoveDelay) UO.Resend() EndIf If (myx==uo.getx()) and (myy==uo.gety()) Then For I=1 to N MoveOnce(-GetDir(myx,myy,x,y),MoveDelay,False) Next Wait(MoveDelay) Stun(x,y,N) EndIf EndSub sub NearTile(Obj,Des) var ox, oy, myx, myy, MD, J var Lx1 ,Ly1 var Lx2 ,Ly2 var Sx ,Sy var T UO.Click(Obj) MD=MoveDelay*1.5 ox=uo.GetX(Obj) oy=uo.GetY(Obj) J=1 myx = uo.getx() myy = uo.gety() Sx=0 Sy=0 Lx1=myx/2 Ly1=myy/2 Lx2=Lx1/2 Ly2=Ly1/2 T=UO.Timer() If not (UO.GetDistance(Obj)==Des) Then UO.Exec('exec PermResend') EndIf While not (UO.GetDistance(Obj)==Des) ox=uo.GetX(Obj) oy=uo.GetY(Obj) If ((UO.Timer()-T)*15>MoveDelay) Then T=UO.Timer() UO.Print('Go to '+Str(Des)+' to '+UO.GetName(Obj)) UO.Print(Str(UO.GetDistance(Obj))) UO.Print(Str(uo.GetX())+' '+Str(uo.GetY())+' '+Str(uo.GetX(Obj))+' '+Str(uo.GetY(Obj))+' '+Str(GetDir(uo.GetX(),uo.GetY(),uo.GetX(Obj),uo.GetY(Obj)))+' '+Str(T)) Lx2=Lx1 Ly2=Ly1 Lx1=myx Ly1=myy myx=uo.getx() myy=uo.gety() endIf MD=MoveDelay*1.5 If (UO.GetDistance(Obj)>0) Then MD=MD/UO.GetDistance(Obj) EndIf wait(MD) If UO.GetDistance(Obj)>Des Then MoveOnce(GetDir(uo.GetX(),uo.GetY(),uo.GetX(Obj),uo.GetY(Obj)),MD,False) Else If UO.GetDistance(Obj)<Des Then If UO.GetDistance(Obj)<>0 Then MoveOnce(GetDir(uo.GetX(obj),uo.GetY(obj),uo.GetX(),uo.GetY()),MD,False) Else MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False) EndIf EndIf EndIf If UO.GetDistance(Obj)<>Des Then If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then J=1 EndIf J=J+1 UO.Resend() Sx = uo.getx() Sy = uo.gety() Stun(uo.GetX(Obj),uo.GetY(Obj),J) EndIf EndIf Wend UO.Exec('terminate PermResend') endsub var max_wait = 1 #(v secundax) 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("Lag") 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(10) 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>max_wait then uo.print("Can not reach location!") return end if else ld=dx end if if mx==x then if my==y then return endif if my>y then #UO.Print("UR") UO.Press(33) goto start endif #UO.Print("DL") UO.Press(35) goto start end if if mx<x then if my>y then #UO.Print("R") UO.Press(39) goto start endif if my==y then #UO.Print("DR") UO.Press(34) goto start endif #UO.Print("D") UO.Press(40) goto start end if if my<y then #UO.Print("L") UO.Press(37) goto start endif if my==y then #UO.Print("LU") UO.Press(36) goto start endif #UO.Print("U") UO.Press(3 goto start end sub ################################################################# sub command() if command_use == 0 then if uo.injournal("go to log out") then uo.serverprint("Logouting...") return 1 endif if uo.injournal("wait here") then repeat wait (1000) until uo.injournal("continue script") endif if uo.injournal("openup") then if uo.getdistance(id_trap) > 1 then gototile(near_lodka_x,near_lodka_y,1,"True") endif var trap = id_trap var kl = id_keys uo.exec ("waittargetobject "+trap+"; useobject "+kl) uo.serverprint ("Come in on board my friends.") var t = uo.timer() repeat wait (6000) uo.exec ("msg .c Hey, man, don't forget to close my ship.") until uo.injournal("closedup") or uo.timer() > t + 1200 if uo.timer() > t + 120 then uo.exec ("msg .c Autoclosing") endif uo.exec ("waittargetobject "+trap+"; useobject "+kl) uo.serverprint ("Closed.") uo.exec ("showjournal 100") endif if uo.injournal("speak to you") then wait (3000) uo.textprint("SPEAKING TO ME:") uo.exec ("showjournal 100") endif return 0 endif endsub ################################################################################ ############ 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 sub Reconnector() var ReconnectTime, RFlag, DisconnectTime ReconnectTime = '0' RFlag = 1 Repeat While (UO.ObjAtLayer('Bpack') == '') if RFlag Then ReconnectTime = MakeTime() RFlag = 0 endif Wait(15000) # WorldSave Protection if (UO.ObjAtLayer('Bpack') == '') then DisconnectTime = Maketime() UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.LDblClick(357,164) UO.LClick(616,459) Wait(3000) endif WEnd Wait(3000) if (RFlag == 0) and (ReconnectTime <> '0') Then UO.Exec('terminate main') UO.Exec('exec main') UO.TextOpen() UO.TextPrint('Disconnected '+DisconnectTime) UO.TextPrint('Reconnected '+Maketime()) RFlag = 1 ReconnectTime = '0' endif Until false end sub sub test() uo.textprint(str(uo.asmmapgettile(2482,3979,0))) endsub он действует так в пак к чару нужно положить кучю кирок и врубть скрипт он идет копает приносит метал скидывает и начинает идти опять и выбивает ошибку еще в нем глюк то что он кода возврощяется копать и копает на том месте где нет митала он все равно ждет то время что и выкапывает и не хочет брать кирки с коробля с пола по этому их нужно в пак ложит помогите или скиньте кокойто нормальный с лодкой.За ранее благодарен |
|
| Author: | dertor [ 2009-12-15 18:04:34 ] |
| Post subject: | |
Неужели так сложно помочь |
|
| Author: | Mirage [ 2009-12-15 19:03:26 ] |
| Post subject: | |
dertor wrote: Неужели так сложно помочь
http://nmy.id.lv/codesweeper.htm http://forum.yoko.com.ua/viewtopic.php?t=13049 и помогут |
|
| Page 1 of 1 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|