Yoko
http://forum.yoko.com.ua/

Ходилка (Пользуйтесь)
http://forum.yoko.com.ua/viewtopic.php?f=20&t=3788
Page 1 of 2

Author:  Destruction [ 2005-04-23 15:56:52 ]
Post subject:  Ходилка (Пользуйтесь)

Написал свою первую ходилку (было нелегко, но я справился), ходилка прет напролом кратчайшим путем к указанной точке, правда препятствия не обходит (обход оных в процессе написания).
Координаты я ваще забил внутри скрипта (пока отлаживал), но можно повесить как аргументы функции.

Длинно получилось - ибо нету у нас тут ни case ни хотябы elseif - вот и получось 8ем километровых условий :(
Code:
sub hodilka() 
var x,y,cx,cy,tmp,i=0, temp
x = 1642 ;//Координата x-назначения.
y = 2669 ;//Координата y-назначения.
x = -(uo.getx() - x)
y = -(uo.gety() - y)
cx = x
cy = y
if cx <= 0 then
   cx = -cx
endif
if cy <= 0 then
   cy = -cy
endif
tmp = str(cx+cy)
if val(tmp) then
   DIM step[val(tmp)]
   repeat
      i=i+1
      if x>0 && y>0 && x==y  then
         x=x-1
         y=y-1
         cx=x
         cy=y
         step[i]=2
      endif
      if x>0 && cx>cy then
         x=x-1
         cx=x
         step[i]=3
      endif
      if x>0 && y<0 && cx==cy then
         x=x-1
         y=y+1
         cx=x
         cy=-y
         step[i]=6
      endif
      if y<0 && cy>cx then
         y=y+1
         cy=-y
         step[i]=9
      endif
      if x<0 && y<0 && x==y then
         x=x+1
         y=y+1
         cx=-x
         cy=-y
         step[i]=8
      endif
      if x<0 && cx>cy then
         x=x+1
         cx=-x
         step[i]=7
      endif
      if x<0 && y>0 && cx==cy then
         x=x+1
         y=y-1
         cx=-x
         cy=y
         step[i]=4
      endif
      if y>0 && cy>cx then
         y=y-1
         cy=y
         step[i]=1
      endif
      if x==-0 then
         x=0
      endif
      if y==-0 then
         y=0
      endif
   until cx==0 && cy==0
   temp=i
   tmp=''
   for i=1 to temp
      tmp=tmp+str(step[i])
   next
   uo.addstep(tmp)
endif
uo.resend()
endsub

Author:  Wolf [ 2005-04-23 16:13:47 ]
Post subject: 

и это 8 километров условий?...... хм..... а мне кажется вполне нормальный и не такой уж и длинный скриптик..... у мя минингс реколом раза в 3 длиннее :D

Author:  I'm [ 2005-04-23 16:17:42 ]
Post subject: 

Одна из первых ходилок использующих "addstep" :lol:
Действительно прет напролом :D
Кстати нетакая она и большая.

ЗЫ тебе сказачно повезло что у тебя такой маленький мининг.

Author:  Destruction [ 2005-04-23 16:20:26 ]
Post subject: 

Ну вообще - интеллект предпологает, разум распологает.
Чисто интеллектуальном уровне - я чувствую, что это дело мона загнать в цикл и срезать раза в 4, а вот сколько не напрягаю мозг - ну не получается, мб потом придумаю формулу для расчета для всех :wink:

ПС: В конец дописал ресенд - чтобы избавиться от глюка с эддстеп, который я описал в риквестах ток, что.

Author:  Leo [ 2005-04-23 16:39:45 ]
Post subject: 

Доделаешь - опробую...У меня как раз скрипту надо, штобы чар шёл "напролом".

Author:  Revenant [ 2005-04-23 16:40:39 ]
Post subject: 

Надо и свою приткнуть :)
все никак серьезно не займусь

Code:
sub walk(x,y)
Dim a[9]
a[1]=38
a[2]=33
a[3]=39
a[4]=36
a[5]=0
a[6]=34
a[7]=37
a[8]=35
a[9]=40
var xs, ys, n, m
while (xs<>x) or (ys<>y)
  xs=UO.GetX("self")
  ys=UO.GetY("self")
  if x > xs then
     n=3 
  else
    if x < xs then
       n=1   
    else    ; x=xs
      n=2       
    endif
  endif
  if y > ys then
     m=3 
  else
    if y < ys then
       m=1   
    else    ; y=ys
      m=2       
    endif
  endif
    UO.Press(a[n+((m-1)*3)])
wend
end sub

