| Yoko http://forum.yoko.com.ua/ |
|
| Ходилка с минингом (помощь) http://forum.yoko.com.ua/viewtopic.php?f=3&t=14220 |
Page 1 of 1 |
| Author: | Franco Nero [ 2008-12-23 09:43:25 ] |
| Post subject: | Ходилка с минингом (помощь) |
Как мне обьеденить вот эту ходилку с моим минингом *? Code: Sub GoToTile( OX, OY, N, S ) Вот мининг Code: sub main()[/code] |
|
| Author: | Kynep [ 2008-12-23 09:49:28 ] |
| Post subject: | |
Руками. Пока правильно не оформишь свои две темы, отвечать не будет ни кто. |
|
| Author: | Franco Nero [ 2008-12-23 11:02:58 ] |
| Post subject: | |
Как оформить в чем ашибка *? или где написано как правильно оформлять. |
|
| Author: | Kynep [ 2008-12-23 11:14:21 ] |
| Post subject: | |
Franco Nero wrote: Как оформить в чем ашибка *? или где написано как правильно оформлять.
http://forum.yoko.com.ua/viewtopic.php?p=15186#15186 |
|
| Author: | Franco Nero [ 2008-12-23 13:32:38 ] |
| Post subject: | Re: Ходилка с минингом*? |
Franco Nero wrote: Как мне обьеденить вот эту ходилку с моим минингом *?
[/code] 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 VAR MoveDelay = 100 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() 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 ; ; ============ MOVEONCE === ; Процедура MoveOnce - хождение в определённую сторону ; Направления: ; Система направлений по клавишам Нумпада ; 8 = 1 | 2 = -1 ; 9 = 2 | 1 = -2 ; 6 = 3 | 4 = -3 ; 3 = 4 | 7 = -4 ; ; Такая система позволяет с лёгкостью получать направление, обратное ; данному... ; Sub MoveOnce( Dir, Del, Rev ) VAR Num Var MoveNumber = 1 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 ; ; ============== GETDIR === ; Функция GetDir возвращает направление, по которому надо идти ; к координате ; 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 ; ; =============== GETQDIR === ; ; Sub GetQDir( x, y ) VAR Ep = 0.172 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 ; ; ============== GETDISTANCE === ; Функция GetDistance возвращает расстояние до координат ; (как UO.GetDistance - до объекта) ; ; Почему так - потому что учим математику ; Sub GetDistance( X, Y ) VAR A, B, C A = abs( X - UO.GetX() ) B = abs( Y - UO.GetY() ) If A > B Then C = A Else C = B EndIf Return C endsub ; ; ============= PERP === ; Функция Perp возвращает направление, перпендикулярное введённому ; Sub Perp( Dir ) VAR 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 ; ; =============== STUN === ; Обход препятствий ; Sub Stun( X, Y, N ) VAR I VAR myx VAR myy VAR MoveDelay = 100 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 ; ; ============= ABS === ; Убирает знак минуса в отрицательных числах ; Sub abs( a ) VAR b If a < 0 Then b = -a Else b = a endif return b endsub ; ; ============== PERMRESEND === ; Sub PermResend() Var Mn = 9 VAR MoveDelay = 100 Repeat UO.Resend() Wait( MoveDelay * Mn ) Until ( 1 > 2 ) Endsub [/code] Вот мининг sub main() UO.Print("Hello from function MAIN") end sub sub tohid() repeat UO.DeleteJournal() UO.UseSkill('Hiding') wait (3000) until NOT UO.InJournal("see") end sub sub main() var mx, my, mz, i, j # ?????????? mx = UO.GetX("self") # ????? ???? my = UO.GetY("self") # mz = UO.GetZ("self") # UO.DeleteJournal() # ??????? ?????? for i = mx-4 to mx+4 # ???? ?????? for j = my -4 to my+4 # ???? ?????? UO.Print("Now Mining In: "+str(mx-i)+" "+str(my-j)) # while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Iron") and not UO.InJournal("Rusty") and not UO.InJournal("Old Copper") and not UO.InJournal("Dull Copper") and not UO.InJournal("Copper") #??? ????? ?? ?????? ?? ???????? ?? ?????? ??? ?? ??????? ?????? ????. ?????? ???????? ???????.(??????? ??? ????? ?????.) UO.DeleteJournal() UO.Waittargettile("1341", str(i), str(j), str(mz)) UO.Usetype("Shovel") while not UO.InJournal("You put") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock") wait (100) wend if not UO.Hidden("self") then tohid() end if if UO.Weight > 770 then return else wend UO.DeleteJournal() next next end sub |
|
| Author: | Franco Nero [ 2008-12-23 13:39:03 ] |
| Post subject: | |
Исправил , жду помощи. |
|
| Page 1 of 1 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|