Page 1 of 1

Скрипт: преследование злобное

Posted: 2005-02-20 00:01:49
by Denton
За основу была взята ходилка из чьего-то скрипта на ламбер (не записал имени)
Потестите ее. Например, на моей локальной сфере чар пешочком догоняет и ПЕРЕГОНЯЕТ чара на остарде %)
Вот собсно и скрипт:

Code: Select all

#При работе должна быть "отжата" кнопка NumLock 
Var MoveDelay=200 # Промежуток между шагами 
Var MoveNumber=1 # Количество шагов при смене дислокации 
Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие препятствия - увеличить. 0.172 - сбаланчированный. 

sub Main() 
Var X,Y,Target
UO.Print( 'Please, click to char for memory' ) 
   UO.Exec('addobject Target') 
   While UO.Targeting() 
      Wait(100) 
   Wend 
   while 1==1
X=UO.GetX('Target')
Y=UO.GetY('Target') 
GoToTile(X,Y,1,False) 
wend
endsub 

sub GetNumb(C,I) 
var J,T,K 
J=0 
K=1 
While K>0 
  J=J+1 
  If (Mid(C,J,1)==' ') Or (J>=Len(C)-1) Then 
   If I==0 Then 
    T=Val(Left(C,J)) 
   Else 
    T=GetNumb(Right(C,Len(C)-J-1),I-1) 
   EndIf 
   K=0 
  EndIf 
wend 
UO.Print(T) 
return T 
endsub 

sub GetSerial(What,Last) 
Var J=Last 
Var T 
If UO.InJournal(What) Then 
  T=UO.InJournal(What) 
  J=Str(UO.JournalSerial(T)) 
EndIf 
RETURN J 
endsub 

sub Perp(Dir) 
Var D 
D=Dir 
If Dir==1 Then 
  D=3 
EndIf 
If Dir==2 Then 
  D=4 
EndIf 
If Dir==3 Then 
  D=-1 
EndIf 
If Dir==4 Then 
  D=-2 
EndIf 
If Dir==-1 Then 
  D=-3 
EndIf 
If Dir==-2 Then 
  D=-4 
EndIf 
If Dir==-3 Then 
  D=1 
EndIf 
If Dir==-4 Then 
  D=2 
EndIf 
RETURN D 
endsub 

sub MoveOnce(Dir,Del,Rev) 
Var Num 
If Rev Then 
  Num=MoveNumber+1 
Else 
  Num=MoveNumber 
EndIf 
If (Num>0) and (Dir<>0) Then 
  If Dir==1 Then 
   UO.Press(38,Num,Del) 
  EndIf 
  If Dir==2 Then 
   UO.Press(33,Num,Del) 
  EndIf 
  If Dir==3 Then 
   UO.Press(39,Num,Del) 
  EndIf 
  If Dir==4 Then 
   UO.Press(34,Num,Del) 
  EndIf 
  If Dir==-1 Then 
   UO.Press(40,Num-1,Del) 
  EndIf 
  If Dir==-2 Then 
   UO.Press(35,Num,Del) 
  EndIf 
  If Dir==-3 Then 
   UO.Press(37,Num,Del) 
  EndIf 
  If Dir==-4 Then 
   UO.Press(36,Num,Del) 
  EndIf 
  If Rev Then 
   If Dir<>-1 Then 
    UO.Press(40,1,Del) 
   EndIf 
  EndIf 
EndIf 
endsub 

sub GetQDir(x,y) 
Var J=0 
If X==0 Then 
  J=1 
Else 
  If (Y/X)<ep Then 
   J=3 
  Else 
   If (X/Y)<ep Then 
    J=1 
   Else 
    J=2 
   EndIf 
  EndIf 
EndIf 
RETURN J 
endsub 

sub GetDir(myx,myy,ox,oy) 
Var I,J 
J=0 
Var X=ox-myx 
Var Y=oy-myy 
I=GetQDir(Abs(X),Abs(Y)) 
If X>=0 Then 
  If Y>=0 Then 
   If I==1 Then 
    J=-2 
   Else 
    If I==2 Then 
     J=-1 
    Else 
     If I==3 Then 
      J=4 
     EndIf 
    EndIf 
   EndIf 
  Else 
   If I==1 Then 
    J=2 
   Else 
    If I==2 Then 
     J=3 
    Else 
     If I==3 Then 
      J=4 
     EndIf 
    EndIf 
   EndIf 
  EndIf 
