Yoko
http://forum.yoko.com.ua/

Mining
http://forum.yoko.com.ua/viewtopic.php?f=15&t=15593
Page 1 of 1

Author:  xinxilas [ 2010-02-18 04:36:19 ]
Post subject:  Mining

Code:
#ABAIXO: Limite das coordenadas (.where), Se passar do limite o char volta
var limitW    = 0         #LIMIT X de WEST (lefta)
var limitE    = 0         #LIMIT X de EAST (right)
var limitN    = 0         #LIMIT Y de NORTH (top)
var limitS   = 1600      #LIMIT Y de SOUTH (bottom)

var passos       = 4            #NUMBER OF TILES TO WALK AFTER MINE AROUND
var volta       = 6            #NUMERO TILES TO WALKBAC AFTER CROSS A LIMIT
var peso      = 360      #WEIGHT TO GO BANK

#CHOSE 0 Banker at mine | 1 to recall to bank | 2 to recall to your container
var guardar      = 1            #MODE Banker at Mine/Recall to banker/Recall to your container

var bau          = 'bau'         #CONTAINER qwith your ores
var runemina    = 'runebook 9'   #RUNE Runebook and number of Rune of Mine
var runeguardar   = 'runebook 3'   #RUNE Runebook and number of Rune of Banker or your Container
var tent1      = 3            #TRYS to BEFORE GO TO ANOTHER TILE TO MINE
var tent2      = 2            #TRYS EXTRASto BEFORE GO TO ANOTHER TILE TO MINE IF YOU GOT AN ORE AT THIS TILE
#(ANTI-"BUG" i you got no skill to mine some ore )

#MENSAGENS:
var outro   = 'Tente miner|You cann|O alvo|Nao ha|Skill M|Voce nao'   #MSG to go to another tile
var pegou   = 'You put'               #MSG when you found an ore
var falha     = 'Voce nao con'            #MSG when you fail to get a ore
var bank   = 'You have'            #MSG when you have open you bank

var orefora   = 'Iron'          #NAME OF ORES TO DROP
var orepular= 'Ceramic|Silver'      #NAME TO ORES TO IGNORE WHEN YOU FOUND IT

var try

sub mining() ; By ChavinhO (para Mina de Minoc DMS)
   var x,y,ore,asd=1
   uo.charprint('0x0045','Iniciando macro...')
   pickaxe()
   while uo.findcount('pickaxe')==0 or uo.getquantity('pickaxe')==0
      for x = -2 to 2
         for y = -2 to 2
            if (uo.weight >= peso) then
                  guardarores()
            endif
            if ( num(x) + num(y) ) < 4 and ( num(x) + num(y) ) > 0 then
                  ore=0
                  try=0
                     repeat
                     UO.DeleteJournal()
                        uo.waittargettile('#0x400', str(uo.GetX() + x), str(uo.GetY() + y), STR(UO.GetZ()))
                       uo.useobject('pickaxe')
                     repeat
                        wait(30)
                        until UO.InJournal( outro+ '|' +pegou )
                        if UO.InJournal( pegou ) then
                           ore=1
                           ore()
                        endif
                         if uo.injournal( falha ) then
                        try=try+1
                         endif
                     until UO.InJournal( outro ) or (try>=tent1 and ore==0) or try>=tent1+tent2
               endif
            next
      next
      walk()
   wend
end sub

sub ore()
    var l, c, n , j, lm
   if UO.InJournal( orepular+ '|' +orefora ) then
      if UO.InJournal( orefora ) then
         j=1
      endif
      try=100
   endif
   uo.ignorereset()
    uo.findtype('-1','-1','backpack')
    l=uo.findcount('finditem')-1
    while l>0
        uo.ignore('finditem')
        uo.findtype('-1','-1','backpack')
        l=l-1
    wend
    uo.findtype('-1','-1','backpack')
   if j==1 then
      UO.MoveItem('finditem','-1','ground')
   else
      lm=UO.LastMessage()
       uo.click('finditem')
       repeat
          wait(1)
      until UO.LastMessage()<>lm
       c=uo.getcolor('finditem')
      n=uo.getname('finditem')
      uo.charprint(c,n)
   endif
   uo.charprint('0x1152','Peso: ' +str(uo.weight)+ '(' +str(peso)+ ')')
   uo.ignorereset()
