Но это ничего не дает

Что тут куда пихать и что с этим стеком делать???
viewtopic.php?t=5049
Moderators: Murderator+, Murderator
Code: Select all
sub SuperWalk(x,y,Target)
VAR i
VAR dir,ldir,rdir,key,olddir
VAR dx,dy,Exit=0
VAR CacheLimit=9,CacheIndex="Text"
DIM CacheX[10], CacheY[10]
CacheX[0]="Test"
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==0 AND dy==0 Then
Exit=1
Endif
Endif
If dx<>0 AND dy<>0 Then
If dx>0 AND dy>0 Then ; GoSE
dir=3
ldir=2
rdir=4
key=40 ; DownArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=0
rdir=1
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=5
rdir=6
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx>0 AND dy<0 Then ; GoNE
dir=1
ldir=0
rdir=2
key=39 ; RightArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=6
rdir=7
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 AND dy>0 Then ; GoSW
dir=5
ldir=4
rdir=6
key=37 ; LeftArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==6 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 AND dy<0 Then ; GoWN
dir=7
ldir=6
rdir=0
key=38 ; UpArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
If dx<>0 AND dy==0 Then
If dx>0 Then ; GoE
dir=2
key=34 ; PgDown
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoNE
dir=1
ldir=1
rdir=0
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 Then ; GoW
dir=6
key=36 ; Home key
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
If dx==0 AND dy<>0 Then
If dy>0 Then ; GoS
dir=4
key=35 ; End
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=6
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dy<0 Then ;GoN
dir=0
key=33 ; PgUp
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoWN
dir=7
ldir=7
rdir=6
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
Wend
end sub
sub StepEdit(x,y,dir,key)
VAR walkwait=300
VAR ErrLevel=0
If UO.GetDir()<>dir Then
checkstam()
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
checkstam()
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
If x==UO.GetX() AND y==UO.GetY() Then
;zatik
ErrLevel=1
Endif
Endif
Return ErrLevel
end sub
sub StepArrow(x,y,dir,ldir,rdir,key)
VAR walkwait=300
VAR ErrLevel=0
If UO.GetDir()<>dir Then
checkstam()
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then
CheckLag()
Endif
Endif
If UO.GetX()==x AND UO.GetY()==y Then
checkstam()
UO.Press(key)
wait(walkwait)
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
CheckLag()
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
; zatik
ErrLevel=1
Endif
Endif
Endif
Return ErrLevel
end sub
sub checkstam()
var refresh = '0x0F0B'
if uo.stamina < 10 then
uo.findtype(refresh,-1,'backpack')
if uo.findcount() then
uo.usetype(refresh)
wait(1000)
else
uo.print("Nety Refreshey! Stoim...")
repeat
wait(500)
until uo.stamina >= 10
endif
else
endif
endsub
Code: Select all
sub Walk()
var myobject=uo.getserial("laststatus")
var goX=uo.getx(myobject)
var goY=uo.gety(myobject)
#go to object X:Y in 0-1 cells range
gotoxy(5972,1493,1)
end sub
Code: Select all
superwalk(0,0,'0x0000000')
Code: Select all
superwalk(3876,3876,'')
Code: Select all
If UO.GetDistance(Target)<2 Then
Exit=1
Endif
Code: Select all
If dx==0 AND dy==0 Then
Exit=1
Endif
Code: Select all
Exit=1
slonopotam wrote:2) Большые препятствия обходит преобладающе справо, а в некоторых ситуациях так можно очень далеко зайти...![]()
Code: Select all
UO.asmGetTrace(UO.GetX(),UO.GetY(),DstX,DstY,BorderSize,MapNumber)
Code: Select all
;-------------------------------------------------------------------------------
; Система хождения по мировым координатам с обходом статичных препятствий
; Надежность ходьбы увеличена за счет скорости.
; Поэтому не рекомендуется использовать в ПвП ботах.
; DstX,DstY - координаты точки назначения
; BorderSize - размер рамки карты проходимости
; MapNumber - номер карты 0-4
; More - количество шагов на которое нужно подойти к цели.
; 0 - встать на цель
; 1 - драка с НПС (соседняя клетка)
; KeyPress - режим работы
; True - UO.Press()
; False - UO.AddStep()
SUB GoToXY(DstX,DstY,BorderSize,MapNumber,More,KeyPress)
UO.Print('GoTo '+STR(DstX)+','+STR(DstY))
Var Trace = UO.asmGetTrace(UO.GetX(),UO.GetY(),DstX,DstY,BorderSize,MapNumber)
If Len(Trace)>More then
WalkTrace(Mid(Trace,0,(Len(Trace)-More)),KeyPress)
EndIf
If (More==0) And (UO.GetX()<>DstX) And (UO.GetY()<>DstY) Then
GoToXY(DstX,DstY,BorderSize,MapNumber,More,KeyPress)
EndIf
END SUB
SUB WalkTrace(Trace,KeyPress)
If Len(Trace)==0 Then
Return 1
EndIf
For Var F = 0 To Len(Trace)-1
MakeStep(Mid(Trace,F,1),KeyPress)
Next
END SUB
SUB MakeStep(Key,KeyPress)
Var CurX = UO.GetX()
Var CurY = UO.GetY()
Var CurTime = 0
If KeyPress Then
UO.Press(KeyCode(Key),PressCount(Key))
Else
UO.AddStep(Key)
EndIf
Repeat
Wait(WalkTime)
CurTime = CurTime + WalkTime
Until (CurTime>MaxWalkTime) or (UO.GetX()<>CurX) or (UO.GetY()<>CurY)
END SUB
SUB KeyCode(Key)
If Key=='1' Then
Return 35
EndIf
If Key=='2' Then
Return 40
EndIf
If Key=='3' Then
Return 34
EndIf
If Key=='4' Then
Return 37
EndIf
If Key=='6' Then
Return 39
EndIf
If Key=='7' Then
Return 36
EndIf
If Key=='8' Then
Return 38
EndIf
If Key=='9' Then
Return 33
EndIf
Return 0
END SUB
SUB PressCount(Key)
If Key=='1' Then
If UO.GetDir()==4 Then
Return 1
Else
Return 2
EndIf
EndIf
If Key=='2' Then
If UO.GetDir()==3 Then
Return 1
Else
Return 2
EndIf
EndIf
If Key=='3' Then
If UO.GetDir()==2 Then
Return 1
Else
Return 2
EndIf
EndIf
If Key=='4' Then
If UO.GetDir()==5 Then
Return 1
Else
Return 2
EndIf
EndIf
If Key=='6' Then
If UO.GetDir()==1 Then
Return 1
Else
Return 2
EndIf
EndIf
If Key=='7' Then
If UO.GetDir()==6 Then
Return 1
Else
Return 2
EndIf
EndIf
If Key=='8' Then
If UO.GetDir()==7 Then
Return 1
Else
Return 2
EndIf
EndIf
If Key=='9' Then
If UO.GetDir()==0 Then
Return 1
Else
Return 2
EndIf
EndIf
Return 0
END SUB
SLAK wrote:на 505.11 незнает команды, так что видать - только для PE-версий
SLAK wrote:Как только на стелс выпустят ходилку, то все макросы можно будет на нём писать, а инжект останется для ПвП, ПвМ...
Эх скорее бы
Savage wrote:Последний билд от 4-го месяца. О каких темпах развития ты говоришь?
Паскаль не радует совсем