преследование нпц

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
колхоз
Posts: 34
Joined: 2004-06-27 19:59:56

преследование нпц

Post by колхоз »

Реально ли на инжекте сделать что-бы чар ходил за каким-то нпц?
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Re: преследование нпц

Post by Sfagnum »

Lobster wrote:Реально ли на инжекте сделать что-бы чар ходил за каким-то нпц?
да ;)
колхоз
Posts: 34
Joined: 2004-06-27 19:59:56

Re: преследование нпц

Post by колхоз »

Sfagnum wrote:
Lobster wrote:Реально ли на инжекте сделать что-бы чар ходил за каким-то нпц?
да ;)
Кто знает, помогите пожалуйста 8)
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Re: преследование нпц

Post by Sfagnum »

Lobster wrote:
Sfagnum wrote:
Lobster wrote:Реально ли на инжекте сделать что-бы чар ходил за каким-то нпц?
да ;)
Кто знает, помогите пожалуйста 8)
берёшь любую понравившуюся тебе ходилку и к ней привязываешь опрос координат НПЦ в цикле, и эти координаты передаёшь ходилке.
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Выглядит убого, но работает в поле неплохо - в лесу не проверял. Я так догонял элемов в вип шахте...
запускать: walkn(0,0.'серийник того нпс')

Code: Select all

sub GoW()
   VAR walkwait=300
   VAR x,y,dir=6
   VAR key=36 ; Home key
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetX()+1==x Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoN()
   VAR walkwait=300
   VAR x,y,dir=0
   VAR key=33 ; PgUp
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetY()+1==y Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoE()
   VAR walkwait=300
   VAR x,y,dir=2
   VAR key=34 ; PgDown
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetX()-1==x Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoS()
   VAR walkwait=300
   VAR x,y,dir=4
   VAR key=35 ; End
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetY()-1==y Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoWN()
   VAR walkwait=300
   VAR x,y,dir=7
   VAR key=38 ; UpArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


sub GoNE()
   VAR walkwait=300
   VAR x,y,dir=1
   VAR key=39 ; RightArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


sub GoSE()
   VAR walkwait=300
   VAR x,y,dir=3
   VAR key=40 ; DownArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


sub GoSW()
   VAR walkwait=300
   VAR x,y,dir=5
   VAR key=37 ; LeftArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


#==============================================================
#  WalkN(X,Y,Serial) - char is walking by dX and dY step
#                sub using Home, End, PgUp, PgDown keys
#                d'not rebind this key from default action!
#     walkwait - delay after keypress
#--------------------------------------------------------------
sub WalkN(x,y,Target)
   VAR i
   VAR dx,dy,Exit=0
   
   While Exit<>1   
      If Target<>"" Then
         dx=UO.GetX(Target)-UO.GetX()
         dy=UO.GetY(Target)-UO.GetY()
;         UO.Print("Target locked!")
         If UO.GetDistance(Target)<2 Then
            Exit=1
         Endif
      Else
         dx=x-UO.GetX()
         dy=y-UO.GetY()
         If dx==0 AND dy==0 Then
            Exit=1
         Endif

      Endif
   
      If dx<>0 AND dy<>0 Then
         If dx>0 AND dy>0 Then
            GoSE()
         Endif

         If dx>0 AND dy<0 Then
            GoNE()
         Endif

         If dx<0 AND dy>0 Then
            GoSW()
         Endif

         If dx<0 AND dy<0 Then
            GoWN()
         Endif

      Endif
   
      If dx<>0 AND dy==0 Then
         If dx>0 Then
            GoE()
         Endif
         
         If dx<0 Then
            GoW()
         Endif
      Endif


      If dx==0 AND dy<>0 Then
         If dy>0 Then
            GoS()
         Endif
         
         If dy<0 Then
            GoN()
         Endif
      Endif
   Wend
end sub

#==============================================================
#  CheckLag() - click on backpack and awaiting "backpack"
#               message in journal.
#
#  Journal has been deleted!!!
#--------------------------------------------------------------
sub CheckLag()
   UO.DeleteJournal()
   UO.Click('backpack')

   repeat
      wait(500)
   until UO.InJournal('backpack')
end sub
Post Reply