endsub

sub pickaxe()
if uo.count('0x0E85')>0 then
   uo.addobject('pickaxe','_0x0E85')
   uo.useobject('backpack')
   return
endif
if uo.count('0x0E86')>0 then
   uo.addobject('pickaxe','_0x0E86')
   uo.useobject('backpack')
   return
endif
uo.charprint('0x0022','Voce nao tem Pickaxe!')
endsub

sub walk()
   var cl,lastdir,py=UO.GetY(),px=UO.GetX(),d ,t
   dim DIR[8]
   DIR[0] = 33
   DIR[1] = 39
   DIR[2] = 34
   DIR[3] = 40
   DIR[4] = 35
   DIR[5] = 37
   DIR[6] = 36
   DIR[7] = 38
   repeat
      t=passos
      d=UO.Random(8)
      py=UO.GetY()
      px=UO.GetX()
      while t>0
         if uo.getdir()<>d then
               uo.press(DIR[d])
            endif
            wait(35)
            uo.press(DIR[d])
            t=t-1
         if  (UO.GetX() < limitW) or (UO.GetX() > limitfix(limitE)) or (UO.GetY() < limitN) or (UO.GetY() > limitfix(limitS)) then
            if uo.getdir()>3 then
               d=uo.getdir()-4
            else
               d=uo.getdir()+4
            endif
            t=volta
            endif
      wend
   until (px <> UO.GetX()) or (py <> UO.GetY())   
endsub

sub limitfix(x)
   if x==0 then
      return 10000
   endif
   return x
endsub

Sub num(X)
if X>0 then
return X
else
return (-X)
end if
end sub

sub GuardarOres()
   if guardar==0 then
      oresbank()
   else
      recall('recall '+runeguardar)
      oresbank()
      recall('recall '+runemina)
   endif
endsub

sub recall(runa)
   var timer=uo.timer() + 80
    var px=uo.getx('self'),py=uo.gety('self')
    uo.exec(runa)
    while px==uo.getx('self') and py==uo.gety('self')
        if uo.timer() >= timer then
            uo.useskill('Meditation')
            recall(runa)
        endif
        wait(5)
    wend
endsub

sub oresbank()
   var n,b,l=0,lm,i
   DIM ID[12]
   ID[1]='0x19B9'
   ID[2]='0x19B8'
   ID[3]='0x19BA'
   ID[4]='0x19B7'
   ID[5] = '0x0F16'
   ID[6] = '0x0F10'
   ID[7] = '0x0F0F'
   ID[8] = '0x0F18'
   ID[9] = '0x0F26'
   ID[10] = '0x0F11'
   ID[11] = '0x0F15'
   ID[12] = '0x0F13'
    uo.deletejournal()
    if guardar==2 then
       uo.useobject(bau)
       b=uo.getserial('bau')
    else
       uo.msg('bank')
       repeat
           wait(5)
       until uo.injournal( bank )
         b=uo.getserial('lastcontainer')
      endif
   For i=1 To 12
      while uo.count(ID[i]) > 0
         UO.FindType(ID[i],'-1','backpack')
           while not uo.ContainerOF('finditem')==b
               UO.moveitem('finditem','-1',b)
               wait(5)
           wend
      wend
   Next
    uo.textclear()
    uo.ignorereset()
    uo.deletejournal()
   For i=1 To 4
       uo.findtype(ID[i],'-1',b)
       l=uo.findcount('finditem')
      while l>0
         lm=UO.LastMessage()
         uo.click('finditem')
         repeat
            wait(1)
         until UO.LastMessage()<>lm
         n=uo.getname('finditem')
         uo.exec('showjournal 1')
         uo.ignore('finditem')
         uo.findtype(ID[i],'-1',b)
         l=l-1
      wend
   next
end sub

Author:  xinxilas [ 2010-02-19 10:47:35 ]
Post subject:  Re: Mining

fix: this line was changed ( sub walk() )
if (UO.GetX() < limitW) or (UO.GetX() > limitfix(limitE)) or (UO.GetY() < limitN) or (UO.GetY() > limitfix(limitS)) then

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/