Бот-помощник для ПВП

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
sovogg
Posts: 16
Joined: 2010-10-29 15:20:30

Бот-помощник для ПВП

Post by sovogg »

Подумал создать бота-помощника для пвп, который бы ходил за основным чаром и творил всякие полезные дела. собственно с полезными делами думаю проблем нет, - можно что угодно наставить. а вот с ходилкой всё не слишком хорошо получается - идеального синхрона нет. можно ли сделать такую ходилку, которая бы ходила за основным чаром по пятам не отставая ни на шаг по крайней мере на прямой дистанции?
спасибо

ps: я использовал ходилку, взятую с этого форума.(кажется её писал ВЕТЕРАН), только убавил ожидалки и убрал чеклаг.. выложу её сюда
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
Weee
Posts: 90
Joined: 2011-01-19 01:07:15

Re: Бот-помощник для ПВП

Post by Weee »

Я вот в одной из недавних тем увидел вот эту догонялку и она мне вполне понравилась тем, как работает:

Code: Select all

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
sovogg
Posts: 16
Joined: 2010-10-29 15:20:30

Re: Бот-помощник для ПВП

Post by sovogg »

пока что не попробовал, но попробую. спасибо
Weee
Posts: 90
Joined: 2011-01-19 01:07:15

Re: Бот-помощник для ПВП

Post by Weee »

один в один оно, конечно же, бежать не будет, но это было бы слишком уж палевно.

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

не знаю кто автор скрипта, к сожалению.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Бот-помощник для ПВП

Post by Mirage »

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

Re: Бот-помощник для ПВП

Post by Weee »

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

Жаль не очень комфортно и надежно использовать изиуо на 2.0.3, который подключен как 1.26.4 с инжой)
sovogg
Posts: 16
Joined: 2010-10-29 15:20:30

Re: Бот-помощник для ПВП

Post by sovogg »

попробовал ходилку которую нашёл Wee - оч неплохо, лучше той котороую я использовал. конечно идеального преследования нет, но как телохранители в данжах или при обороне вполне сойдет )
Weee
Posts: 90
Joined: 2011-01-19 01:07:15

Re: Бот-помощник для ПВП

Post by Weee »

Есть ходилки и догонялки покруче, но как их настраивать я не знаю. Само то преследование очень даже ничего, но эта догонялка упирается в препятствия. Можно было бы сделать обход, но помоему удобней её включать\выключать чтоб самому подправить положение чара.
Tiger1989
Posts: 35
Joined: 2010-06-19 22:59:51

Re: Бот-помощник для ПВП

Post by Tiger1989 »

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

Re: Бот-помощник для ПВП

Post by Tiger1989 »

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

Re: Бот-помощник для ПВП

Post by Tiger1989 »

и вот ещё, почему чар ходит зиг загами ? ))
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Бот-помощник для ПВП

Post by Mirage »

Скрипт который выложил Weee не виляет.
Попробуй перед запуском все галки отключить в окошке main инжекта.
Tiger1989
Posts: 35
Joined: 2010-06-19 22:59:51

Re: Бот-помощник для ПВП

Post by Tiger1989 »

Ситуация такая, когда того кого надо преследовать бежит по прямо потом делает 1 шаг в сторону и опять же бежит по прямой то чар-преследователь начинает вилять не может встать параллельно тому кого преследует вот
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Re: Бот-помощник для ПВП

Post by Scripts Writer »

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

Мне NewMoveXY очень понравилась :) Реально бодрая ходилка.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Бот-помощник для ПВП

Post by Mirage »

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

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