Yoko

All sides of Injection
It is currently 2024-03-28 17:01:34

All times are UTC+02:00




Post new topic  Reply to topic  [ 24 posts ]  Go to page 1 2 Next
Author Message
PostPosted: 2005-04-23 15:56:52 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Написал свою первую ходилку (было нелегко, но я справился), ходилка прет напролом кратчайшим путем к указанной точке, правда препятствия не обходит (обход оных в процессе написания).
Координаты я ваще забил внутри скрипта (пока отлаживал), но можно повесить как аргументы функции.

Длинно получилось - ибо нету у нас тут ни 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


Last edited by Destruction on 2006-04-16 02:43:45, edited 2 times in total.

Top
   
 Post subject:
PostPosted: 2005-04-23 16:13:47 
Offline

Joined: 2005-04-19 15:18:31
Posts: 26
и это 8 километров условий?...... хм..... а мне кажется вполне нормальный и не такой уж и длинный скриптик..... у мя минингс реколом раза в 3 длиннее :D

_________________
жизнь ничто в этом чёкнутом мире, а ультима онлайн - светлое пятнышко во мраке жизни )))


Top
   
 Post subject:
PostPosted: 2005-04-23 16:17:42 
Offline
Expert!
User avatar

Joined: 2004-10-15 22:38:04
Posts: 1396
Location: Moscow City.
Одна из первых ходилок использующих "addstep" :lol:
Действительно прет напролом :D
Кстати нетакая она и большая.

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


Top
   
 Post subject:
PostPosted: 2005-04-23 16:20:26 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Ну вообще - интеллект предпологает, разум распологает.
Чисто интеллектуальном уровне - я чувствую, что это дело мона загнать в цикл и срезать раза в 4, а вот сколько не напрягаю мозг - ну не получается, мб потом придумаю формулу для расчета для всех :wink:

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


Top
   
 Post subject:
PostPosted: 2005-04-23 16:39:45 
Offline
Expert!
User avatar

Joined: 2005-01-15 19:15:05
Posts: 791
Location: Dragon World
Доделаешь - опробую...У меня как раз скрипту надо, штобы чар шёл "напролом".

_________________
Image


Last edited by Leo on 2005-04-23 16:40:44, edited 1 time in total.

Top
   
 Post subject:
PostPosted: 2005-04-23 16:40:39 
Offline

Joined: 2004-08-05 21:12:19
Posts: 54
Надо и свою приткнуть :)
все никак серьезно не займусь

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


Top
   
 Post subject:
PostPosted: 2005-04-23 16:47:29 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Leo wrote:
Доделаешь - опробую...У меня как раз скрипту надо, штобы чар шёл "напролом".

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


Top
   
 Post subject:
PostPosted: 2005-04-24 02:06:37 
Offline

Joined: 2005-02-22 20:03:13
Posts: 77
все хорошо !
но - в первом скрипте нет не какой анимации - как по шахмотной доске преставляют - но двигается быстро)
а во втором ходит тока в развалочку(
и почему то у меня после нескольких использований он ваще ломится кудато в другую сторону от точки которую указал в чем проблемма кто подскажет?
а будет лучше если кто нибудь даст ходилку в которой чар бегает на максимальной скорости та что с приследованием у меня тоже чар ходит и не кого не догоняет(((((((((((((((((((((((помогите плиз!

_________________
говорила мне мама "учись неуч"


Top
   
 Post subject:
PostPosted: 2005-04-24 02:28:17 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Нифига не понял
* :?: *


Top
   
 Post subject:
PostPosted: 2005-04-24 02:41:37 
Offline

Joined: 2005-02-22 20:03:13
Posts: 77
вроде все просто пояснил.................
дайте пожалуста скрипт в котором при указании координат цели чар не шЁл к назначенной точке а бежал !

_________________
говорила мне мама "учись неуч"


Top
   
 Post subject:
PostPosted: 2005-04-24 09:04:24 
Offline
Expert!
User avatar

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


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

_________________
Image


Top
   
 Post subject:
PostPosted: 2005-04-24 14:15:42 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
AlwaysRun называется.


Top
   
 Post subject:
PostPosted: 2005-05-03 10:41:28 
Offline

Joined: 2005-04-19 15:18:31
Posts: 26
Destruction, мог бы ты в своём скрипте описать для меня что чар делает? ну например напротив строки пояснение.... мне нада свою ходилку написать, я вот сморю на твой скрипт и больше половины не понимаю :( заранее спасибо

_________________
жизнь ничто в этом чёкнутом мире, а ультима онлайн - светлое пятнышко во мраке жизни )))


Top
   
 Post subject:
PostPosted: 2006-04-16 02:36:25 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Эхх, я бы хотел для автора поста выше расписать, что как и почему - но я сам не могу въехать, как я до такого додумался.

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

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

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


Top
   
 Post subject:
PostPosted: 2006-04-18 23:33:49 
Offline

Joined: 2004-06-27 16:17:24
Posts: 28
line 80 : function not found - uo.addstep
Че эт значит? :)


Top
   
 Post subject:
PostPosted: 2006-04-18 23:47:06 
Offline
User avatar

Joined: 2005-01-13 07:20:54
Posts: 528
во намутили то )

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


Top
   
 Post subject:
PostPosted: 2006-04-19 18:18:33 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
Автору респект, тк не люблю большие ходилки, а те которые маленькие, такими зигзагами ходят.

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


Top
   
 Post subject:
PostPosted: 2006-04-19 20:24:18 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Sanch wrote:
Автору респект, тк не люблю большие ходилки, а те которые маленькие, такими зигзагами ходят.

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

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


Top
   
 Post subject:
PostPosted: 2006-04-19 20:54:02 
Offline
Expert!

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


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


Top
   
 Post subject:
PostPosted: 2006-04-19 21:28:01 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Edred wrote:
Destruction wrote:
Нету. Но он глюканый.


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

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

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

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 24 posts ]  Go to page 1 2 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 8 guests


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