Yoko

All sides of Injection
It is currently 2025-11-13 14:34:59

All times are UTC+02:00




Post new topic  Reply to topic  [ 11 posts ] 
Author Message
PostPosted: 2007-03-30 18:03:32 
Offline
User avatar

Joined: 2007-02-21 20:15:57
Posts: 479
Это ходилка Sergious
Code:
Sub GoToTile( OX, OY, N, S )

У меня ее вариант редактированый Edred
Есть у кого более свежая?

_________________
Шард Антарес
Ururu


Top
   
 Post subject:
PostPosted: 2007-03-30 18:29:50 
Offline
User avatar

Joined: 2007-03-24 08:12:51
Posts: 188
:lol:


Top
   
 Post subject:
PostPosted: 2007-03-30 19:03:28 
Offline
User avatar

Joined: 2007-02-21 20:15:57
Posts: 479
Что смешного?

_________________
Шард Антарес

Ururu


Top
   
 Post subject:
PostPosted: 2007-03-30 23:12:37 
Offline
Expert!
User avatar

Joined: 2005-05-20 20:30:10
Posts: 548
то что ты выложил это не ходилка


Top
   
 Post subject:
PostPosted: 2007-03-30 23:57:08 
Offline
User avatar

Joined: 2007-02-21 20:15:57
Posts: 479
Я привел ее пример. Вернее то что вставляется в скрипт. Ходилок не так уж и много и их можно отличить.

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

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
 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

_________________
Шард Антарес

Ururu


Top
   
 Post subject:
PostPosted: 2007-05-16 14:12:49 
Offline
User avatar

Joined: 2007-02-21 20:15:57
Posts: 479
все еще нужна ходилка =)

_________________
Шард Антарес

Ururu


Top
   
 Post subject:
PostPosted: 2007-05-16 14:34:09 
Offline
User avatar

Joined: 2007-03-24 08:12:51
Posts: 188
а чем эта не устраивает :?


Top
   
 Post subject:
PostPosted: 2007-05-16 14:56:14 
Offline
User avatar

Joined: 2007-02-21 20:15:57
Posts: 479
Обход препятствий. А точнее, в одну сторону пытается обойти препятствие.

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

Code:
=====**А**=======================**В**======
.......................С......................


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

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


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


Скрипт отличный, но очень грузит инжу. Чара практически невозможно заблокировать, но при двух или трех окнах крашит =)

_________________
Шард Антарес

Ururu


Top
   
 Post subject:
PostPosted: 2007-05-16 15:01:39 
Offline
User avatar

Joined: 2007-03-24 08:12:51
Posts: 188
если капать рубить то ююзай саваджа тож ниче скоко помню всегда его юзаю


Top
   
 Post subject:
PostPosted: 2007-05-16 15:39:45 
Offline
User avatar

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


Top
   
 Post subject:
PostPosted: 2007-05-17 21:45:28 
Offline
User avatar

Joined: 2004-04-03 18:39:28
Posts: 173
я на изи уже долго сижу, и нечево луче етой ходилки, я не видел..
http://www.easyuo.com/forum/viewtopic.p ... bmpathfind

_________________
11


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 11 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited