Yoko

All sides of Injection
It is currently 2024-04-28 09:53:15

All times are UTC+02:00




Post new topic  Reply to topic  [ 16 posts ] 
Author Message
PostPosted: 2011-01-25 19:54:55 
Offline

Joined: 2010-10-29 15:20:30
Posts: 16
Подумал создать бота-помощника для пвп, который бы ходил за основным чаром и творил всякие полезные дела. собственно с полезными делами думаю проблем нет, - можно что угодно наставить. а вот с ходилкой всё не слишком хорошо получается - идеального синхрона нет. можно ли сделать такую ходилку, которая бы ходила за основным чаром по пятам не отставая ни на шаг по крайней мере на прямой дистанции?
спасибо

ps: я использовал ходилку, взятую с этого форума.(кажется её писал ВЕТЕРАН), только убавил ожидалки и убрал чеклаг.. выложу её сюда
Quote:
sub WalkN(x,y,Target) ########################################## Ходилка
VAR LastTimer
LastTimer=UO.Timer()
VAR i
VAR dir,ldir,rdir,key,olddir
VAR dx,dy,Exit=0
VAR CacheLimit=9,CacheIndex="Text"
DIM CacheX[10], CacheY[10]

CacheX[0]="Test"
While Exit<>1
If Target<>"" Then
dx=UO.GetX(Target)-UO.GetX()
dy=UO.GetY(Target)-UO.GetY()

If UO.GetDistance(Target)<2 OR LastTimer+200<UO.Timer() Then
wait(500)
Exit=1
Endif
Else
dx=x-UO.GetX()
dy=y-UO.GetY()
If dx==0 AND dy==0 OR LastTimer+50<UO.Timer() Then

Exit=1
Endif

Endif

If dx<>0 AND dy<>0 Then
If dx>0 AND dy>0 Then ; GoSE
dir=3
ldir=2
rdir=4
key=40 ; DownArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=0
rdir=1
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=5
rdir=6
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif

If dx>0 AND dy<0 Then ; GoNE
dir=1
ldir=0
rdir=2
key=39 ; RightArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=6
rdir=7
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif

If dx<0 AND dy>0 Then ; GoSW
dir=5
ldir=4
rdir=6
key=37 ; LeftArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==6 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 AND dy<0 Then ; GoWN
dir=7
ldir=6
rdir=0
key=38 ; UpArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif

If dx<>0 AND dy==0 Then
If dx>0 Then ; GoE
dir=2
key=34 ; PgDown
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoNE
dir=1
ldir=1
rdir=0
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif

If dx<0 Then ; GoW
dir=6
key=36 ; Home key
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif

If dx==0 AND dy<>0 Then
If dy>0 Then ; GoS
dir=4
key=35 ; End
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=6
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif

If dy<0 Then ;GoN
dir=0
key=33 ; PgUp
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoWN
dir=7
ldir=7
rdir=6
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
Wend
end sub


sub StepEdit(x,y,dir,key)
VAR walkwait=10
VAR ErrLevel=0
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then

Endif
Endif
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then

If x==UO.GetX() AND y==UO.GetY() Then
;zatik
ErrLevel=1
Endif
Endif
Return ErrLevel
end sub


sub StepArrow(x,y,dir,ldir,rdir,key)
VAR walkwait=10
VAR ErrLevel=0
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then

Endif
Endif

If UO.GetX()==x AND UO.GetY()==y Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then

If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
; zatik
ErrLevel=1
Endif
Endif
Endif
Return ErrLevel
end sub


Top
   
PostPosted: 2011-01-25 20:10:48 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
Я вот в одной из недавних тем увидел вот эту догонялку и она мне вполне понравилась тем, как работает:

Code:
sub chase()
   VAR target
   If UO.Targeting() Then
      UO.CancelTarget()
   Endif
   UO.Print( 'Please, choice of enemy:' )
   UO.AddObject( 'enemy' )
   While UO.Targeting()
      wait(100)
   Wend
   target = uo.getserial('enemy')
   while not uo.dead() and target<>""
      if UO.GetDistance(target)>1 then
         Chaser(target)
      endif
      wait(100)
   wend
