ходьба - WalkN(2562,471,'')
копка - mining()
желательно менять на свои координаты. желательно ходить по кругу а не через всю шахту к 1й координаты
Code:
var pickaxe
sub main()
while 1
WalkN(2562,471,'')
mining()
WalkN(2559,471,'')
mining()
WalkN(2558,468,'')
mining()
WalkN(2561,466,'')
mining()
WalkN(2564,464,'')
mining()
WalkN(2567,461,'')
mining()
WalkN(2568,458,'')
mining()
WalkN(2568,455,'')
mining()
WalkN(2569,452,'')
mining()
WalkN(2571,449,'')
mining()
WalkN(2573,447,'')
mining()
WalkN(2574,444,'')
mining()
WalkN(2577,446,'')
mining()
WalkN(2580,448,'')
mining()
WalkN(2584,448,'')
mining()
WalkN(2585,452,'')
mining()
WalkN(2581,454,'')
mining()
WalkN(2579,453,'')
mining()
WalkN(2576,452,'')
mining()
WalkN(2573,452,'')
mining()
WalkN(2571,455,'')
mining()
WalkN(2571,458,'')
mining()
WalkN(2570,461,'')
mining()
WalkN(2569,464,'')
mining()
WalkN(2566,466,'')
mining()
WalkN(2563,468,'')
mining()
wend
endsub
sub hiding()
if uo.warmode() <> 0 then
uo.warmode(0)
endif
uo.useskill('Hiding')
endsub
sub test()
uo.msg("WalkN("+str(UO.GetX('self'))+","+str(UO.GetY('self'))+",'')")
uo.msg("mining()")
endsub
sub mining()
var mx, my, mz, i, j, f, rad=2
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
for i = mx-rad to mx+rad
for j = my-rad to my+rad
repeat
if uo.injournal('You loosen some rocks but fail') then
wait(10000)
endif
if uo.dead() then
uo.exec('terminate all')
endif
UO.Print('Mining in: '+str(mx-i)+' '+str(my-j))
DigAhole(i,j,mz)
until not uo.injournal('You loosen some rocks but fail')
next
next
Drop()
endsub
Sub Drop()
uo.findtype('0x19B9','0x0000','backpack')#iron
if uo.findcount() > 0 then
UO.Drop('-1',1,1,0,'finditem')
wait(300)
endif
uo.findtype('0x19B9','0x0AB2','backpack')#copper
if uo.findcount() > 0 then
UO.Drop('-1',1,1,0,'finditem')
wait(300)
endif
uo.findtype('0x19B9','0x0488','backpack')#bronze
if uo.findcount() > 0 then
UO.Drop('-1',1,1,0,'finditem')
endif
endsub
sub DigAhole(i,j,mz)
var f, tile=uo.hex2int(UO.PrivateGetTile(i, j, -1, 1339, 1363))
if tile <= 0 then
return
endif
pickaxe=uo.getserial(uo.objatlayer("Rhand"))
for f=0 to 10
checklag()
uo.waittargettile(tile,i,j,mz)
if uo.objatlayer("Rhand") then
uo.useobject(pickaxe)
else
uo.usetype('0x0E86')
wait(1000)
pickaxe=uo.getserial(uo.objatlayer("Rhand"))
endif
if waitforore() == 1 then
return
endif
next
endsub
sub waitforore()
var n
for n=0 to 50
if uo.injournal("no ore here|location|far away|in rock|You have been revealed|There is nothing|You can't reach|You put the Iron|You put the Copper|You put the Bronze|Try mining elsewhere") then
return 1
endif
if uo.injournal('but fail|You put') then
return
endif
wait(500)
next
endsub
sub checklag()
repeat
UO.DeleteJournal()
UO.Click('backpack')
until backpack()==1
endsub
sub backpack()
var n
for n=0 to 200
if uo.injournal('cliloc# 0xFEA1B') then
return 1
endif
wait(200)
next
endsub
sub WalkN(x,y,Target) ########################################## ???????
VAR LastTimer
LastTimer=UO.Timer()
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"
uo.say('')
While Exit<>1
If Target<>"" Then
dx=UO.GetX(Target)-UO.GetX()
dy=UO.GetY(Target)-UO.GetY()
If UO.GetDistance(Target)<2 OR LastTimer+100<UO.Timer() Then
wait(1000)
return
Endif
Else
dx=x-UO.GetX()
dy=y-UO.GetY()
If dx==0 AND dy==0 OR LastTimer+100<UO.Timer() Then
return
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
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
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
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
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