Hola,
a petición del gato de Meighallo, dejo por aquí esta macro de fundir engranajes para recuperar lingotes de Iron... 
Código:
; | / \ | .
; _ -O- . ) (( )) ( -O-
; (@) | + /|\ ))_(( /|\ | .
; |-| / | \ (/\|/\) / | \ (@)
; | | --------------------------/--|-voV---\`|'/--Vov-|--\---------------------------|-| .
; |-| '^` (o o) '^` | |
; | | `\Y/' |-|
; |-| _______ __ __ __ _______ __ __ | |
; | | | | | | |_|__|.--------.---.-.| _ | |__|.---.-.-----.-----.---.-. |-| . o
; |-| | | | | _| || | _ || | | || _ | |-- __| _ | | |
; | | |_______|__|____|__||__|__|__|___._||___|___|__|__||___._|__|__|_____|___._| |-|
; |_|________________________________________________________________________________| |
; (@) l /\ / ( ( \ /\ l `\|-| .
; o l / V \ \ V \ l + (@)
; l/ _) )_ \I +
; + `\ /'
;
; Script Name: Fundir Engranajes
; Author: Sthil Lauda
; Version: 1.1
; Client Tested with: 2.0.3
; EUO version tested with: 1.5 Version 130
; Shard: Ultima Alianza
; Release: 01/05/2019
; Purpose: Recupera lingotes de hierro a partir de engranajes.
;==================================
; ________________________________
;
; ///////////////////////////////
; ************** CONFIGURACIÓN **************
; ///////////////////////////////
; ________________________________
;
set %max_lingotes 50 ; Máximo número de lingotes en la mochila, antes de moverlos al cofre/bolsa
; _______________________________________________
;
; //////////////////////////////////////////////
; ************************* FIN CONFIGURACIÓN *************************
; //////////////////////////////////////////////
; _______________________________________________
;
set %hierro RMK
set %martillos GBG_FBG_TLH_CGG
set %engranajes RCG
gosub setupBolsas ; Configurar cofres/bolsas.
;========================================================
;
; ************************************* LOOP PRINCIPAL **************************************
;
;========================================================
loop:
gosub checkMartillo
gosub ReponerLingotes
gosub ReponerEngranajes
gosub makeLingotes
gosub moveLingotes
goto loop
;========================================================
;
; ******************************** FIN LOOP PRINCIPAL ********************************
;
;========================================================
sub setupBolsas ; <===========================================>
set #SYSMSGCOL 88
event sysmessage click en la bolsa/cofre de Lingotes
wait 20
set #TARGCURS 1
target
while #TARGCURS = 1
{
wait 1
}
set %bolsa_lingotes #LTARGETID
event sysmessage click en la bolsa/cofre de Martillos
wait 20
set #TARGCURS 1
target
while #TARGCURS = 1
{
wait 1
}
set %bolsa_martillos #LTARGETID
event sysmessage click en la bolsa/cofre de Engranajes
wait 20
set #TARGCURS 1
target
while #TARGCURS = 1
{
wait 1
}
set %bolsa_engranajes #LTARGETID
return
sub makeLingotes ; <===========================================>
_reFunde:
finditem %hierro C_ , #BACKPACKID
if #FINDSTACK > 0
{
set #LOBJECTID #FINDID
finditem %engranajes C_ , #BACKPACKID
if #FINDSTACK > 0
{
event macro 17
gosub wait_for GUMP 530_480 30 ; Esperar a que vuelva el menú de crafteo
if ( #TRUE in #RESULT )
{
click 69 423 f
for #FINDINDEX 1 #FINDCNT
{
target
set #LTARGETID #FINDID
set #LTARGETKIND 1
event macro 22
wait 10
}
key ESC
}
}
}
return
sub moveLingotes ; <===========================================>
_reMove:
finditem %hierro C_ , #BACKPACKID
if #FINDSTACK > 1 ; Dejamos uno para poder abrir el menú y fundir.
{
if #FINDSTACK >= %max_lingotes
{
set %cantidad #FINDSTACK - 1
if #FINDSTACK > %cantidad
{
exevent drag #FINDID %cantidad
exevent dropc %bolsa_lingotes
wait 30
goto _reMove
}
}
}
return
sub ReponerLingotes ; <===========================================>
_rePon:
finditem %hierro C_ , #BACKPACKID
if #FINDSTACK < 1
{
finditem %hierro C_ , %bolsa_lingotes
if #FINDCNT > 0
{
for #FINDINDEX 1 #FINDCNT
{
event property #FINDID
if ( Lingote , #spc , De , #spc , Hierro in #PROPERTY )
{
set %peso #WEIGHT
if #FINDSTACK > 0
{
exevent drag #FINDID 1
gosub waitForSysVar Weight <> %peso 50 ; Esperamos a que cambie el peso del PJ
exevent dropc #BACKPACKID
gosub waitforitem #FINDID 50 #BACKPACKID ; Esperamos a que caiga el objeto en la mochila
goto _rePon
}
}
}
}
else
{
halt
}
}
return
sub ReponerEngranajes ; <===========================================>
_rePon2:
finditem %engranajes C_ , #BACKPACKID
if #FINDSTACK < 1
{
finditem %engranajes C_ , %bolsa_engranajes
if #FINDCNT > 0
{
set %peso #WEIGHT
if #FINDSTACK > 0
{
exevent drag #FINDID 1
gosub waitForSysVar Weight <> %peso 50 ; Esperamos a que cambie el peso del PJ
exevent dropc #BACKPACKID
gosub waitforitem #FINDID 50 #BACKPACKID ; Esperamos a que caiga el objeto en la mochila
goto _rePon2
}
}
else
{
halt
}
}
return
sub checkMartillo ; <===========================================>
_checkMartillo:
finditem %martillos C_ , #CHARID
if #FINDCNT = 0
{
finditem %martillos C_ , #BACKPACKID
if #FINDCNT = 0
{
set %peso #WEIGHT
finditem %martillos C_ , %bolsa_martillos
if #FINDCNT > 0
{
exevent drag #FINDID 1
gosub waitForSysVar Weight <> %peso 50 ; Esperamos a que cambie el peso del PJ
exevent dropc #BACKPACKID
gosub waitforitem #FINDID 50 #BACKPACKID ; Esperamos a que caiga el objeto en la mochila
goto _checkMartillo
}
}
else
{
set #LOBJECTID #FINDID
event macro 17
wait 30
goto _checkMartillo
}
}
return
sub waitforitem ; <===========================================>
{
set %time #SCNT2 + %2 ; Décimas de segundo
dropwait2:
finditem %1 C_ , %3
if ( #FINDKIND = -1 ) ; Not Found
{
wait 1
if ( #SCNT2 >= %time )
{
return #FALSE
}
goto dropwait2
}
return
}
;=================================================================
sub wait_for
;=================================================================
; This "wait_for" sub package was created by Locke. If you use these subs please keep this header intact.
; Documentation: the sub package grew to large with all the comments. To load them call the sub like this:
; gosub wait_for docs | or you can use doc, documention, what, or my personal favorite, kickass.
; "wait_for core dispatcher" version 1.2 by Locke
if %1 = doc || if %1 = docs || if %1 = documentation || if %1 = what || if %1 = kickass
{
Display ok Please click ok and wait for your browser to start.
execute http://www.easyuo.com/forum/viewtopic.php?t=24716
halt
}
nameSpace Push
namespace local LLNS
set #result N/A ; if #result isn't set by one of my wait_for subs it'll throw an error.
set !LPC #lpc
set #lpc 200
for %i 0 %0
set !_A . %i % . %i
gosub wait_for_ , !_A1
set #lpc !lpc
namespace clear LLNS
namespace pop
if #result <> N/A
return #result
else
display ok You specified an unknown wait_for command. Script returned #result and is halting.
halt
;======================================================================
sub wait_for_GUMP ; version 1.4 ~Locke
;=================================================================
; Añadido #CONTID ^^
if !_A0 < 3
{
display ok You haven't specified enough vars.$
+The basic format is: gosub wait_for GUMP XXX_YYY time_out_in_seconds$
+Script is halting
halt
}
if !_A3 <> CLOSE
set !_timeout #scnt2 + !_A3
else
set !_timeout 0 ; no gump wait if %3 = CLOSE since we already believe it to be open.
_lets_wait_for_a_gump:
if #CONTSIZE = !_A2 || #CONTKIND = !_A2 || #CONTNAME = !_A2 || #CONTTYPE = !_A2 || #CONTID = !_A2
{
if !_A5 <> N/A && !_A6 <> N/A
{
set !clickx !_A5 + #contposx
set !clicky !_A6 + #contposy
click !clickx !clicky
}
if !_A3 = CLOSE || if !_A4 = CLOSE || !_A5 = CLOSE || !_A6 = CLOSE
{
set !string #contsize
str pos !string _
set !pos #strres
str del !string #strres #strres
set !clickX #contposx + ( #strres / 2 )
str del !string 1 !pos
set !clickY #contposy + ( #strres / 2 )
click !clickx !clicky R
}
return #true
}
if ( !_timeout =< #scnt2 ) && ( !_A4 = N/A )
{
return #false
}
if !_A4 <> N/A && !_timeout =< #scnt2
{
finditem !_A4
if #findkind <> -1
{
for #findindex 1 #findcnt
{
if #finddist > 2
ignoreitem #findid LLWAITFOR
else
break
}
set #lobjectid #findid
event macro 17 0
set !_timeout #scnt2 + !_A3
}
else
return #false
}
wait 1
goto _lets_wait_for_a_gump
sub waitForSysVar
if %0 < 4 || %4 = N/A
set %4 %_defaultWaitForTimeout
if %0 < 5
set %5 return
set %4 #sCnt2 + %4
_waitForSysVar:
set % . %5 # . %1 %2 %3
if ! % . %5 && #sCnt2 < %4
{
Wait 1
goto _waitForSysVar
}
return
Salu2,