Подскажите с ходилкой

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
BbIDLO
Posts: 44
Joined: 2005-04-21 18:29:21

Подскажите с ходилкой

Post by BbIDLO »

Вообщем ситуация такая: Рублю лес, подомной появляеться тварь и начинает меня бить в упор. Мне надо чтоб отбегало от неё на на 2-3 шага....Может есть у кого ходилка с такими возможностями и желательно без АСМ....? :shock:

Или кому не трудно обьясните что изменить в СуперВолк чтобы можно было выполнять такую задучу :?:

Code: Select all

sub SuperWalk(x,y,Target) 
   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()
;         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
            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=300
   VAR ErrLevel=0
   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif
   UO.Press(key)
   wait(walkwait)
   If x==UO.GetX() AND y==UO.GetY() Then
      CheckLag()
      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=300
   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
         CheckLag()
      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
         CheckLag()
         If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
; zatik         
            ErrLevel=1
         Endif
      Endif
   Endif
   Return ErrLevel
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
xzxzxz
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Простыми изменениями на отбегание не переделать. Как вариант можно вычислять координаты противоположного от монстра направления и бежать туда но моно напороться на непроходимый тайл, тогда ходилка встрянет и тебя качественно убъют. Да иходит она медленно для отбегания.
BbIDLO
Posts: 44
Joined: 2005-04-21 18:29:21

Post by BbIDLO »

Ходит вполне прилично, т.к. монстр медленный и когда не стоит к тебе в упор пытаеться кастовать. Сообственно пытался с помощью ходилки отходить в противоположную сторону, тогда какраз это и стало проблемой из-за непроходимых тайлов(камни/кусты/деревья) - их там много, это лес. Потому и оббратился на форум, может люди бывалые помогут чем :oops:
xzxzxz
LordTom
Posts: 256
Joined: 2006-02-03 11:32:16
Location: ND
Contact:

первомай на садовой

Post by LordTom »

а уменя стоит ЭПХХ. И что? Я же тебе ГБЦ не делал и не ставил. Но мы списывались на эту тему. И я пока в раздумьях, как совместить время, пространства и деньги. А так же прислушиваюсь к любой ин
Дык я тоже сзади мордой у земли сколько катался, все выслушивал))) Эт как же?! Можно из багажника свеситься. Ессено с кем нибудь за рулем совершенно верно, так и делал, сидел в ба
Last edited by LordTom on 2009-12-23 20:22:44, edited 3 times in total.
BbIDLO
Posts: 44
Joined: 2005-04-21 18:29:21

Post by BbIDLO »

Так и делаю, дело в том что киляю его магией, а монстр появляеться чётко подомной и начинает касты сбивать, поэтому прежде чем монстр таки умирает он иногда успевает снести 20-60хп. :roll:
xzxzxz
LordTom
Posts: 256
Joined: 2006-02-03 11:32:16
Location: ND
Contact:

эти зловредные соседи

Post by LordTom »

да в любом случае нельзя так дико осуждать нынешних репперов,они,многие из них прошли он тяжелый путь к соаве,так сказать из грязи в князи,eminem 50 cent,и они по-праву имеют такую возможность как и
На тему Fallout. Вы слишком долго играли в Fallout, если Вы оскорбляете своих друзей, используя выражение: "Ну конечно, стреляй мне в спину, Ян" (или Маркус, или Вик, или Сулик…). Вы, нако
Last edited by LordTom on 2009-12-23 16:43:29, edited 3 times in total.
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Лорд, не в обиду, давай больше по делу пости. Тут в основном вопросы задают люди, далекие от программирования, так вот, если хочешь им помочь, пости готовые решения + минимум объяснений как это прикурутить к скрипту который они выкладывают.
BbIDLO
Posts: 44
Joined: 2005-04-21 18:29:21

Post by BbIDLO »

Да ябы так и сделал и от программирования не слишком далёкий :) Просто шард у нас такой что банят за инжу слишком часто :D И все скрипты приходиться макросить тока ньюбами, с 2умя скиллами по 50. От куда у нюба хилинг ? :?
xzxzxz
LordTom
Posts: 256
Joined: 2006-02-03 11:32:16
Location: ND
Contact:

перевозка регулятора в самолете

Post by LordTom »

Ты индустриален, если: # Ты возвращаешь дрель в магазин, потому что звук не тот; # Mужик в магазине Black and Decker знает, что ты из какой-то тусовки на "Д"; # На стиральной машинкке должен стоять
Лёшенька, с Днём Рождения тебя! Ты у нас самый милый, самый романтичный и добрый мальчик со всей сети. Оставайся всегда таким же. Это хорошие качества. Желаю тебе найти свою музу, которая будет дари
Last edited by LordTom on 2009-12-23 10:00:29, edited 3 times in total.
BbIDLO
Posts: 44
Joined: 2005-04-21 18:29:21

Post by BbIDLO »

Просто монстр в упор сбивает касты, в один момент ему надоедает сбивать касты и он делает пару шагов в сторону и пытаеться кастовать, но этот момент может настать и тогда когда я уже умру :D
xzxzxz
Post Reply