Народ дайте нормальную процедуру хождения.
Moderators: Murderator+, Murderator
Народ дайте нормальную процедуру хождения.
Народ дайте нормальную процедуру хождения. Взял из Lumberjecking-а а она как то криво ходит и дойти до нужной точки не могет совсем... Может более продвинутое что есть?
-
- Junior Expert
- Posts: 150
- Joined: 2004-04-12 20:26:41
Вот три (вроде
ночь на дворе никак в бардаке своём не разберусь ) ходилки из моего безумного майнинг скрипта. Одна Савы, и ещё пара хз каких. Мне в скрипте нужны все три =) Но самая хорошая на мой взгляд\тест первая, но ей не получится ходить на гейты.

Code: Select all
sub walk(dx,dy)
VAR i, walkwait=300
If dx<>0 then
If dx>0 then
If UO.GetDir()<>2 then
UO.Press(34)
wait(walkwait)
CheckPause()
Endif
For i=1 to dx
UO.Press(34)
wait(walkwait)
CheckPause()
next
Else
If UO.GetDir()<>6 then
UO.Press(36)
wait(walkwait)
CheckPause()
Endif
For i=1 to dx*-1
UO.Press(36)
wait(walkwait)
CheckPause()
next
Endif
endif
If dy<>0 then
If dy>0 then
If UO.GetDir()<>4 then
UO.Press(35)
wait(walkwait)
CheckPause()
Endif
For i=1 to dy
UO.Press(35)
wait(walkwait)
CheckPause()
next
Else
If UO.GetDir()<>0 then
UO.Press(33)
wait(walkwait)
CheckPause()
Endif
For i=1 to dy*-1
UO.Press(33)
wait(walkwait)
CheckPause()
next
Endif
endif
wait(1000)
end sub
sub bandage()
UO.exec('setarm 5')
UO.exec('bandageself')
wait(1000)
UO.exec('arm 5')
end sub
sub Move_play(path)
var x=val(left(path,4))
var y=val(mid(path,4,4))
var i=8,f
uo.print(path)
move(x,y)
move(x,y)
while i<len(path)
f=val(path[i])
if f then
i=i+1
else
f=1
endif
while f
Move_Step(path[i])
f=f-1
wend
i=i+1
wend
endsub
sub Move_rec()
var nx,ny,x=uo.getx(),y=uo.gety(),s="0000",path=""
var npath=left(s,len(s)-len(str(x)))+str(x)+left(s,len(s)-len(str(y)))+str(y)
var m="-SN-EDR-WLU",xp="-11-222-000",yp="-20-120-120"
UO.DeleteJournal()
while (UO.InJournal("stop")==0)
nx=UO.GetX()
ny=UO.GetY()
s=(ny>y)+2*(ny<y)+4*(nx>x)+8*(nx<x)
if s<>0 then
path=path+m[s]
x=x+val(xp[s])-1
y=y+val(yp[s])-1
else
wait(10)
endif
wend
x=0
while x<len(path)
y=1
while path[x]==path[x+1] AND y<9
x=x+1
y=y+1
wend
if y==1 then
nPath=nPath+path[x]
else
nPath=nPath+STR(y)+path[x]
endif
x=x+1
wend
return npath
end sub
sub Move_Step(dir)
var M="NESWLURD"
var X="12100022"
var Y="01212002"
for var i=0 to len(M)-1
if dir==M[i] then
return move(uo.GetX()+val(X[i])-1,uo.GetY(i)+val(Y[i])-1)
endif
next
uo.print("dir "+dir+" not defined")
return 0
end sub
sub Move(x,y)
var cx,cy,e=0,dir=1,M="-40-231-657"
while dir<>0
cx=uo.getx()
cy=uo.gety()
dir=(cy<y)+2*(cy>y)+4*(cx<x)+8*(cx>x)
if dir<>0 then
MoveK(val(M[dir]))
if cx==uo.getx() && cy==uo.gety() then
e=e+1
if e==40 then
return 0
endif
else
e=0
endif
endif
wend
return 1
endsub
sub MoveK(dir)
var x,y,time,Key="06172435"
if UO.GetDir()<>dir then
UO.Press(val(Key[dir])+33)
time=500
if UO.GetDir()<>dir then
if time==0 then
return 0
endif
wait(5)
time=time-5
endif
endif
x=UO.GetX()
y=UO.GetY()
time=500
UO.Press(val(Key[dir])+33)
while x==UO.GetX() && y==UO.GetY() && time>0
time=time-5
wait(5)
wend
return time>0
end sub
sub WalkN(x,y,Target)
VAR i
VAR dx,dy,Exit=0
While Exit<>1
If Target<>"" Then
dx=UO.GetX(Target)-UO.GetX()
dy=UO.GetY(Target)-UO.GetY()
; UO.Print("Target locked!")
If UO.GetDistance(Target)<2 Then
Exit=1
Endif
Else
dx=x-UO.GetX()
dy=y-UO.GetY()
If dx+dy==0 Then
Exit=1
Endif
Endif
If dx<>0 AND dy<>0 Then
If dx>0 AND dy>0 Then
GoSE()
Endif
If dx>0 AND dy<0 Then
GoNE()
Endif
If dx<0 AND dy>0 Then
GoSW()
Endif
If dx<0 AND dy<0 Then
GoWN()
Endif
Endif
If dx<>0 AND dy==0 Then
If dx>0 Then
GoE()
Endif
If dx<0 Then
GoW()
Endif
Endif
If dx==0 AND dy<>0 Then
If dy>0 Then
GoS()
Endif
If dy<0 Then
GoN()
Endif
Endif
Wend
end sub
sub GoW()
VAR walkwait=300
VAR x,y,dir=6
VAR key=36 ; Home key
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetX()+1==x Then
return -1
Else
return 1
Endif
end sub
sub GoN()
VAR walkwait=300
VAR x,y,dir=0
VAR key=33 ; PgUp
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetY()+1==y Then
return -1
Else
return 1
Endif
end sub
sub GoE()
VAR walkwait=300
VAR x,y,dir=2
VAR key=34 ; PgDown
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetX()-1==x Then
return -1
Else
return 1
Endif
end sub
sub GoS()
VAR walkwait=300
VAR x,y,dir=4
VAR key=35 ; End
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetY()-1==y Then
return -1
Else
return 1
Endif
end sub
sub GoWN()
VAR walkwait=300
VAR x,y,dir=7
VAR key=38 ; UpArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub GoNE()
VAR walkwait=300
VAR x,y,dir=1
VAR key=39 ; RightArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub GoSE()
VAR walkwait=300
VAR x,y,dir=3
VAR key=40 ; DownArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub GoSW()
VAR walkwait=300
VAR x,y,dir=5
VAR key=37 ; LeftArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub gotoxy(x,y,prec)
var ld=0,ldc=0
var dx,dy
var mx,my
var ox,oy,mk,k
#uo.print(">")
#uo.track("1",str(x),str(y))
start:
mx=UO.GetX()
my=UO.GetY()
dx=mx-x
if dx<0 then
dx=0-dx
endif
dy=my-y
if dy<0 then
dy=0-dy
endif
if dy>dx then
dx=dy
end if
if dx<=prec then
return
end if
if not ldc then
uo.print(STR(dx))
end if
if dx<3 then
mk=70
else
mk=15
end if
ox=mx
oy=my
for k=1 to mk
mx=UO.GetX()
my=UO.GetY()
if mx<>ox or my<>oy then
goto sdidapl
end if
wait(10)
next
sdidapl:
mx=UO.GetX()
my=UO.GetY()
dx=mx-x
if dx<0 then
dx=0-dx
endif
dy=my-y
if dy<0 then
dy=0-dy
endif
if dy>dx then
dx=dy
end if
if dx<=prec then
return
end if
if ld==dx then
ldc=ldc+1
if ldc>100 then
uo.print("Can not reach location!")
return
end if
else
ld=dx
end if
if mx==x then
if my==y then
return
endif
if my>y then
#UO.Print("UR")
UO.Press(33)
goto start
endif
#UO.Print("DL")
UO.Press(35)
goto start
end if
if mx<x then
if my>y then
#UO.Print("R")
UO.Press(39)
goto start
endif
if my==y then
#UO.Print("DR")
UO.Press(34)
goto start
endif
#UO.Print("D")
UO.Press(40)
goto start
end if
if my<y then
#UO.Print("L")
UO.Press(37)
goto start
endif
if my==y then
#UO.Print("LU")
UO.Press(36)
goto start
endif
#UO.Print("U")
UO.Press(38)
goto start
end sub
"...было бы величайшей ошибкой думать."
В.И.Ленин
В.И.Ленин
bbp wrote:Вот три (вроденочь на дворе никак в бардаке своём не разберусь ) ходилки из моего безумного майнинг скрипта. Одна Савы, и ещё пара хз каких. Мне в скрипте нужны все три =) Но самая хорошая на мой взгляд\тест первая, но ей не получится ходить на гейты.
читать гигабайты скриптов - это, конечно, здорово... но ты бы хоть в разные поля вставлял разное... в смысле, чтобы все версии не сливались в одну общую кучу - и разбирай потом как знаешь, а каждая была бы взята в свой тег code.
2 AGRS
А что за процедура от Yoko?
На мой взгляд самая нормальная процедура обхода это та которая в EasyUO но в Injection ее нету...
Может аналоги хотябы скажите чтоб препядствия обходила...
Попробовал написаные процедуры. Все затыкаются когда доходят до препятствия и даже не пробуют его обойти
Все равно спасибо...
А что за процедура от Yoko?
На мой взгляд самая нормальная процедура обхода это та которая в EasyUO но в Injection ее нету...

