Hola,
Dejo por aquí una macro para entrenar la skill de forzar cerraduras, a ver si se anima un poquito más el cotarro por las dungeons
Cualquier problema o pregunta, id comentando tranquilamente.
Código:
; | / \ | .
; _ -O- . ) (( )) ( -O-
; (@) | + /|\ ))_(( /|\ | .
; |-| / | \ (/\|/\) / | \ (@)
; | | --------------------------/--|-voV---\`|'/--Vov-|--\---------------------------|-| .
; |-| '^` (o o) '^` | |
; | | `\Y/' |-|
; |-| _______ __ __ __ _______ __ __ | |
; | | | | | | |_|__|.--------.---.-.| _ | |__|.---.-.-----.-----.---.-. |-| . o
; |-| | | | | _| || | _ || | | || _ | |-- __| _ | | |
; | | |_______|__|____|__||__|__|__|___._||___|___|__|__||___._|__|__|_____|___._| |-|
; |_|________________________________________________________________________________| |
; (@) l /\ / ( ( \ /\ l `\|-| .
; o l / V \ \ V \ l + (@)
; l/ _) )_ \I +
; + `\ /'
;
; Script Name: Entrenar Lockpicking
;
; .-""-.
; / .--. \
; / / \ \
; | | | |
; | |.-""-.|
; ///`.::::.`\
; ||| ::/ \:: ;
; ||; ::\__/:: ;
; \\\ '::::' /
; jgs `=':-..-'`
;
; Author: Sthil Lauda
; Version: 1.7
; Client Tested with: 2.0.3
; EUO version tested with: EasyUO 1.5 Version 243
; Shard: Ultima Alianza ¡Hasta la muerte!
; Revision Date: 10/02/2019
; Public Release: 08/02/2019
; Purpose: Entrenar skill de lockpicking desde 40-50 hasta 75, parando la macro cada 5 puntos para seguir subiendo con
; nuevas cajas fabricadas con un mayor nivel (+5 puntos) de skill de Artesanía/Tinker.
; Instrucciones: Colocar dos cofres, uno con todas las cajas y ganzúas, y otro más que esté vacío.
;
;________________________________
;
; ///////////////////////////////
; ************** CONFIGURACIÓN **************
; ///////////////////////////////
;________________________________
;
set %nivel_skill 550 ; Parar la macro al llegar a este nivel de skill lockpicking ****** Ejem: 550 (55 puntos de skill) ******.
set %cofreo XXXXXXX ; Cofre con cajas y ganzúas.
set %cofred XXXXXXX ; Cofre vacío.
set %tiempo_alimentacion 360 ; Cada cuántos segundos va a comprobar si tiene hambre (5 minutos).
;________________________________________________
;
; //////////////////////////////////////////////
; ************************* FIN CONFIGURACIÓN *************************
; //////////////////////////////////////////////
;________________________________________________
;
set %llave EFG
set %ganzua NWH
set %caja CUD
set %tiempo_actual #SCNT ; Reloj
set %proxima_vez %tiempo_actual ; Trigger
set %comida RGG_NRD_QSD_ZBG_WLI_QRD_END_FUD_YLI_WLI_HGI
+_KGI_EGI_QLI_KLI_MLI_KRD_HQD_AQD_MQE_VQE_TQE_JQE_IQE
+_GQE_SPE_ZPE_OQE_BDF_KPE_RQE_YSD_SQD_YWI_AXI_PQD_QQD
Inicio:
{
_vaciar:
finditem %caja c_ , #BACKPACKID
if #FINDCNT > 0
{
Exevent Drag #FINDID
Exevent Dropc %cofreo
wait 30
goto _vaciar
}
gosub bloquearSkill ; Comprobar la skill y parar.
set %tiempo_actual #SCNT
if %proxima_vez <= %tiempo_actual
{
gosub comprobar_comida ; Macro para comer
}
_comienzoLockpicking: ; Termina macro para comer y comienza lockpick
finditem %caja c_ , %cofred
if #FINDCNT > 0
{
; Abre la caja con cerradura para sacar la llave a la mochila
set %jstart #jindex ; Marcamos el journal antes de ejecutar la acción
set %cajaid #FINDID
set #LOBJECTID %cajaid
event macro 17
gosub wait_for GUMP %cajaid 2
if #TRUE in #RESULT ; Si se abre, es que ya está estrenada...
{
goto _preLlave
}
gosub wait_for MSG esta_cerrada_con_llave la_llave_ha_sido_depositada Dentro_de_1_minuto 10
if #TRUE in #RESULT
{
if Dentro_de_1_minuto in #RESULT
{
wait 140s
goto _comienzoLockpicking
}
if esta_cerrada_con_llave in #RESULT
{
goto Forzar
}
if la_llave_ha_sido_depositada in #RESULT
{
; Coge la llave y la deja en la mochila
_test_caja:
set #LOBJECTID %cajaid
event macro 17
gosub wait_for GUMP %cajaid 5
_preLlave:
finditem %llave C_ , #backpackid
if #FINDCNT = 0 ; No hay llave en la mochila
{
finditem %llave C_ , %cajaid ; Miramos a ver si la caja está abierta con la llave
if #FINDCNT = 0 ; No hay llave en la caja, y tampoco en la mochila... mal asunto.
{
ignoreitem %cajaid ; Pasamos de esta caja... XDDDD
goto Inicio
}
else ; La caja está abierta y con la llave dentro...
{
gosub cogerLlave
goto Cerrar
}
}
}
}
}
else
{
gosub traeCaja
goto _comienzoLockpicking
}
}
; Usa la llave para cerrar la caja y seguidamente poder forzarla
Cerrar:
{
_repiteCerrar:
finditem %llave c_ , #backpackid
if #FINDCNT > 0
{
set #LOBJECTID #FINDID
event macro 17
target 3s
set #LTARGETID %cajaid
set #LTARGETKIND 1
set %jstart #jindex ; Marcamos el journal antes de ejecutar la acción
event macro 22
gosub wait_for MSG abierta cerrada no_puedes_usar_la_llave Dentro_de_1_minuto 10
if #TRUE in #RESULT
{
if Dentro_de_1_minuto in #RESULT
{
wait 140s
goto _repiteCerrar
}
if abierta in #RESULT
{
goto _repiteCerrar
}
if cerrada in #RESULT
{
goto Forzar
}
if no_puedes_usar_la_llave in #RESULT
{
ignoreitem %cajaid ; Pasamos de esta caja... XDDDD
goto Inicio
}
}
}
else ; No hay llave
{
gosub cogerLlave
goto _repiteCerrar
}
}
; Busca las ganzuas y trata de forzar la cerradura
Forzar:
{
finditem %cajaid C_ , %cofred
if #FINDCNT > 0
{
_repiteForzar:
findItem %ganzua c_ , #backpackid
if #FINDCNT > 0
{
set #LOBJECTID #FINDID
event macro 17
target 3s
set #LTARGETID %cajaid
set #LTARGETKIND 1
set %jstart #jindex ; Marcamos el journal antes de ejecutar la acción
event macro 22
gosub wait_for MSG no_logra_forzar Rompes_la_cerradura La_cerradura_cede no_parece_estar_cerrada Dentro_de_1_minuto 15
if #TRUE in #RESULT
{
if Dentro_de_1_minuto in #RESULT
{
wait 140s
goto Forzar
}
if Rompes_la_cerradura in #RESULT
{
gosub traeCaja
goto Inicio
}
if no_logra_forzar in #RESULT
{
goto Forzar
}
if La_cerradura_cede in #RESULT || no_parece_estar_cerrada in #RESULT
{
goto Cerrar
}
}
else ; Por alguna razón extraña no hemos pillado el mensaje en el diario ¿? ¡REPETIMOS!
{
goto Forzar
}
}
else ; No hay ganzuas ¿?
{
gosub reponerGanzuas
goto _repiteForzar
}
}
else ; Si ya no está la caja que habíamos seleccionado
{
goto Inicio
}
}
;
; ******** SUBS ********
;
;=====================================================
; Rutina para, en caso de hambre, comer hasta saciarse
;=====================================================
; v2.2
sub comprobar_comida
{
hambriento:
set %jrnl #jindex ; Marcamos un índice de las líneas del diario.
event macro 3 0 .hungry
wait 20
while #true
{
if #jindex > %jrnl ; Si aparece una nueva línea.
{
set %jrnl %jrnl + 1 ; Seleccionamos ese numero de línea.
scanjournal %jrnl ; La leemos...
if Dentro_de_1_minuto in #journal
{
wait 140s ; Save del server...
}
if Estas_no_le_afecta_el_hambre in #journal || Estas_tan_lleno_que_no_puedes in #journal || Estas_totalmente_saciado in #journal
{
set %proxima_vez %tiempo_actual + %tiempo_alimentacion
return
}
else
{
if Estas_lleno in #journal || Estas_contento in #journal || Estas_en_inanicion in #journal || Estas_hambriento in #journal || Sientes_mucho in #journal || Estas_con_hambre in #journal || Estas_parcialmente in #journal || Estas_bien_lleno in #journal || Te_sientes_casi_lleno in #journal
{
finditem %comida C_ , #backpackid
if #findcnt > 0
{
set #lobjectid #findid
event macro 17
wait 20
goto hambriento
}
else
{
event exmsg #charid 3 48 COMPRA COMIDA!!
wait 40
set %proxima_vez %tiempo_actual + %tiempo_alimentacion
}
}
else ; Mensaje extraño, repetimos...
{
goto hambriento
}
}
}
return
} ; FIN While
}
return
sub reponerGanzuas
finditem %ganzua C_ , %cofreo
if #FINDCNT > 0
{
Exevent Drag #FINDID 50
Exevent Dropc #BACKPACKID
wait 30
}
else
{
event macro 3 0 NO HAY MAS GANZUAS!
halt ; No quedan ganzuas...
}
return
sub traeCaja
finditem %caja C_ , %cofreo
if #FINDCNT > 0
{
Exevent Drag #FINDID
Exevent Dropc %cofred
wait 30
}
else
{
event macro 3 0 NO QUEDAN CAJAS EN EL COFRE!
halt ; No quedan cajas...
}
return
sub cogerLlave
finditem %llave C_ , %cajaid
if #FINDCNT > 0
{
Exevent Drag #FINDID
Exevent Dropc #backpackid
wait 30
}
return
sub bloquearSkill
chooseskill Lock real
if ( #SKILL >= %nivel_skill )
{
event macro 3 0 Lockpicking = %nivel_skill , SKILL BLOQUEADA
halt ; Paramos la macro...
}
return
;=================================================================
sub wait_for
;=================================================================
; This "wait_for" sub package was created by Locke. If you use these subs please keep this header intact.
; // end header
; 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.
; Thanks to ~BookWibble~ for helping with all the debugging and spotting a bug or three.
; "wait_for core dispatcher" version 1.3 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
ignoreitem reset LLWAITFOR
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_MSG ; version 1.4 ~Locke
;=================================================================
if !_A0 < 3
{
display ok You haven't specified enough vars.$
+The basic format is: gosub wait_for MSG %message % , time_out_in_seconds$
+Script is halting
;halt
}
set !_timeout ( #scnt + !_A . !_A0 )
_lets_wait_for_a_message:
for %i %jstart #jindex
{
scanjournal %i
for %ii 2 !_A0
{
if !_A . %ii in #journal && %jstart <> %i
set #result #true , #spc , !_A . %ii
}
}
if #true notin #result
{
set #result #false
if !_timeout =< #scnt
return #result
wait 1
goto _lets_wait_for_a_message
}
else
return #result
wait 1
goto _lets_wait_for_a_message
;======================================================================
sub wait_for_GUMP ; version 1.4 ~Locke
;=================================================================
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 #scnt + !_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 #CONTID = !_A2 || #CONTSIZE = !_A2 || #CONTKIND = !_A2 || #CONTNAME = !_A2 || #CONTTYPE = !_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 =< #scnt && !_A4 = N/A
return #false
if !_A4 <> N/A && !_timeout =< #scnt
{
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 #scnt + !_A3
}
else
return #false
}
wait 1
goto _lets_wait_for_a_gump
;======================================================================
sub wait_for_ITEM ; Version 0.1 ~Locke
;=================================================================
; %A2 = #findid ; %A3 = C_ , %mod || G_ , %mod ; %A4 = wait_time in seconds
if !_A0 < 4
{
display ok You haven't specified enough vars.$
+The basic format is: gosub wait_for ITEM # , findid C_ , % , mod % , timeout
+Script is halting
;halt
}
set !_timeout !_A4 + #scnt
repeat
{
finditem !_A2 !_A3
if #findkind <> -1
return #true
wait 1
}
until #scnt => !_timeout
return #false
Saludos, y suerte con las recompensas!! ^^