Page 1 of 1

Помогиде доработать мининг

Posted: 2007-06-24 16:22:01
by Greidon[Gods]
Проблемка в том, когда опкопает вокруг себя идет к сундуку, а потом ко второй точке, а хотельсь бы, чтоб скрипт обходил все точки потом относил все в сундук

Code: Select all

sub Na4alokopki() 
repeat 
while gotoxy(1661,2933,0) 
Mining() 
GoToHome() 
GoToMine() 
gotoxy(1656,2930,0) 
Mining() 
GoToHome() 
GoToMine() 
gotoxy(1653,2923,0) 
Mining() 
GoToHome() 
GoToMine() 
gotoxy(1651,2915,0) 
Mining() 
GoToHome() 
GoToMine() 
gotoxy(1648,2909,0) 
Mining() 
GoToHome() 
GoToMine() 
gotoxy(1647,2897,0) 
Mining() 
GoToHome() 
GoToMine() 
gotoxy(1646,2892,0)
end sub 

sub GoToHome() 
gotoxy(1647,2893,0) 
gotoxy(1652,2893,0) 
gotoxy(1652,2885,0)  
gotoxy(1625,2885,0) 
gotoxy(1619,2879,0)  
loot() 
end sub 

sub GoToMine() 
gotoxy(1625,2885,0) 
gotoxy(1652,2885,0) 
gotoxy(1652,2893,0) 
gotoxy(1647,2893,0)
gotoxy(1647,2911,0) 
gotoxy(1654,2918,0)
gotoxy(1654,2929,0)
gotoxy(1658,2933,0)
gotoxy(1661,2933,0)
end sub 


sub Mining() 
     var x,y,z, n 
     VAR LastTimer 
  UO.Set('finddistance','4') 
    n=0 
    z=UO.GetZ("self") 
       for x=-2 to 2 
       for y=-2 to 2 
      UO.Print(str(x)+" "+str(y)) 
           Repeat 
              if UO.InJournal('TORMOZ') then 
                pause() 
              endif 
              UO.DeleteJournal()              
              UO.Warmode("0") 
              UO.WaitTargetTile("1341",STR(UO.GetX()+x),STR(UO.GetY()+Y),str(z)) 
              UO.UseType('0x0E85') 
              LastTimer=UO.Timer() 
              Repeat 
                 wait(500) 
              Until UO.InJournal("You put")  or UO.InJournal("heavy") or UO.InJournal("can't see") or UO.InJournal("You cant mine in this Region.") or UO.InJournal("stop") or UO.InJournal("location") or UO.InJournal("no ore") or UO.InJournal("but fail") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("must wait") or UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("where it") OR UO.Timer()>LastTimer+200 
              if UO.InJournal("You put") then 
                  n=0 
              else 
                 n=n+1 
              endif 
           Until UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("no ore here") or UO.InJournal("location") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("where it") or UO.InJournal("Iron Ore") or UO.InJournal("Rusty Ore") or UO.InJournal("Bronze Ore") or UO.InJournal("Gold Ore") or UO.InJournal("Rose Ore") or UO.InJournal("Copper Ore") or UO.InJournal("Agapite Ore") or UO.InJournal("Shadow Ore") or UO.InJournal("Dull Copper Ore") or UO.InJournal("Old Copper Ore") or UO.InJournal("Silver Ore") or n>=5 
        next 
     next 
end sub 

sub loot() 
uo.UseSkill('Stealth') 
wait(3000) 
begin: 
if uo.waiting() then 
uo.canceltarget() 
endif 
VAR a,Exit 
VAR UnloadCont='0x402374BC' ; ID sunduka 
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.print('Пытаемся уйти в хайд...') 
uo.deletejournal() 
UO.UseSkill("Stealth") 
wait(4100) 
wend 
wait(100) 
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

Posted: 2007-06-25 08:34:34
by CoS

Code: Select all

sub Na4alokopki() 
repeat 
while gotoxy(1661,2933,0) 
Mining() 
gotoxy(1656,2930,0) 
Mining()  
gotoxy(1653,2923,0) 
Mining()  
gotoxy(1651,2915,0) 
Mining() 
gotoxy(1648,2909,0) 
Mining() 
gotoxy(1647,2897,0) 
Mining() 
gotoxy(1646,2892,0) 
end sub 

