Мининг

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Dominator
Posts: 124
Joined: 2005-04-06 05:53:47

Мининг

Post by Dominator »

Проверьте плиз скрипт на мининг , я его слепил из нескольких скриптов ну и само собой дописал отсебя ,вообщем проблема такая - когда чар 1 раз ударяет киркой скрипт вылетает.
почему так происходит я понять никак немогу - инжа ошибок у меня непишет никаких


Code: Select all

sub adad()     # его запускать чтоб скрипт на мининг работал
begin:
gotoxy(2432,93,0)   
Miningg()
gotoxy(2431,93,0)
gotoxy(2430,93,0)
gotoxy(2429,93,0)
gotoxy(2429,94,0)
gotoxy(2428,94,0)
Miningg()
gotoxy(2428,93,0)
gotoxy(2428,92,0)
gotoxy(2428,91,0)
gotoxy(2428,90,0)
gotoxy(2428,89,0)
gotoxy(2428,88,0)
Miningg()


sub Miningg()
var mx, my, mz, i, j, jor, ser, noto
Uo.exec("set norbcheck 1"); для рекола
uo.exec("set norbcalc 1"); тоже

uo.print('!!Выбери Лопату!! ')
uo.exec('addobject Shovel')
while uo.targeting()
wait(100)
wend
mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")
UO.DeleteJournal()
for i = mx-4 to mx+4
for j = my -4 to my+4
while not UO.Hidden()
UO.Warmode("0")
uo.print("Прячемся...")
UO.UseSkill("Hiding")
wait(4000)
wend
UO.Print("Копаем в координатах: "+str(mx-i)+" "+str(my-j))
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Iron Ore") and not UO.InJournal("Copper") and not UO.InJournal("Rusty Ore")
UO.DeleteJournal()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile("1341", str(i), str(j), str(mz))
UO.Useobject("Shovel")
while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock")
wait (500)
if uo.injournal("heavy") or uo.dead() then
pwav()                   
Pause()
endif
for jor = 0 to 9   
ser = uo.journalserial(jor)
noto = uo.getnotoriety(ser)
if noto <> 1 and noto <> 0 and not uo.injournal("elemental") then
endif
next   
wend
if uo.weight > 500 then  # Максимальный вес при котором домой с рудой
wait(500)
uo.exec("recall 0x401A3FC9") # Go to Home ########################
xodilka()
wait(10000)
loot()
wait(3000)
reccal:                               
uo.deletejournal()
if uo.waiting() then
uo.canceltarget()
endif
uo.exec("recall 0x401A3FE7") # Go to Mine  #########################
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 Miningg
end sub
 
sub xodilka()            # ходилка к разгрузочному судуку
gotoxy(2545,120,1)
gotoxy(2546,120,1)
gotoxy(2547,120,1)
gotoxy(2548,120,1)
gotoxy(2549,120,1)
gotoxy(2547,118,1)
gotoxy(2547,115,1)
gotoxy(2547,112,1)
end sub

sub loot()    ; перекладка руды в сундук
begin:
if uo.waiting() then
uo.canceltarget()
endif
VAR a,Exit
VAR UnloadCont='0x40118DFF' ; ID сундука для руды 
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

sub tohide()
   while NOT UO.Hidden()
      UO.DeleteJournal()
      UO.UseSkill('Stealth')
      repeat
         wait(50)
      until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide')
   wend
end sub

sub CheckLag()
   UO.DeleteJournal()
   UO.Click('backpack')
   repeat
      wait(50)
   until UO.InJournal('backpack')
end sub

sub getcoord()
var a,b,c
   a = UO.GetX("self")
   b = UO.GetY("self")
   c = UO.GetZ("self")
   
   UO.Print("Position  "+STR(a)+", "+STR(b)+", "+STR(c))
end sub

sub gotoxy(x,y,prec)     #ходилка
var ld=0,ldc=0
var dx,dy
var mx,my
var ox,oy,mk,k
#uo.print(">")
#uo.track("1",str(x),str(y))
start:
mx=UO.GetX()
my=UO.GetY()
dx=mx-x
if dx<0 then
dx=0-dx
endif
dy=my-y
if dy<0 then
dy=0-dy
endif
if dy>dx then
dx=dy
end if
if dx<=prec then
return
end if
if not ldc then
uo.print(STR(dx))
end if
if dx<3 then
mk=70
else
mk=15
end if
ox=mx
oy=my
for k=1 to mk
mx=UO.GetX()
my=UO.GetY()
if mx<>ox or my<>oy then
goto sdidapl
end if
wait(10)
next
sdidapl:
mx=UO.GetX()
my=UO.GetY()
dx=mx-x
if dx<0 then
dx=0-dx
endif
dy=my-y
if dy<0 then
dy=0-dy
endif
if dy>dx then
dx=dy
end if
if dx<=prec then
return
end if
if ld==dx then
ldc=ldc+1
if ldc>100 then
uo.print("Can not reach location!")
return
end if
else
ld=dx
end if
if mx==x then
if my==y then
return
endif
if my>y then
#UO.Print("UR")
UO.Press(33)
goto start
endif
#UO.Print("DL")
UO.Press(35)
goto start
end if
if mx<x then
if my>y then
#UO.Print("R")
UO.Press(39)
goto start
endif
if my==y then
#UO.Print("DR")
UO.Press(34)
goto start
endif
#UO.Print("D")
UO.Press(40)
goto start
end if
if my<y then
#UO.Print("L")
UO.Press(37)
goto start
endif
if my==y then
#UO.Print("LU")
UO.Press(36)
goto start
endif
#UO.Print("U")
UO.Press(38)
goto start
end sub
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Post by Nmy »

ждём експертов
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Может быть всё что угодно... Например где-то ретёрн забыл удалить или вот например пустой оператор:
if noto <> 1 and noto <> 0 and not uo.injournal("elemental") then
endif


Вобщем ищи сам :wink: , я смотрел 5 минут и теперь глаза болят....
DerMeister сейчас на нейрале!
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Попробуй сначала упростить скрипт. Ходилка например, может тебя привести к конечным координатам, зачем ее запускать на 1 шаг?

Чтобы проверить сообщение журнала, достаточно одного слова, особенно если слово повторяется в нескольких разных сообщениях.

Скрипт станет меньше, копаться в нем станет проще.
Dominator
Posts: 124
Joined: 2005-04-06 05:53:47

Post by Dominator »

Savage wrote:Попробуй сначала упростить скрипт. Ходилка например, может тебя привести к конечным координатам, зачем ее запускать на 1 шаг?

Чтобы проверить сообщение журнала, достаточно одного слова, особенно если слово повторяется в нескольких разных сообщениях.

Скрипт станет меньше, копаться в нем станет проще.



Пасиб учту твои замечания,как нить исправлю, щас прост времени нету - сессия
Post Reply