Else 
  If Y>=0 Then 
   If I==1 Then 
    J=-2 
   Else 
    If I==2 Then 
     J=-3 
    Else 
     If I==3 Then 
      J=-4 
     EndIf 
    EndIf 
   EndIf 
  Else 
   If I==1 Then 
    J=2 
   Else 
    If I==2 Then 
     J=1 
    Else 
     If I==3 Then 
      J=-4 
     EndIf 
    EndIf 
   EndIf 
  EndIf 
EndIf 
RETURN J 
endsub 

sub abs(a) 
Var b 
If a<0 Then 
  b=-a 
Else 
  b=a 
endif 
return b 
endsub 

sub PermResend() 
Var Mn=9 
Repeat 
  UO.Resend() 
  Wait(MoveDelay*Mn) 
Until (1>2) 
endsub 

sub max(A,B) 
Var C 
If A>B Then 
  C=A 
Else 
  C=B 
EndIf 
Return C 
endsub 

sub GetDistance(X,Y) 
return max(abs(X-uo.getx()),abs(Y-uo.gety())) 
endsub 

sub GoToTile(OX,OY,N,S) 
var myx, myy, MD, J 
var Lx1 ,Ly1 
var Lx2 ,Ly2 
var Sx ,Sy 
var T 
var Des=N 
J=1 
MD=MoveDelay*1.5 
myx=uo.getx() 
myy=uo.gety() 
MoveOnce(GetDir(uo.getx(),uo.gety(),ox,oy),MD,False) 
Sx=0 
Sy=0 
Lx1=uo.getx()/2 
Ly1=uo.gety()/2 
Lx2=Lx1/2 
Ly2=Ly1/2 
T=UO.Timer() 
If (GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N) Then 
  UO.Exec('exec PermResend') 
EndIf 
While ((GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N)) and (OX>=0) and (OY>=0) 
  If ((UO.Timer()-T)*15>MoveDelay) Then 
   T=UO.Timer() 
#   UO.Print(Str(uo.getx())+' '+Str(uo.gety())+' '+Str(ox)+' '+Str(oy)+' '+Str(GetDir(uo.getx(),uo.gety(),ox,oy))+' '+Str(T)) 
   Lx2=Lx1 
   Ly2=Ly1 
   Lx1=myx 
   Ly1=myy 
   myx=uo.getx() 
   myy=uo.gety() 
  endIf 
  MD=MoveDelay 
  If ((OX-uo.getx())*(OX-uo.getx())+(OY-uo.gety())*(OY-uo.gety())>0) Then 
   MD=MD*3/GetDistance(ox,oy) 
  EndIf 
  wait(MD) 
  If GetDistance(OX,OY)>Des Then 
   MoveOnce(GetDir(uo.GetX(),uo.GetY(),ox,oy),MD,False) 
  Else 
   If S Then 
    If GetDistance(OX,OY)<Des Then 
     If GetDistance(OX,OY)<>0 Then 
      MoveOnce(GetDir(ox,oy,uo.GetX(),uo.GetY()),MD,False) 
     Else 
      MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False) 
     EndIf 
    EndIf 
   EndIf 
  EndIf 
  If GetDistance(OX,OY)<>Des Then 
   If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then 
    If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then 
     J=1 
    EndIf 
    J=J+1 
    UO.Resend() 
    Sx = uo.getx() 
    Sy = uo.gety() 
    Stun(ox,oy,J) 
   EndIf 
  EndIf 
Wend 
UO.Exec('terminate PermResend') 
endsub 

sub Stun(X,Y,N) 
Var I 
Var myx 
Var myy 
myx = uo.getx() 
myy = uo.gety() 
For I=1 to N 
  MoveOnce(perp(GetDir(myx,myy,x,y)),MoveDelay,False) 
