Mining

Good scripts, not reviewed and checked yet

Moderators: Murderator+, Murderator

Post Reply
xinxilas
Posts: 78
Joined: 2009-03-10 09:43:01

Mining

Post by xinxilas »

Code: Select all

#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
xinxilas
Posts: 78
Joined: 2009-03-10 09:43:01

Re: Mining

Post by xinxilas »

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
Post Reply