Page 1 of 1

Мининг на точках

Posted: 2006-07-27 20:53:39
by TpABKa
Уважаемый народ ! :)
Прошу вас помочь со скриптом на мининг
Суть такова: Нужно что бы чар ходил по точкам которые брал из файла (тем самым в фаил их заношу я (.set))
Заранее спасибо!

Posted: 2006-07-27 22:58:33
by Ex-Brodyaga

Code: Select all

###########################################################
#   Main Mining Function! Conf. Needed (look above)
############################################################
sub go_mining()
   var cycle=1 # 1 - çàöèêëèðîâàòü, 0 - íåò
   var path="9k5ki9o3oi9k3ki9o2oi9kk9l8o5n" # âñå â êàâû÷êàõ î÷èñòèòü âíà÷àëå ñêðèïòà
   var test=0
   var i=0
   var j
   #UO.SetCatchBag("oresBag")
   UO.DeleteJournal()   

   While i<LEN(path)
      if VAL(path[i]) then
         j=VAL(path[i])
         i=i+1
      else
         j=1
      endif

      Repeat
         if test<>1 then
            UO.DeleteJournal()
            mine_spot()
         end if       

         UO.Print("New Location!")
         if not make_step(path[i]) then
            UO.Print("Probably Stuck!")
            UO.Print("Hope it is a Worldsave")
         endif
         j=j-1
      Until j==0
       
      i = i + 1
      if cycle && i==LEN(path) then
         i=0
      endif
   Wend
end sub

############################################################
#   Auxilliar Function. Little mod needed (look above)
############################################################
sub mine_spot()
UO.DeleteJournal()
   var maxMineTime=7000
   var times=0
   var timeout=0
   var try=0
   ToHide()
   While (UO.InJournal("There is no")OR UO.InJournal("Try mining") OR UO.InJournal("Òóò íå îñòàëîñü") or try>6)==0
    try=try+1
    UO.Print("Try = "+str(try))
      UO.Print("Mining time!")
      UO.DeleteJournal()
      UO.WaitTargetTile("1339",STR(UO.GetX()),STR(UO.GetY()),"0")
      UO.UseType("0x0E85")
      timeout=0
      times = times +1
      if times>20 then
       wait(maxMineTime)
          times = 0
      endif
         Repeat
            timeout=timeout+1000
           Wait(1000)
            #UO.Print("Waiting...")
       Until UO.InJournal("You put") OR UO.InJournal("There is no ore") OR UO.InJournal("Try mining") OR UO.InJournal("You loosen")OR UO.InJournal("Òóò íå îñòàëîñü") OR timeout>maxMineTime
   Wend
   return 0
end sub

############################################################
#   Main Path-Recording function!
############################################################
sub record_path()
   var x
   var y
   var path=""
   UO.DeleteJournal()
   Repeat
      x=UO.GetX()
      y=UO.GetY()
      if waitNewPos(x,y) then
         path=path+extract_dir(x,y,UO.GetX(),UO.GetY())
      endif
   Until UO.InJournal("stop")
   path = compressPath(path)
   UO.TextClear()
   UO.TextOpen()
   UO.TextPrint("Your path is:")
   UO.TextPrint(path)
end sub

############################################################
#   Auxilliar sub.
############################################################
sub send_step(keycode,dir)
   var x = UO.GetX()
   var y = UO.GetY()
   var timeout = 0
   if UO.GetDir()<>dir then
      UO.Press(keycode)
      Repeat
         wait(50)
      Until UO.GetDir()==dir
   endif
   UO.Press(keycode)
   Repeat
      timeout=timeout+50
      wait(50)
   Until x<>UO.GetX() || y<>UO.GetY() || timeout>2000
   if timeout>2000 then
      return 0
   endif
   return 1
end sub

############################################################
#   Bunch of auxilliar subs. No need to change anything!
############################################################
sub waitNewPos(x,y)
   while x==UO.GetX() && y==UO.GetY()
      if UO.InJournal("stop") then
         return 0
      endif
   wend
   return 1
end sub

sub compressPath(path)
   Var i=0
   Var j=0
   Var newPath=""
   while i<LEN(path)
      j=1
      while path[i]==path[i+1] AND j<9
         i=i+1
         j=j+1
      wend
      if j==1 then
         newPath=newPath+path[i]
      else
         newPath=newPath+STR(j)+path[i]
      endif
      i=i+1
   wend
   return newPath
end sub

sub extract_dir(x,y,a,b)
   if x>a then
      if y==b then
         return "i"
      else
         if y>b then
            return "n"
         else
            return "w"
         endif
      endif
   else
      if x<a then
         if y==b then
            return "l"
         else
            if y>b then
               return "e"
            else
               return "s"
            endif
         endif
      else
         if y>b then
            return "o"
         else
            return "k"
         endif
      endif
   endif
end sub