Next 
Wait(MoveDelay) 
UO.Resend() 
If (myx==uo.getx()) and (myy==uo.gety()) Then 
  For I=1 to N 
   MoveOnce(-perp(GetDir(myx,myy,x,y)),MoveDelay,False) 
  Next 
  Wait(MoveDelay) 
  UO.Resend() 
EndIf 
If (myx==uo.getx()) and (myy==uo.gety()) Then 
  For I=1 to N 
   MoveOnce(-GetDir(myx,myy,x,y),MoveDelay,False) 
  Next 
  Wait(MoveDelay) 
  Stun(x,y,N) 
EndIf    
endsub 

sub NearTile(Obj,Des) 
var ox, oy, myx, myy, MD, J 
var Lx1 ,Ly1 
var Lx2 ,Ly2 
var Sx ,Sy 
var T 
UO.Click(Obj) 
MD=MoveDelay*1.5 
ox=uo.GetX(Obj) 
oy=uo.GetY(Obj) 
J=1 
myx = uo.getx() 
myy = uo.gety() 
Sx=0 
Sy=0 
Lx1=myx/2 
Ly1=myy/2 
Lx2=Lx1/2 
Ly2=Ly1/2 
T=UO.Timer() 
If not (UO.GetDistance(Obj)==Des) Then 
  UO.Exec('exec PermResend') 
EndIf 
While not (UO.GetDistance(Obj)==Des) 
  ox=uo.GetX(Obj) 
  oy=uo.GetY(Obj) 
  If ((UO.Timer()-T)*15>MoveDelay) Then 
   T=UO.Timer() 
#   UO.Print('Go to '+Str(Des)+' to '+UO.GetName(Obj)) 
#   UO.Print(Str(UO.GetDistance(Obj))) 
#   UO.Print(Str(uo.GetX())+' '+Str(uo.GetY())+' '+Str(uo.GetX(Obj))+' '+Str(uo.GetY(Obj))+' '+Str(GetDir(uo.GetX(),uo.GetY(),uo.GetX(Obj),uo.GetY(Obj)))+' '+Str(T)) 
   Lx2=Lx1 
   Ly2=Ly1 
   Lx1=myx 
   Ly1=myy 
   myx=uo.getx() 
   myy=uo.gety() 
  endIf 
  MD=MoveDelay*1.5 
  If (UO.GetDistance(Obj)>0) Then 
   MD=MD/UO.GetDistance(Obj) 
  EndIf 
  wait(MD) 
  If UO.GetDistance(Obj)>Des Then 
   MoveOnce(GetDir(uo.GetX(),uo.GetY(),uo.GetX(Obj),uo.GetY(Obj)),MD,False) 
  Else 
   If UO.GetDistance(Obj)<Des Then 
    If UO.GetDistance(Obj)<>0 Then 
     MoveOnce(GetDir(uo.GetX(obj),uo.GetY(obj),uo.GetX(),uo.GetY()),MD,False) 
    Else 
     MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False) 
    EndIf 
   EndIf 
  EndIf 
  If UO.GetDistance(Obj)<>Des Then 
   If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then 
    If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then 
     J=1 
    EndIf 
    J=J+1 
    UO.Resend() 
    Sx = uo.getx() 
    Sy = uo.gety() 
    Stun(uo.GetX(Obj),uo.GetY(Obj),J) 
   EndIf 
  EndIf 
Wend 
UO.Exec('terminate PermResend') 
endsub 

sub DeleteJournal(What) 
Var T,J 
J=False 
If UO.InJournal(What) Then 
  J=True 
  UO.DeleteJournal() 
EndIf 
RETURN J 
endsub 
Есть правда мысли, что, возможно, остались кой-какие лишние функции, постарался все что относилось к ламберу вырезать, если что, фиксите, выкладывайте обновления... Копирайт за собой не держу %)

Заметил что скрипт не работал :)) не тот код дал. Этот уже будет работать, я его заменил.

Исправил шапку, спасибо Sayrus. ©Mirage

