Ищу новую ходилку

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Ищу новую ходилку

Post by Ururu »

Это ходилка Sergious

Code: Select all

Sub GoToTile( OX, OY, N, S )
У меня ее вариант редактированый Edred
Есть у кого более свежая?
Шард [b]Антарес[/b]
[color=blue][b]Ururu[/b][/color]
Question_GimFlex
Posts: 188
Joined: 2007-03-24 08:12:51

Post by Question_GimFlex »

:lol:
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Post by Ururu »

Что смешного?
Шард [b]Антарес[/b]
[color=blue][b]Ururu[/b][/color]
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

то что ты выложил это не ходилка
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Post by Ururu »

Я привел ее пример. Вернее то что вставляется в скрипт. Ходилок не так уж и много и их можно отличить.

Выкладываю полный вариант.

Code: Select all

 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 
 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 
 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 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 
 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 
 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 
 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 
 Sub abs( a ) 
   VAR b 
   If a < 0 Then 
      b = -a 
   Else 
      b = a 
   endif 
   return b 
 endsub 
 Sub PermResend() 
   Var Mn = 9 
   VAR MoveDelay = 100 
   Repeat 
      UO.Resend() 
      Wait( MoveDelay * Mn ) 
   Until ( 1 > 2 ) 
 endsub
Шард [b]Антарес[/b]
[color=blue][b]Ururu[/b][/color]
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Post by Ururu »

все еще нужна ходилка =)
Шард [b]Антарес[/b]
[color=blue][b]Ururu[/b][/color]
Question_GimFlex
Posts: 188
Joined: 2007-03-24 08:12:51

Post by Question_GimFlex »

а чем эта не устраивает :?
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Post by Ururu »

Обход препятствий. А точнее, в одну сторону пытается обойти препятствие.

Вот (рисую как могу):
Чар С пытается пройти. На пути только 2 прохода (А и В).

Code: Select all

=====**А**=======================**В**======
.......................С......................
Идет в точку D

Code: Select all

=====**А**=======================**В**======
..........D...........С......................
Немного не дотянул до прохода, пытается теперь обойти его справа. Идет такой же путь справа (расстояние неизменно). Идет в точку F.

Code: Select all

=====**А**=======================**В**======
..........D...........С..F..................
Получается что пройдя 5 шагов(например) в лево, чар не проходит и идет вправо (тоже расстояние). Тоесть возвращается в исходную точку. А значит в точку B он и не пытается пройти.


Скрипт отличный, но очень грузит инжу. Чара практически невозможно заблокировать, но при двух или трех окнах крашит =)
Шард [b]Антарес[/b]
[color=blue][b]Ururu[/b][/color]
Question_GimFlex
Posts: 188
Joined: 2007-03-24 08:12:51

Post by Question_GimFlex »

если капать рубить то ююзай саваджа тож ниче скоко помню всегда его юзаю
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Эдред где то постил ходилку под изю, о ней говарил что то в духе "из тринсика до бриты дойдет без проблем".
Kazoo
Posts: 173
Joined: 2004-04-03 18:39:28
Contact:

Post by Kazoo »

я на изи уже долго сижу, и нечево луче етой ходилки, я не видел..
http://www.easyuo.com/forum/viewtopic.p ... bmpathfind
11
Post Reply