если в общих чертах то 99% проблема в отсутствии ключевой фразы. Делаешь следующее:
Code:
var bag = '0x401ACB56'
var ore1 = '0x19B7'
var ore2 = '0x19B8'
var ore3 = '0x19B9'
var ore4 = '0x19BA'
var timemove
sub main()
VAR i
while 1==1
Go_To(2583,2809,0)
min()
Go_To(2583,2811,0)
min()
Go_To(2583,2815,0)
min()
Go_To(2583,2819,0)
min()
Go_To(2583,2823,0)
min()
Go_To(2583,2827,0)
min()
Go_To(2583,2831,0)
min()
Go_To(2579,2831,0)
min()
Go_To(2578,2828,0)
min()
Go_To(2578,2824,0)
min()
Go_To(2578,2820,0)
min()
Go_To(2578,2816,0)
min()
Go_To(2578,2813,0)
min()
Go_To(2578,2809,0)
min()
Go_To(2575,2806,0)
min()
Go_To(2571,2809,0)
min()
Go_To(2571,2813,0)
min()
Go_To(2571,2817,0)
min()
Go_To(2570,2820,0)
min()
Go_To(2570,2824,0)
min()
Go_To(2570,2828,0)
min()
Go_To(2570,2832,0)
min()
Go_To(2564,2833,0)
min()
wend
end sub
Sub tohome()
var x = uo.GetX('self')
var y = uo.GetY('self')
Go_To(2582,2809,0)
Go_To(2591,2809,5)
Go_To(2597,2805,0)
wait(100)
UO.UseObject(bag)
wait(1000)
putore()#Выгружаемся
wait(100)
Go_To(2597,2805,0)
Go_To(2592,2808,5)
Go_To(x,y,0)
wait(100)
end sub
Sub putore()
put(ore1,bag)
put(ore2,bag)
put(ore3,bag)
put(ore4,bag)
end sub
Sub PUT(item, cont)
while UO.Count( item ) > 0
UO.FindType( item, -1, -1 )
timemove=UO.Timer()
uo.MoveItem('finditem',0,cont)
repeat
wait(100)
until UO.ContainerOf('finditem')<>cont || timemove+30>UO.Timer()
wend
end sub
Sub min()
var x,y,z
VAR LastTimer
VAR msall = "руд|алеко|nothing here|t use|ы переместили|loosen some rocks|location|ry mining|t see that|ou stop|hat is too|ы не смогли|not mine"
VAR msend = "руд|алеко|nothing here|t use|location|ry mining|t see that|ou stop|hat is too|not mine"
z=UO.GetZ("self")
for y=-2 to 2
for x=-2 to 2
UO.Print(str(x)+" "+str(y))
if uo.weight > 500 then #Вес при котором идем домой
tohome()
endif
repeat
uo.deletejournal()
UO.WaitTargetTile("1341",STR(UO.GetX()+x),STR(UO.GetY()+Y),str(z))
UO.UseType('0x0E85')
LastTimer=UO.Timer()
repeat
wait(50)
until UO.InJournal(msall) OR UO.Timer()>LastTimer+100
until UO.InJournal(msend)
next
next
end sub
Sub Step(x,y,mx,my,forstep)
if uo.GetX('self') <> x then
if uo.GetY('self') <> y then
if mx<0 then
if my<0 then
uo.Press(40)
wait(forstep)
else
uo.Press(39)
wait(forstep)
end if
else
if my<0 then
uo.Press(37)
wait(forstep)
else
uo.Press(38)
wait(forstep)
end if
end if
else
if mx<0 then
uo.Press(34)
wait(forstep)
else
uo.Press(36)
wait(forstep)
end if
end if
else
if my<0 then
uo.Press(35)
wait(forstep)
else
uo.Press(33)
wait(forstep)
end if
end if
end sub
Sub Go_To(x,y,abc)
var mx,my,fx,fy
var xx=x
var yy=y
var DistX=0
var DistY=1
var forstep=300
repeat
mx=uo.GetX('self')-x
my=uo.GetY('self')-y
fx=mx+x
fy=my+y
Step(xx,yy,mx,my,forstep)
until x==fx+DistX && y==fy+DistY || x==fx-DistX && y==fy+DistY || x==fx+DistX && y==fy-DistY || x==fx-DistX && y==fy-DistY || x==fx && y==fy
end sub
VAR msall = "алеко|nothing here|t use|ы переместили|loosen some rocks|location|ry mining|t see that|ou stop|hat is too|ы не смогли|not mine" ; все возможные фразы в журнале
VAR msend = "алеко|nothing here|t use|location|ry mining|t see that|ou stop|hat is too|not mine" ; фразы при которых надо переходить на следующий тайл
Можно (и даже ЛУЧШЕ) писать куски слов - потому что для проверки журнала "Далеко" и "далеко" это два разных слова и надо записывать либо оба слова либо "алеко"
Если какая то фраза проскакивать будет перед застопориванием - добавляй её в эти две строчки и все.