Здавствуйте.Помогите пожалуйста поправить скриптик.
Code:
sub main() 
while not uo.dead() 
go(1455,1529,0) 
go(1455,1529,1) 
go(1453,1529,1) 
go(1452,1529,1) 
go(1450,1530,1) 
go(1448,1528,1) 
go(1447,1527,1) 
go(1445,1526,1) 
go(1444,1524,1) 
go(1446,1522,1) 
go(1448,1522,1) 
go(1451,1521,1) 
go(1452,1520,1) 
go(1452,1518,1) 
go(1450,1517,1) 
go(1448,1515,1) 
go(1450,1513,1) 
go(1450,1511,1) 
go(1450,1509,1) 
go(1451,1507,1) 
go(1453,1505,1) 
go(1455,1505,1) 
go(1457,1506,1) 
go(1455,1505,1) 
go(1453,1505,1) 
go(1451,1507,1) 
go(1450,1509,1) 
go(1450,1511,1) 
go(1450,1513,1) 
go(1448,1515,1) 
go(1450,1517,1) 
go(1452,1518,1) 
go(1452,1520,1) 
go(1451,1521,1) 
go(1448,1522,1) 
go(1446,1522,1) 
go(1444,1524,1) 
go(1445,1526,1) 
go(1447,1527,1) 
go(1448,1528,1) 
go(1450,1530,1) 
go(1452,1529,1) 
go(1453,1529,1) 
wend 
endsub 
sub minround() 
VAR Kirka = '0x0e85' 
VAR TileNum = '1339' 
VAR x, y, t, k 
VAR MaxTime = 100 
VAR ms1 = "There is no ore here to mine" 
VAR ms2 = "You can't use" 
VAR ms3 = "You put the" 
VAR ms4 = "You loosen some rocks" 
VAR ms5 = "You are too far away" 
VAR ms6 = "Try mining in rock" 
VAR ms7 = "You can't see that" 
var kolr,per 
for y=-1 to 1 
for x=-1 to 1 
k = 0 
repeat 
UO.DeleteJournal() 
t = UO.Timer() 
k = k + 1 
if uo.targeting() then 
UO.CancelTarget() 
endif 
CheckLag() 
wait(300) 
ToHide() 
UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0) 
UO.UseType( Kirka ) 
repeat 
wait(300) 
until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR ((t + MaxTime) < UO.Timer()) 
uo.findtype('0x19B9','-1','backpack') 
kolr=uo.getquantity('finditem') 
per=uo.str*4+30-uo.weight 
uo.print("kol-vo irona " + str(kolr) + " do perevesa " + str(per)) 
if per<=30 then 
ToRecall()
wait(700) 
endif 
until ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms3) OR (k > 10) ) 
next 
next 
endsub 
Sub go(x,y,k) 
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 
dx=x-UO.GetX() 
dy=y-UO.GetY() 
If dx==0 AND dy==0 Then 
Exit=1 
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 
if k==1 then 
minround() 
endif 
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 
Sub CheckLag() 
UO.DeleteJournal() 
UO.Click('backpack') 
repeat 
wait(50) 
until UO.InJournal('backpack') 
end sub 
Sub ToHide() 
var CheckTime 
while NOT UO.Hidden() 
UO.Print('Hidden...') 
UO.Exec("warmode 0") 
wait(1000) 
UO.UseSkill('Stealth') 
CheckTime=UO.Timer() 
REPEAT 
wait(300) 
Until UO.Hidden() or CheckTime+60<uo.Timer() or UO.Dead() 
Wend 
End sub 
sub ToRecall()
RecallToHome()
wait (10000)
DropOre()
wait (10000)
RecallToOre()
wait (10000)
end sub
sub RecallToHome()
uo.Print('Прыгаем Домой.')
uo.exec("recall Runebook 21") ; домой ( в рунбуке слот 1 )
end sub
sub RecallToOre()
uo.Print('Прыгаем в Пещеру.')
uo.exec("recall Runebook 94") ; домой ( в рунбуке слот 8 )
end sub
sub DropOre()
VAR Chest='0x400AFA2F'
var o,exit
dim Ore[14]
Ore[0]=0x19B9
Ore[1]=0x19B7
Ore[2]=0x19BA
Ore[3]=0x19B8 
Ore[4]=0x0F11
Ore[5]=0x0F16 
Ore[6]=0x0F18 
Ore[7]=0x0F15
Ore[8]=0x0F10
Ore[9]=0x0F0F
Ore[10]=0x0F26
Ore[11]=0x1F4C 
Ore[12]=0x0EED
Ore[13]=0x0F20 
ToHide()
if uo.Waiting() then
uo.CancelTarget()
end if
uo.SetReceivingContainer('Chest')
wait(500)
for o=0 to 13
exit=0
repeat
uo.FindType(Ore[o])
if uo.GetQuantity('finditem')>0 then
uo.Grab('0','finditem')
wait(1500)
else
exit=1
end if
until exit==1
next
uo.UnSetReceivingContainer('Chest')
end sub
Минут 5 копает потом выдает ошибку.Помогите пожалуйста.