Yoko

All sides of Injection
It is currently 2026-01-19 10:10:12

All times are UTC+02:00




Post new topic  Reply to topic  [ 10 posts ] 
Author Message
 Post subject: Догонялка
PostPosted: 2007-12-04 18:11:09 
Offline
User avatar

Joined: 2007-09-20 23:45:58
Posts: 13
прошу написать или скинуть скрипт на догонялку .Чтоб чара бегал за другим.
В поиске нечего не нашел, и резать скрипты не умею!заранее спасибо


Top
   
 Post subject:
PostPosted: 2007-12-04 22:50:02 
Offline
User avatar

Joined: 2007-05-26 00:00:56
Posts: 173
Location: Украина, Ode$$a:[X-TEAM Group]
Что-то ты не умеешь поиском пользоваться или просто вобще не пользовался ! Догонялка

_________________
Image


Top
   
 Post subject:
PostPosted: 2007-12-05 09:00:53 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
Даавненько я скомпоновал свой вариант:

Добавлено: Вс Фев 20, 2005 12:01 am Заголовок сообщения: Скрипт: преследование злобное Ответить с цитатой Изменить/удалить это сообщение
За основу была взята ходилка из чьего-то скрипта на ламбер (не записал имени)
Потестите ее. Например, на моей локальной сфере чар пешочком догоняет и ПЕРЕГОНЯЕТ чара на остарде %)
Вот собсно и скрипт:

Code:
#для работы должна гореть кнопка NumLock
Var MoveDelay=200 # интервал шагов в мс
Var MoveNumber=1 
Var Ep=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

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php


Top
   
 Post subject:
PostPosted: 2007-12-05 09:25:28 
Offline
User avatar

Joined: 2006-08-06 10:23:20
Posts: 117
Denton wrote:
Даавненько я скомпоновал свой вариант:

Добавлено: Вс Фев 20, 2005 12:01 am Заголовок сообщения: Скрипт: преследование злобное Ответить с цитатой Изменить/удалить это сообщение
За основу была взята ходилка из чьего-то скрипта на ламбер (не записал имени)
Потестите ее. Например, на моей локальной сфере чар пешочком догоняет и ПЕРЕГОНЯЕТ чара на остарде %)
Вот собсно и скрипт:

Code:
...



Странно, но у меня работает "пошагово"!! :(


ФИКСЕД. Изменил интервал шагов - поставил 50..
Ресенд теперь мучает ((


Top
   
 Post subject:
PostPosted: 2007-12-05 09:50:11 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Самая лучшая догонялка - alt+click, что прекрасно делается через UoPilot, который интегрируется с Injection через глобальные переменные EasyUO :)

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

Если кто решиться попробовать сделать - ничего сложного. Диагональ квадрата тайла равна 44 пикселям, если я верно помню :)

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2007-12-05 14:01:22 
Offline
User avatar

Joined: 2006-08-06 10:23:20
Posts: 117
она же дистанцию держит, покрайней мере у нас на шарде!)


Top
   
 Post subject:
PostPosted: 2007-12-05 14:15:29 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
TarantuL wrote:
она же дистанцию держит, покрайней мере у нас на шарде!)

Кто? alt+click ?..

Незнаю, у меня она иногда даже обгоняет.. :)

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2007-12-05 14:28:08 
Offline
User avatar

Joined: 2006-08-06 10:23:20
Posts: 117
alt+click, ога. По мне - все выложенные тут получше неё бегают! Но все они - немного не то))) То там то там видно недочет)))


Top
   
 Post subject:
PostPosted: 2007-12-05 15:44:35 
Offline
User avatar

Joined: 2007-09-20 23:45:58
Posts: 13
чар не ходит(


Top
   
 Post subject:
PostPosted: 2007-12-05 15:57:53 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
Code:
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

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения

http://uokings.ru/news.php


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


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:  
cron
Powered by phpBB® Forum Software © phpBB Limited