sub make_step(dir)
   if dir=="e" then
      send_step(39,1)
      return 1
   endif
   if dir=="l" then
      send_step(34,2)
      return 1
   endif
   if dir=="s" then
      send_step(40,3)
      return 1
   endif
   if dir=="k" then
      send_step(35,4)
      return 1
   endif
   if dir=="w" then
      send_step(37,5)
      return 1
   endif
   if dir=="i" then
      send_step(36,6)
      return 1
   endif
   if dir=="n" then
      send_step(38,7)
      return 1
   endif
   if dir=="o" then
      send_step(33,0)
      return 1
   endif
   if dir=="d" then
      While UO.Count("0x19b9")
         UO.Drop("0x19b9")
         wait(1000)
      Wend
      wait(200)
      return 1
   endif
   UO.Print("Recall Time!")
   return 0
end sub

sub ToHide()
while not uo.Hidden()
uo.Print('Hidding...')
uo.DeleteJournal()
uo.UseSkill('Stealth')
wait(6000)
wend
wait(100)
end sub


врубаешь record_path и ходишь по своему маршруту, а когда прошёл говоришь чаром stop появится окно со стокой, её втавляй в скрипт в строке где path и включай go_mining и будет тебе счастье ;)

Posted: 2006-07-28 00:35:18
by TpABKa
вроде пробывал а он не хо4ет ходить -(

Posted: 2006-07-29 13:36:52
by XpyCmuK

Code: Select all

var path="9k5ki9o3oi9k3ki9o2oi9kk9l8o5n"

Значение свое поставил??

Posted: 2006-07-31 08:16:09
by Lord
У меня очень странная ошибка, обошел всю шахту строку земенил. Включил go_mining, скрипт использует кирку, сервак спрашивает где копать, но прицел никуда не направляется, после 7 таких пустых попыток, чар идет дальше и так во всей шахте. Помогите разобраться.

Posted: 2006-07-31 15:48:23
by Dominator
Вообщем вот скрипт,тама ты только тайлы поменяй на свои (за смотри все внимательно обьснять я недумаю что надо тама слишком просто всё)


Code: Select all

sub Na4alokopki()
while gotoxy(3669,2175,0)
Mining()
GoToHome()
GoToMine()
gotoxy(3665,2175,0)
Mining()
GoToHome()
GoToMine()
gotoxy(3661,2175,0)
Mining()
GoToHome()
GoToMine()
gotoxy(3657,2175,0)
Mining()
GoToHome()
GoToMine()
gotoxy(3653,2175,0)
Mining()
GoToHome()
GoToMine()
gotoxy(3649,2175,0)
Mining()
GoToHome()
GoToMine()
gotoxy(3645,2175,0)
Mining()
GoToHome()
GoToMine()
gotoxy(3641,2175,0)
Mining()
GoToHome()
GoToMine()
wend
end sub

sub GoToHome()
gotoxy(3662,2175,0)
gotoxy(3662,2193,0)
gotoxy(3655,2193,0)
gotoxy(3655,2207,0)
gotoxy(3637,2207,0)
gotoxy(3637,2207,0)
gotoxy(3637,2211,0)
loot()
end sub

sub GoToMine()
gotoxy(3637,2209,0)
gotoxy(3655,2207,0)
gotoxy(3655,2193,0)
gotoxy(3662,2193,0)
gotoxy(3662,2175,0)
gotoxy(3669,2175,0)
end sub


sub Mining()
     var x,y,z, n
     VAR LastTimer
  UO.Set('finddistance','2')
    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("can't see") or UO.InJournal("heavy") 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 n>=5
        next
     next
end sub

sub loot()    ;
begin:
if uo.waiting() then
uo.canceltarget()
endif
VAR a,Exit
VAR UnloadCont='0x400115BA' ; 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 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: 2006-08-08 16:04:20
by CHECK
да не человек имел ввиду
что он хочет такой скрипт
чтобы как ламбер сначало типо деревья задаешь потом он их рубит
вот и мининг такой необходим
типо каумшки по лесу забиндил и фигаршь капаешь )))
вот

Posted: 2006-08-08 16:10:00
by CHECK
XpyCmuK wrote:

Code: Select all

var path="9k5ki9o3oi9k3ki9o2oi9kk9l8o5n"

Значение свое поставил??

эм а че тама за значение ?

Posted: 2006-08-10 05:59:02
by Dominator
CHECK wrote:да не человек имел ввиду
что он хочет такой скрипт
чтобы как ламбер сначало типо деревья задаешь потом он их рубит
вот и мининг такой необходим
типо каумшки по лесу забиндил и фигаршь капаешь )))
вот


Ясно,я прост непонял сразу. а потипу ламбера я сделать немогу ыыы
я ламбер никогда некачал

Posted: 2006-09-08 17:24:10
by rtyr
Ex-Brodyaga wrote:[code]
###########################################################
# Main Mining Function! Conf. Needed (look above)
############################################################
sub go_mining()
var cycle=1 # 1 - çàöèêëèðîâàòü, 0 - íåò
var path="9k5ki9o3oi9k3ki9o2oi9kk9l8o5n" # âñå â êàâû÷êàõ î÷èñòèòü âíà÷àëå ñêðèïòà


а можно на русском