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

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.
[url=http://drw.ru/][img]http://userbars.ru/data/media/14/drw_proud.gif[/img][/url]
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:вроде все просто пояснил.................
дайте пожалуста скрипт в котором при указании координат цели чар не шЁл к назначенной точке а бежал !
Это в опциях УО ставится...
[url=http://drw.ru/][img]http://userbars.ru/data/media/14/drw_proud.gif[/img][/url]
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