end sub
Sub Chaser(Target)
   VAR dx, dy
   While uo.getdistance(target) >1
      If Target<>"" and uo.getdistance(target) >1 and not uo.dead() Then
         dx=UO.GetX(Target)-UO.GetX()
         dy=UO.GetY(Target)-UO.GetY()
         If UO.GetDistance(Target)<2 Then
            return
         Endif
      else
         Return
      Endif
      If dx<>0 AND dy<>0 Then
         If dx>0 AND dy>0 Then
            UO.Press(40) ; DownArrow
         Endif
         If dx>0 AND dy<0 Then
            UO.Press(39) ; RightArrow
         Endif
         If dx<0 AND dy>0 Then
            UO.Press(37) ; LeftArrow
         Endif
         If dx<0 AND dy<0 Then
            UO.Press(38) ; UpArrow
         Endif
      Endif
      If dx<>0 AND dy==0 Then
         If dx>0 Then
            UO.Press(34) ; PgDown
         Endif
         If dx<0 Then
            UO.Press(36) ; Home key
         Endif
      Endif
      If dx==0 AND dy<>0 Then
         If dy>0 Then
            UO.Press(35) ; End
         Endif
         If dy<0 Then
            UO.Press(33) ; PgUp
         Endif
      Endif
   Wend
end sub


Top
   
PostPosted: 2011-01-25 20:32:07 
Offline

Joined: 2010-10-29 15:20:30
Posts: 16
пока что не попробовал, но попробую. спасибо


Top
   
PostPosted: 2011-01-25 22:38:04 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
один в один оно, конечно же, бежать не будет, но это было бы слишком уж палевно.

так, в принципе, бегает без тормозов, не отставая. одно плохо - может застрять на лестницах или если упрется куда-то. только в опциях клиента надо поставить типа "вечный бег")

не знаю кто автор скрипта, к сожалению.


Top
   
PostPosted: 2011-01-26 00:10:53 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Забудьте вы про путное преследование на инжекте. Это как на велосипеде от Питера до Москвы - реально но трындец как геморойно. Используйте Изиуо. Там РЕАЛЬНОЕ преследование делается несколькими строками.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2011-01-26 13:32:09 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
Mirage wrote:
Забудьте вы про путное преследование на инжекте. Это как на велосипеде от Питера до Москвы - реально но трындец как геморойно. Используйте Изиуо. Там РЕАЛЬНОЕ преследование делается несколькими строками.

Жаль не очень комфортно и надежно использовать изиуо на 2.0.3, который подключен как 1.26.4 с инжой)


Top
   
PostPosted: 2011-02-06 06:35:33 
Offline

Joined: 2010-10-29 15:20:30
Posts: 16
попробовал ходилку которую нашёл Wee - оч неплохо, лучше той котороую я использовал. конечно идеального преследования нет, но как телохранители в данжах или при обороне вполне сойдет )


Top
   
PostPosted: 2011-02-06 10:13:00 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
Есть ходилки и догонялки покруче, но как их настраивать я не знаю. Само то преследование очень даже ничего, но эта догонялка упирается в препятствия. Можно было бы сделать обход, но помоему удобней её включать\выключать чтоб самому подправить положение чара.


Top
   
PostPosted: 2011-05-13 20:14:20 
Offline

Joined: 2010-06-19 22:59:51
Posts: 35
Почему то у меня чар зигзагами ходит не знаю почему коннект нормальный в принципе


Top
   
PostPosted: 2011-05-13 20:14:42 
Offline

Joined: 2010-06-19 22:59:51
Posts: 35
А выложи пожалуйста те крутые догонялки которые незнаешь как настроить


Top
   
PostPosted: 2011-05-14 09:39:27 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
все что есть путное есть вот тут

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2011-05-14 18:50:43 
Offline

Joined: 2010-06-19 22:59:51
Posts: 35
и вот ещё, почему чар ходит зиг загами ? ))


Top
   
PostPosted: 2011-05-14 20:39:47 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Скрипт который выложил Weee не виляет.
Попробуй перед запуском все галки отключить в окошке main инжекта.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2011-05-15 09:18:37 
Offline

Joined: 2010-06-19 22:59:51
Posts: 35
Ситуация такая, когда того кого надо преследовать бежит по прямо потом делает 1 шаг в сторону и опять же бежит по прямой то чар-преследователь начинает вилять не может встать параллельно тому кого преследует вот


Top
   
PostPosted: 2011-05-25 10:23:17 
Offline

Joined: 2005-04-19 18:00:29
Posts: 2259
Location: Московская область
Mirage wrote:
Забудьте вы про путное преследование на инжекте. Это как на велосипеде от Питера до Москвы - реально но трындец как геморойно. Используйте Изиуо. Там РЕАЛЬНОЕ преследование делается несколькими строками.

Мне NewMoveXY очень понравилась :) Реально бодрая ходилка.


Top
   
PostPosted: 2011-05-25 12:25:54 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Чтобы контактировать с ботом на стелсе нужно будет ваять скрипт чуть больше чем средней паршивости ходилка на инжекте. А Изи держит открытый клиент - хочешь перекинул реги, хочешь смысла из засады. Активное управление чаром.

PS на старых версиях стелса ходилка была говняненькая. Приходилось процедурами писать.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 51 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