sub GoToHome() 
gotoxy(1647,2893,0) 
gotoxy(1652,2893,0) 
gotoxy(1652,2885,0)  
gotoxy(1625,2885,0) 
gotoxy(1619,2879,0)  
loot() 
end sub 

sub GoToMine() 
gotoxy(1625,2885,0) 
gotoxy(1652,2885,0) 
gotoxy(1652,2893,0) 
gotoxy(1647,2893,0) 
gotoxy(1647,2911,0) 
gotoxy(1654,2918,0) 
gotoxy(1654,2929,0) 
gotoxy(1658,2933,0) 
gotoxy(1661,2933,0) 
end sub 


sub Mining() 
     var x,y,z, n 
     VAR LastTimer 
  UO.Set('finddistance','4') 
    n=0 
    z=UO.GetZ("self") 
       for x=-2 to 2 
       for y=-2 to 2 
      UO.Print(str(x)+" "+str(y)) 
           Repeat 
              if UO.InJournal('TORMOZ') then 
                pause() 
              endif 
              UO.DeleteJournal()              
              UO.Warmode("0") 
              UO.WaitTargetTile("1341",STR(UO.GetX()+x),STR(UO.GetY()+Y),str(z)) 
              UO.UseType('0x0E85') 
              LastTimer=UO.Timer() 
              Repeat 
                 wait(500) 
              Until UO.InJournal("You put")  or UO.InJournal("heavy") or UO.InJournal("can't see") or UO.InJournal("You cant mine in this Region.") or UO.InJournal("stop") or UO.InJournal("location") or UO.InJournal("no ore") or UO.InJournal("but fail") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("must wait") or UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("where it") OR UO.Timer()>LastTimer+200 
              if UO.InJournal("You put") then 
                  n=0 
              else 
                 n=n+1 
              endif 
           Until UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("no ore here") or UO.InJournal("location") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("where it") or UO.InJournal("Iron Ore") or UO.InJournal("Rusty Ore") or UO.InJournal("Bronze Ore") or UO.InJournal("Gold Ore") or UO.InJournal("Rose Ore") or UO.InJournal("Copper Ore") or UO.InJournal("Agapite Ore") or UO.InJournal("Shadow Ore") or UO.InJournal("Dull Copper Ore") or UO.InJournal("Old Copper Ore") or UO.InJournal("Silver Ore") or n>=5 
        next 
     next 
end sub 

sub loot() 
uo.UseSkill('Stealth') 
wait(3000) 
begin: 
if uo.waiting() then 
uo.canceltarget() 
endif 
VAR a,Exit 
VAR UnloadCont='0x402374BC' ; ID sunduka 
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.print('Пытаемся уйти в хайд...') 
uo.deletejournal() 
UO.UseSkill("Stealth") 
wait(4100) 
wend 
wait(100) 
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 

Posted: 2007-06-25 09:51:20
by Greidon[Gods]
Ничего не понял :roll: тот же скрипт кинул=)

Posted: 2007-06-25 14:22:27
by CoS
несовсем =)
я в начале переделал
щас должно быть так как ты хочешь

Posted: 2007-06-25 14:39:34
by Greidon[Gods]
CoS wrote:несовсем =)
я в начале переделал
щас должно быть так как ты хочешь
неа, все то же самое :cry:
Мб ты просто не тот скинул?

Posted: 2007-06-25 14:47:17
by CoS
попробуй скопировать именно тот скрипт что скинул я =)
я там просто вычеркнул походы домои
так как ты просил

Posted: 2007-06-25 14:57:35
by Greidon[Gods]
CoS wrote:попробуй скопировать именно тот скрипт что скинул я =)
я там просто вычеркнул походы домои
так как ты просил
Нет, походы домой мне нужны, только после того, как чар пройдет по всем координатам и обкопает, загрузил ьвой, все равно скрипт после обкопки одного координата идет к сундуку=(