Ходилка (Пользуйтесь)

Anything and all.

Moderators: Murderator+, Murderator

Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Ходилка (Пользуйтесь)

Post by Destruction »

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

Длинно получилось - ибо нету у нас тут ни case ни хотябы elseif - вот и получось 8ем километровых условий :(

Code: Select all

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
Last edited by Destruction on 2006-04-16 02:43:45, edited 2 times in total.
Wolf
Posts: 26
Joined: 2005-04-19 15:18:31

Post by Wolf »

и это 8 километров условий?...... хм..... а мне кажется вполне нормальный и не такой уж и длинный скриптик..... у мя минингс реколом раза в 3 длиннее :D
жизнь ничто в этом чёкнутом мире, а ультима онлайн - светлое пятнышко во мраке жизни )))
I'm
Expert!
Posts: 1396
Joined: 2004-10-15 22:38:04
Location: Moscow City.
Contact:

Post by I'm »

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

ЗЫ тебе сказачно повезло что у тебя такой маленький мининг.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

ПС: В конец дописал ресенд - чтобы избавиться от глюка с эддстеп, который я описал в риквестах ток, что.
Leo
Expert!
Posts: 791
Joined: 2005-01-15 19:15:05
Location: Dragon World
Contact:

Post by Leo »

Доделаешь - опробую...У меня как раз скрипту надо, штобы чар шёл "напролом".
Last edited by Leo on 2005-04-23 16:40:44, edited 1 time in total.
Image
Revenant
Posts: 54
Joined: 2004-08-05 21:12:19

Post by Revenant »

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

Code: Select all

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
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

Ставь пока АСМ - обход препятствий, тока через НЕГО будет нормальным.
MazaFaka
Posts: 77
Joined: 2005-02-22 20:03:13

Post by MazaFaka »

все хорошо !
но - в первом скрипте нет не какой анимации - как по шахмотной доске преставляют - но двигается быстро)
а во втором ходит тока в развалочку(
и почему то у меня после нескольких использований он ваще ломится кудато в другую сторону от точки которую указал в чем проблемма кто подскажет?
а будет лучше если кто нибудь даст ходилку в которой чар бегает на максимальной скорости та что с приследованием у меня тоже чар ходит и не кого не догоняет(((((((((((((((((((((((помогите плиз!
говорила мне мама "учись неуч"
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Нифига не понял
* :?: *
MazaFaka
Posts: 77
Joined: 2005-02-22 20:03:13

Post by MazaFaka »

вроде все просто пояснил.................
дайте пожалуста скрипт в котором при указании координат цели чар не шЁл к назначенной точке а бежал !
говорила мне мама "учись неуч"
Leo
Expert!
Posts: 791
Joined: 2005-01-15 19:15:05
Location: Dragon World
Contact:

Post by Leo »

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


Это в опциях УО ставится...
Image
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

AlwaysRun называется.
Wolf
Posts: 26
Joined: 2005-04-19 15:18:31

Post by Wolf »

Destruction, мог бы ты в своём скрипте описать для меня что чар делает? ну например напротив строки пояснение.... мне нада свою ходилку написать, я вот сморю на твой скрипт и больше половины не понимаю :( заранее спасибо
жизнь ничто в этом чёкнутом мире, а ультима онлайн - светлое пятнышко во мраке жизни )))
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

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

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

PS: Буду благодарен, если кто-то скрипт распишет по-пунктам :-)
kooler
Posts: 28
Joined: 2004-06-27 16:17:24

Post by kooler »

line 80 : function not found - uo.addstep
Че эт значит? :)
admir
Posts: 528
Joined: 2005-01-13 07:20:54

Post by admir »

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

Code: Select all

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: Select all

sub go()
repeat
  hod(xkord,ykord)   #вместо xkord , ykord ваши координаты )
  wait(5)
until uo.GetX()==xkord and uo.getY()==ykord # ну или либо в переменную занать все это
end sub
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

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

Заодно спрошу, есть ли про uo.addstep в хелпе, в описании комманд?
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

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

Нету. Но он глюканый.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

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


Ну в хелпе его нет не по этому, а потому, что Йоко не обновлял хелп начиная с версии 312.19
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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


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

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

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

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

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