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,