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

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