Author:  Destruction [ 2005-04-23 16:47:29 ]
Post subject: 

Leo wrote:
Доделаешь - опробую...У меня как раз скрипту надо, штобы чар шёл "напролом".

Ставь пока АСМ - обход препятствий, тока через НЕГО будет нормальным.

Author:  MazaFaka [ 2005-04-24 02:06:37 ]
Post subject: 

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

Author:  Destruction [ 2005-04-24 02:28:17 ]
Post subject: 

Нифига не понял
* :?: *

Author:  MazaFaka [ 2005-04-24 02:41:37 ]
Post subject: 

вроде все просто пояснил.................
дайте пожалуста скрипт в котором при указании координат цели чар не шЁл к назначенной точке а бежал !

Author:  Leo [ 2005-04-24 09:04:24 ]
Post subject: 

MazaFaka wrote:
вроде все просто пояснил.................
дайте пожалуста скрипт в котором при указании координат цели чар не шЁл к назначенной точке а бежал !


Это в опциях УО ставится...

Author:  Destruction [ 2005-04-24 14:15:42 ]
Post subject: 

AlwaysRun называется.

Author:  Wolf [ 2005-05-03 10:41:28 ]
Post subject: 

Destruction, мог бы ты в своём скрипте описать для меня что чар делает? ну например напротив строки пояснение.... мне нада свою ходилку написать, я вот сморю на твой скрипт и больше половины не понимаю :( заранее спасибо

Author:  Destruction [ 2006-04-16 02:36:25 ]
Post subject: 

Эхх, я бы хотел для автора поста выше расписать, что как и почему - но я сам не могу въехать, как я до такого додумался.

Чо сказать хотел - глядите какой топик раскопал :-))

Кстате тута интересный способ получения направления в которе надо идти, чтобы придти к точке.

PS: Буду благодарен, если кто-то скрипт распишет по-пунктам :-)

Author:  kooler [ 2006-04-18 23:33:49 ]
Post subject: 

line 80 : function not found - uo.addstep
Че эт значит? :)

Author:  admir [ 2006-04-18 23:47:06 ]
Post subject: 

во намутили то )

Code:
sub hod(xko,yko)
var mx=UO.GetX()
var my=UO.GetY()
  if mx == xko and my >  yko then     
  UO.Press(33)   
  endif   
  if mx == xko and my  < yko then     
  UO.Press(35)   
  endif   
  if mx  < xko and my == yko then     
  UO.Press(34)   
  endif   
  if mx  < xko and my >  yko then     
  UO.Press(39)   
  endif   
  if mx  < xko and my  < yko then     
  UO.Press(40)   
  endif   
  if mx >  xko and my == yko then     
  UO.Press(36)   
  endif   
  if mx >  xko and my >  yko then     
  UO.Press(38)   
  endif   
  if mx >  xko and my  < yko then     
  UO.Press(37)   
  endif
end sub


вызываем данный ход циклом
Code:
sub go()
repeat
  hod(xkord,ykord)   #вместо xkord , ykord ваши координаты )
  wait(5)
until uo.GetX()==xkord and uo.getY()==ykord # ну или либо в переменную занать все это
end sub

Author:  Sanch [ 2006-04-19 18:18:33 ]
Post subject: 

Автору респект, тк не люблю большие ходилки, а те которые маленькие, такими зигзагами ходят.

Заодно спрошу, есть ли про uo.addstep в хелпе, в описании комманд?

Author:  Destruction [ 2006-04-19 20:24:18 ]
Post subject: 

Sanch wrote:
Автору респект, тк не люблю большие ходилки, а те которые маленькие, такими зигзагами ходят.

Заодно спрошу, есть ли про uo.addstep в хелпе, в описании комманд?

Нету. Но он глюканый.

Author:  Edred [ 2006-04-19 20:54:02 ]
Post subject: 

Destruction wrote:
Нету. Но он глюканый.


Ну в хелпе его нет не по этому, а потому, что Йоко не обновлял хелп начиная с версии 312.19

Author:  Destruction [ 2006-04-19 21:28:01 ]
Post subject: 

Edred wrote:
Destruction wrote:
Нету. Но он глюканый.


Ну в хелпе его нет не по этому, а потому, что Йоко не обновлял хелп начиная с версии 312.19

У тебя логика странная.

Попробуй в addstep передать побольше циферок, он тогда такое шоу устраивает, когда 15 шагов пройдет, когда 18..

Я не понял, кто тут утверждал, что в хелпе нету, потому, что он глюканутый?

Я сказал, что в хелпе его нету, а сама команда - глючная.

Page 1 of 2 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/