Posted: 2005-02-20 00:06:34
by Denton
Правда, если достаточно долгое время так гонять, то у меня инж вылетает (Abnormal program termination)... Возможно из-за галок?!
Помогите в этом. Вот что у меня стоит:
* FlushLog
* Tracker
* Verbose menu
* Target XYZ fix
* Unset before set
* AntiCrash
* NoCLHungMes
* Perm Vars Loopback
* Track world items

Вот, мож че не так поставил, что крашит частенько?? Если сможете, дайте ссылочку факью об этих галках, или совет (совет приятней)
Заранее сенкс

p.s. Прикольно так дуэлиться на сфере своей сам с собой. Выставил по 10к силы и хитов, и давай метелить чара, который меня преследует. Чары одеты абсолютно одинаково. Результат: победил уже 3 раза подряд тот, который на остарде бегает.

Posted: 2005-02-22 09:17:36
by BETEPAH
Неплохой топик поднимаем.
Прошу Крафтера прицепить ссылочку в ПВП топик.

Posted: 2005-02-22 18:25:52
by Denton
Народ, а что вот можно с этими вылетами инжекта сделать? как эту проблему то решить?

Posted: 2005-04-17 06:59:34
by _ALF_
Denton wrote:Народ, а что вот можно с этими вылетами инжекта сделать? как эту проблему то решить?
Уменя вытетать почти перестало когда я отключил
* Verbose menu
* AntiCrash
* Track world items :wink:

Posted: 2005-04-21 11:57:19
by Destruction
$oK0JI wrote:
_ALF_ wrote:
Denton wrote:Народ, а что вот можно с этими вылетами инжекта сделать? как эту проблему то решить?
Уменя вытетать почти перестало когда я отключил
* Verbose menu
* AntiCrash
* Track world items :wink:

:shock: :D :D :D
Не флуди смайлами :wink:

TWI - если хреновый конект, то конечно лаги, но чтобы вылет... хотя кто знает :roll:

Posted: 2005-04-21 12:40:38
by flake
Вылетает, когда тиы появляешся в месте, где разом ооочень много игроков (рынки, площади). Инжа не выдержит нагрузки, и может вылать.
Проверенно.

Posted: 2005-05-17 07:34:33
by Sfagnum
flake wrote:Вылетает, когда тиы появляешся в месте, где разом ооочень много игроков (рынки, площади). Инжа не выдержит нагрузки, и может вылать.
Проверенно.
не 100%, но вероятность повышенная ;) в боевой обстановке вероятность краша - повышается.

последнее замечание сугубо субъективное ;)

Posted: 2006-11-26 13:04:22
by Raisefamous
Скиньте лудшие настройкт под этот скрипт как в ижекте так и в самом скрипте,а то как не меняю настройки скрипта он не догоняет а просто отстает через пару шагов

Re: Скрипт: преследование злобное

Posted: 2010-06-12 09:32:15
by headshot1989
ХМ. У меня получается запускать в двух вариантах:
1) когда рядом с чаром, начинает злостно УБЕГАТЬ как на спидхаке тупо вверх, пока не застревает
2) когда на 1 тайле с целью - пытается его догонять со скоростью хромой лошади.

Ткните носом на чем тут построено читерство, что бегает так ооочень быстро, почти сквозь деревья.

Re: Скрипт: преследование злобное

Posted: 2010-07-10 10:44:45
by Snakinski
Спид хак юзать никто не пробовал?

Re: Скрипт: преследование злобное

Posted: 2011-10-02 14:51:40
by texx3x
Скрипт беспорно наверника супер но какую из функций нада биндить на хоткей чтоб появлялся таргет и соотвецно бежал за целью убивая ее нафиг ?)

Re: Скрипт: преследование злобное

Posted: 2011-10-26 23:41:14
by admir
Класс...
Спид хак в итоге выбивает клиент, а uo.resend работает чОтка.

Re: Скрипт: преследование злобное

Posted: 2011-10-26 23:45:10
by admir
texx3x wrote:Скрипт беспорно наверника супер но какую из функций нада биндить на хоткей чтоб появлялся таргет и соотвецно бежал за целью убивая ее нафиг ?)
Попробуй

Code: Select all

sub gear-chamfering_machine()
   Uo.pobegali('Target')
end sub