Получилось следующее:
Code: Select all
sub mine()
var x, y, i, tmp, inside, goto_x, st, first
st=0
first=UO.GetX()
start:
inside=0
for y=-2 to 2
for x=-2 to 2
try:
UO.Exec ("waittargettile "+" 1340 "+STR(UO.GEtX()+x)+" "+STR(UO.GetY()+y)+" 0")
UO.exec ("usetype 0x0E85")
i=0
while i< 100
if UO.InJournal("You loosen some rocks but fail to find any useable ore") then
wait (1000)
i=200
UO.DeleteJournal()
goto try
endif
if UO.InJournal("Try mining elsewhere") then
i=200
UO.DeleteJournal()
endif
if UO.InJournal("You cant mine in this Region.") then
i=200
UO.DeleteJournal()
endif
if UO.InJournal("You must wait to perform another action") then
wait (1000)
i=200
UO.DeleteJournal()
goto try
endif
if uo.InJournal("till") then
wait(1000)
i=200
UO.DeleteJournal()
goto try
endif
if uo.InJournal("Elemental") or uo.InJournal("is attacking you") then
killelem()
wait(1000)
i=200
UO.DeleteJournal()
goto try
endif
if UO.InJournal("There is nothing here to mine for") then
wait (1000)
i=200
UO.DeleteJournal()
endif
if UO.InJournal("You have no line of sight to that location") then
wait (1000)
i=200
UO.DeleteJournal()
endif
if UO.InJournal("You stop Mining") then
i=200
UO.DeleteJournal()
endif
if UO.InJournal("That is too far away.") then
i=200
UO.DeleteJournal()
endif
wait (500)
i=i+1
if uo.weight > 700 then
goto end
endif
wend
UO.DeleteJournal()
next
next
goto mine
if st == 0 then
goto_x=UO.GetX()+5
while inside < 10
while UO.GetX() < goto_x
UO.Press (39, 1, 500)
inside=0
wend
while UO.GetX() > goto_x
UO.Press (37, 1, 500)
inside=0
wend
inside=inside+1
wait (300)
wend
st=1
goto start
endif
if st == 1 then
while inside < 10
while UO.GetX() < first
UO.Press (39, 1, 500)
inside=0
wend
while UO.GetX() > first
UO.Press (37, 1, 500)
inside=0
wend
inside=inside+1
wait (300)
wend
st=0
endif
end:
if uo.waiting() then
uo.canceltarget()
endif
uo.recall("0x4009A550, 0x0002") ; домой
wait(10000)
wait(3000)
wend
reccal:
uo.deletejournal()
if uo.waiting() then
uo.canceltarget()
endif
uo.recall("0x4009A550, 0x0009") ; в шахту
mx = UO.GetX("self")
my = UO.GetY("self")
wait(10000)
if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then ; здесь не могу подогнать под свои переменные
goto reccal
endif
goto mine
end sub
sub loot()
if uo.waiting() then
uo.canceltarget()
endif
VAR a,Exit
VAR UnloadCont='0x400E6C37' ; сундук
DIM Ore[5]
Ore[0]=0x19B9 ; 4 and more ore
Ore[1]=0x19B7 ; 1 ore
Ore[2]=0x19BA ; 2 ore
Ore[3]=0x19B8 ; 3 ore
UO.SetReceivingContainer(UnloadCont)
wait(500)
For a=0 to 3
Exit=0
repeat
UO.FindType(Ore[a])
if UO.GetQuantity('finditem')>0 then
UO.Grab('0','finditem')
wait(1500)
Else
Exit=1
endif
until Exit==1
Next
UO.UnSetReceivingContainer()
end sub
Постоянно выдает ошибки, не могу запустить, а т.к. в инжекте разбираюсь не очень хорошо - не могу исправить.
После добавления новых функций типа end:, reccall:, выдает ошибку о том, что не понимает, что такое start;...
Подскажите пожалуйста, что надо исправить в скрипте. Заранее спасибо