Попробовал написаные процедуры. Все затыкаются когда доходят до препятствия и даже не пробуют его обойти

Andrey wrote:2 AGRS
А что за процедура от Yoko?
На мой взгляд самая нормальная процедура обхода это та которая в EasyUO но в Injection ее нету...Может аналоги хотябы скажите чтоб препядствия обходила...
Попробовал написаные процедуры. Все затыкаются когда доходят до препятствия и даже не пробуют его обойтиВсе равно спасибо...
обходить препятствия и на инжекте можно попробовать, но это будет "поиск вслепую"... такой скрипт даже из маленького дома с одним столом и одним стулом и снятой дверью, при неудачном стечении обстоятельств (коннект и лаги в рассчет не принимаем, а только наше положение относительно выхода), может выбраться только через несколько часов...
AGRS wrote:На чем угодно не выберется если нет карты проходимости или хотябы шанса ее составить. %)
а ты пробовал её составлять? чтобы такое осуществить силами инжекта - надо очень много номеров тайлов и обжект тайпов в скрипт переписать, по которым нельзя пройти, после чего долго и упорно перебитать их по всем клеткам вокруг себя... в принципе, если извратнуться с waittargettile или, что еще лучше, с privatedig (в версии от 25.09.2004), то на эту байду уйдет тонна времени, но карту проходимости ты составишь, и легко пройдешь, оптимальным путем, но затраты времени будут неимоверно большие, чем при поиске вслепую.
GrayLord wrote:Andrey wrote:2 AGRS
А что за процедура от Yoko?
На мой взгляд самая нормальная процедура обхода это та которая в EasyUO но в Injection ее нету...Может аналоги хотябы скажите чтоб препядствия обходила...
Попробовал написаные процедуры. Все затыкаются когда доходят до препятствия и даже не пробуют его обойтиВсе равно спасибо...
обходить препятствия и на инжекте можно попробовать, но это будет "поиск вслепую"... такой скрипт даже из маленького дома с одним столом и одним стулом и снятой дверью, при неудачном стечении обстоятельств (коннект и лаги в рассчет не принимаем, а только наше положение относительно выхода), может выбраться только через несколько часов...
Обрадую......Ходика такая была написана буквально 3 дня назад ...Скриптер Асканели (запомните это имя)....
Обход препятствий, работа с растоянием
Выход и из комнаты и обход скал по большому кругу .....и при этом ОФИГЕННАЯ скорость .....работа по 8 направлениям .....Вобщем пока не универсал,нужно сделять фишку Савы с подходом по айди ....но работаем
Все просто.
BETEPAH ™
BETEPAH ™
2 ВЕТЕРАН
Респект. Кинь ссылку плз если есть...
2 GrayLord
А почему бы не сделать поиск случайным? Те движение в случайном направлении причем вероятность идти в сторону изначального направления выше... Короче щас ссылку дам. http://algolist.manual.ru/games/smartmove.php
Респект. Кинь ссылку плз если есть...
2 GrayLord
А почему бы не сделать поиск случайным? Те движение в случайном направлении причем вероятность идти в сторону изначального направления выше... Короче щас ссылку дам. http://algolist.manual.ru/games/smartmove.php
Andrey wrote:2 ВЕТЕРАН
Респект. Кинь ссылку плз если есть...
2 GrayLord
А почему бы не сделать поиск случайным? Те движение в случайном направлении причем вероятность идти в сторону изначального направления выше... Короче щас ссылку дам. http://algolist.manual.ru/games/smartmove.php
Случайный поиск не канает !!! Скорость низкая !!! Это то меня и не устраивало во всех ходилках которые я нашёл !!! И рано или позже чар начинал тыкатся об стенку !!!
Мой чар на моей ходилке напрямую прётся туда куда надо и при этом с умом обходит все препятствия без лишьних нарезаний кругов !!!
Edred wrote:Askaneli wrote:Мой чар на моей ходилке напрямую прётся туда куда надо и при этом с умом обходит все препятствия без лишьних нарезаний кругов !!!
Дык код в студию! Посмотрим, потестим...
Я уже протестил и ВЕТЕРан тоже протестил, ему понравилось !!! Спасибо !!!
Сделал дело - флуди смело !!!
Andrey wrote:2 GrayLord
А почему бы не сделать поиск случайным? Те движение в случайном направлении причем вероятность идти в сторону изначального направления выше... Короче щас ссылку дам. http://algolist.manual.ru/games/smartmove.php
ссылка не работает.
вообще, для меня лично вопрос ходилки грамотной - чисто теоритический вопрос. писать такую штуку мне неохота, так как сам давно не играю, и только изредка балуюсь скриптами для инжекта.
Askaneli wrote:Andrey wrote:2 ВЕТЕРАН
Респект. Кинь ссылку плз если есть...
2 GrayLord
А почему бы не сделать поиск случайным? Те движение в случайном направлении причем вероятность идти в сторону изначального направления выше... Короче щас ссылку дам. http://algolist.manual.ru/games/smartmove.php
Случайный поиск не канает !!! Скорость низкая !!! Это то меня и не устраивало во всех ходилках которые я нашёл !!! И рано или позже чар начинал тыкатся об стенку !!!
Мой чар на моей ходилке напрямую прётся туда куда надо и при этом с умом обходит все препятствия без лишьних нарезаний кругов !!!
пока что кроме восклицаний мы ничего не услышали и не увидели от тебя в этой теме, и кто там чего тестил - неизвестно. если не желаешь делиться с людьми опытом, и хочешь от народа денег за скрипт - размещай рекламу на microdoft.com.