Guía: crea tu propia macro

  • Escrita originalmente por DocDesertor para los antiguos foros.


    ¿Qué es una Macro?


    Una macro es una serie de instrucciones que se almacenan para que se puedan ejecutar de forma secuencial mediante una sola llamada u orden de ejecución. Es decir, con las macros podrás hacer con un solo clic cosas que "a mano" serían 3, 4, 5.... o más clics.


    Mi primera macro


    Para crear una macro pulsa la tecla "Esc" y en el menú selecciona la opción "Macros".


    A continuación pulsa en el botón "Nueva" y se desplegará la interfaz donde podemos escribir nuestra macro:


    Como ejemplo vamos a hacer una simple cuenta atrás, para ello usaremos el comando "Wait" que es uno de los más utilizados.


    El comando wait simplemente esperará el tiempo que le indiquemos hasta ejecutar la siguiente línea de la macro.


    Code
    1. 3
    2. /Wait 1
    3. 2
    4. /Wait 1
    5. 1
    6. /Wait 1
    7. ¡¡¡¡¡AL ATAQUE!!!!


    En este ejemplo se hace una cuenta atrás de 3 segundos por el canal "Decir" y al terminar diremos ¡¡¡¡¡AL ATAQUE!!!!.


    Para poder usar esta macro debemos asignarle un nombre , un icono y pulsar en guardar, una vez guardado podemos arrastrar el icono de nuestra macro a nuestra barra de acción para ejecutarla cuando pulsemos en ella


    IMPORTANTE: SI TENÉIS ESPACIOS EN BLANCO DELANTE O AL FINAL DE LAS LÍNEAS LAS MACROS NO FUNCIONARÁN, EN EL CASO DE QUE COPIÉIS Y PEGUÉIS MACROS TRATAD DE ELIMINAR LOS ESPACIOS EN BLANCO


    Como podéis observar cada wait comienza con una barra "/", cada instrucción que pongamos debe ir precedida por esta barra "/" o será interpretada como texto que queremos decir. "wait" va seguido de un número que especifica la cantidad de segundos que deben pasar para ejecutar la siguiente línea.


    Comandos de Chat


    Si nos limitamos a escribir líneas en la macro estas saldrán por el canal "Decir", si queremos que nuestros mensajes salgan por otros canales como el de grupo, gremio, etc. debemos usar un comando de chat previamente:


    /z : Para escribir por zona

    /p : Para escribir por grupo

    /g: Para escribir por Gremio

    /1: Tu 1º canal privado

    /2: Tu 2º canal privado

    /3: Tu 3º canal privado

    etc...


    Por ejemplo si queremos hacer una macro como la anterior pero lanzada por canal grupo debemos hacer lo siguiente:


    Code
    1. /p 3
    2. /Wait 1
    3. /p 2
    4. /Wait 1
    5. /p 1
    6. /Wait 1
    7. /p ¡¡¡¡¡AL ATAQUE!!!!


    Comandos básicos


    • /wait [nº de segundos]: Esperará el tiempo que le indiquemos hasta ejecutar la siguiente línea de la macro. Podemos usar "/wait 1" para un segundo , permite usar decimales "/wait 0.3" esperará 3 décimas. El máximo de espera son 60 segundos, si deseas hacer esperas superiores a 60 segundos pon varios /wait seguidos.



    /Lanzar [Nombre de la habilidad]: Lanza la habilidad especificada. Ej.: "/Lanzar Bola de fuego" . El nombre de la habilidad hay que escribirlo exactamente igual a como aparece en la descripción, respetando mayúsculas, acentos y espacios.

    /Usar [Nombre del objeto]: Utiliza cualquier objeto que tengamos en el inventario, ya sean pociones, armas, armaduras, etc. Ej.: "/Usar Poción: Entusiasmo desenfrenado" , nos tomaría la poción de la doncella, "/Usar Capa del valor de Aoth" nos equiparía la capa de guerrero de pesadilla.

    Ejemplo de macro para lanzar 4 buffos de larga duración con un solo clic:


    Code
    1. /Lanzar Esencia de Magia
    2. /Wait 1.2
    3. /Lanzar Barrera mágica
    4. /Wait 1.2
    5. /Lanzar Agua bendita de manantial
    6. /Wait 1.2
    7. /Lanzar Manto ignífugo


    Funciones (en construcción)


    Las funciones nos permiten hacer cosas más avanzadas, tales como cambiar de equipo, cambiar de título, usar una habilidad de una pieza, etc.. Comentaré las más comunes aunque si queréis un listado completo de funciones podéis encontrarlo aquí.



    Siempre que queramos ejecutar una función debemos preceder su llamada con el comando "/run".


    • TargetNearestEnemy(): Selecciona al enemigo más cercano (similar al tab). Se puede usar si tenemos un instantáneo sin reposo que queramos usar con un grupito rotando uno a uno.



      Code
      1. /run TargetNearestEnemy()
      2. /Lanzar Toque del relámpago


    • TargetNearestFriend(): Selecciona al aliado más cercano. Podemos usarla por ejemplo para tirar Ataque amplificado rotando por los miembros de una party.


      Code
      1. /run TargetNearestFriend()
      2. /Lanzar Ataque amplificado




    TargetUnit("player"):

    Te selecciona a ti mismo, útil para asegurarte de que te lanzas una habilidad a ti y no al sacer que te acaba de lanzar una urgente.



    En este ejemplo te seleccionas a ti mismo antes de usar la habilidad "purificación" del mago/sacer:

    Code
    1. /run TargetUnit("player");
    2. /Lanzar Purificación


    SwapEquipmentItem(Número de equipación):

    Cambia tu equipo por el número asignado "/run SwapEquipmentItem(2)" nos pone el equipo 3. 0 es para equipo 1, 1 para equipo 2 y 2 para equipo 3.



    Macro para cambiar al equipo 3 y volver a poner el 1 al hacer un segundo clic:

    Code
    1. /run SwapEquipmentItem(0)
    2. /run SwapEquipmentItem(2)



    UseEquipmentItem(Número del equipo):

    Usa la habilidad de la pieza indicada por el número de equipo. (1 = Guantes, 5 Capa, para los demás toca probar)



    Macro de ejemplo para usar la capa de pesadilla y volver a equipar la que usas:

    Code
    1. /Usar Capa del valor de Aoth
    2. /Wait 0.3
    3. /run UseEquipmentItem(5)
    4. /Wait 0.3
    5. /Usar Capa de malabarista


    SetTitleRequest(id del título):

    Nos equipa el título que le asignemos. Cada título tiene un id, esta id se puede obtener con la siguiente macro:


    Code
    1. /run ChatFrame1:AddMessage(GetCurrentTitle())


    Como ejemplo os pongo la macro para lanzar la prisa loca y poner el título "huida prodigiosa":

    Code
    1. /run SetTitleRequest(530460)/wait 0.3/Lanzar Prisa loca/run SetTitleRequest(530427)


    PetSummonButton_OnClick():

    Invoca la mascota que tengas seleccionada



    PetReturnButton_OnClick():

    Guarda la mascota que tengas seleccionada



    Podemos usar ambas funciones para tener un único botón que haga las dos cosas:

    Code
    1. /run PetReturnButton_OnClick()
    2. /run PetSummonButton_OnClick()


    ToggleTimeFlagPopupMenu():

    Muestra una interfaz para el alquiler de buzón portátil, subasta portátil y banco portátil


    Code
    1. /run ToggleTimeFlagPopupMenu()


    ShowUIPanel(BankFrame):

    Nos muestra la interfaz del banco para ver lo que tenemos desde cualquier lugar (sólo ver no meter ni sacar)


    Code
    1. /run ShowUIPanel(BankFrame)

    FeedPet(nº de ranura de pet):

    Alimenta a la mascota indicada con el alimento seleccionado.


    En el siguiente ejemplo le damos 99 alimentos a la pet en la ranura nº 3 , de esta manera podemos darle Pastel especial de Miller a nuestra pet para subir su experiencia y entrenamiento sin tener que hacer muchos clicks. Para que funcione tenemos que seleccionar previamente el alimento a usar en la interfaz de mascotas

    Code
    1. /run for i = 1, 99, 1 do FeedPet(3) end

    SkillSuitFrame_GetSkill_OnClick(): Se utiliza para cambiar habilidades de conjunto de objetos. Para usarla debemos usar otras 2 variables llamadas JOBINDEX y SKILLINDEX.




    JOBINDEX indica la clase donde está la hab de segun la lista de arriba abajo (1 guerrero, 2 explo, 3 pícaro, 4 mago, 5 sacerdote...)



    SKILLINDEX indica la habilidad que queremos cambiar según el orden en que aparecen en la lista






    La habilidad se equipará en el último espacio que tengamos disponible.






    En el siguiente ejemplo equipamos la habilidad Serenidad del guerrero, la lanzamos y volvemos a equipar el Torniquete.

    Code
    1. /run JOBINDEX=1 SKILLINDEX=7 SkillSuitFrame_GetSkill_OnClick();
    2. /wait 0.5
    3. /lanzar Serenidad
    4. /wait 0.5
    5. /run JOBINDEX=1 SKILLINDEX=6 SkillSuitFrame_GetSkill_OnClick();


    UseExtraAction(Número de habilidad): U

    sa la habilidad asignada de la barra extra "/run UseExtraAction(1)" usaría la 1ª habilidad de la barra extra (la misma que nos sale en eventos).



    Ejemplo de macro para lanzar la hab "Trucos de magia" del lote de mago de Grafu.

    Code
    1. /Lanzar Trucos de magia
    2. /Wait 0.8
    3. /run UseExtraAction(1)





    StoreBuyItem(Slot, Cantidad):

    Compra artículos a un vendedor que tengamos seleccionado. Slot sería la posición del artículo que queremos comprar, la cantidad solo es necesaria si son objetos apilables.



    Ejemplo de macro para comprar 99 Pasteles de Miller.

    Code
    1. /run StoreBuyItem(1, 99)


    Esta orden se puede hacer en bucle haciendo algo similar a cuando alimentamos la mascota y quedaría así:


    Ejemplo de macro para comprar 5 packs de 99 Pasteles especiales de Miller.

    Code
    1. /script for i = 1, 5, 1 do StoreBuyItem(1, 99) end


    También podemos usarla para comprar cintos a un vendedor para hacer tier

    Ejemplo para comrar 20 cintos (suponiendo que estén en la posición 6)

    Code
    1. /script for i = 1, 20, 1 do StoreBuyItem(6) end


    PD: Las posiciones van de izquierda a derecha, es decir el 1 corresponde a la primera fila a la izquierda, el 2 a la primera fila a la derecha, 3 segunda fila izquierda.... etc...



    Macro para comprar "Bendición del dios de las Flores" con 1 solo clic en festival de las flores


    Code
    1. /script CastSpellByName("Ataque")
    2. /wait 0.1
    3. /script ChoiceOption(2)
    4. /wait 0.2
    5. /script ChoiceOption(1)

    Para que funcione selecciona a Adan en plaza central y usa la macro


    Macro para reparar con martillos simples las piezas que han perdido dura(no necesita addons)

    Code
    1. /run for i = 0 , 16, 1 do local dV, dM, iN, dVF, dMF = GetInventoryItemDurable("player",i) if(dV < dM and dV < 101 and dM >= 102) then UseItemByName("Martillo de reparación simple"); PickupEquipmentItem(i); SendSystemChat("Reparado" .. iN); break; end end

    Macro para añadir iconos extra a tus macros (mu molón :P)

    Code
    1. /run NUM_ICON_ROWS = 20


    *Puedes escribir esta macro directamente en el chat y veras que tras hacerlo al crear macros tendrás nuevos iconos


    (Lista en construcción , seguiremos aumentándola)

    RRT9X6E.jpg

  • Macro de Pícaro para ocultarse, con la misma macro te quitas el ocultar, para darle un buen uso es mejor bindear la macro a una tecla rápida.

    Code
    1. /run a=1 b="X" while b~=nil do b=UnitBuff("player",a) if b~=nil then if b=="Ocultarse" then CancelPlayerBuff(a) return else a=a+1 end end end CastSpellByName("Ocultar")
  • ¡Buenas!

    No se si es el sitio, ¿pero alguien sabe en qué lenguaje de programación está basada la pantalla de macros?


    Es para entender mejor la sintaxis de construcción. Se me hace un nudo cuando quiero escribir algo medianamente complejo. ?(

    Vidar:


    Ahrel (100/100) - Wl / R / M / Ch / P / Wr


    -------->

    :|:/:S^^

    -------->

    :thumbup:

  • ¡Buenas!

    No se si es el sitio, ¿pero alguien sabe en qué lenguaje de programación está basada la pantalla de macros?


    Es para entender mejor la sintaxis de construcción. Se me hace un nudo cuando quiero escribir algo medianamente complejo. ?(

    En general la mayoría de lo importante es LUA, con funciones específicas del Runes of Magic.

    RRT9X6E.jpg

  • y si yo quisiera poner el numero del recuadro donde se encuentra esa skill en lugar de el nombre ? como tendria ke poner en la macro?

  • y si yo quisiera poner el numero del recuadro donde se encuentra esa skill en lugar de el nombre ? como tendria ke poner en la macro?

    En la explicación que nos da Salvaje esta explicado lo que quieres hacer con el UseExtraAction:

    UseExtraAction(Número de habilidad): U

    sa la habilidad asignada de la barra extra "/run UseExtraAction(1)" usaría la 1ª habilidad de la barra extra (la misma que nos sale en eventos).