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

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