Требуется помощь со скриптом. (выдает ошибки)

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
Murderbot
Posts: 6
Joined: 2008-10-02 15:54:27

Требуется помощь со скриптом. (выдает ошибки)

Post by Murderbot »

Собственно попытался соединить пару скриптов на мининг, дабы сделать тот который подойдет к моему шарду (Oldparadise).
Получилось следующее:

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;...

Подскажите пожалуйста, что надо исправить в скрипте. Заранее спасибо :)
Post Reply