- Desde
- 30 May 2020
- Mensajes
- 247
- Reacciones
- 342
- Honor
- 82
Que necesitamos antes de empezar:
Un emulador con Eluna
Un editor de codigo
Nociones basicas de Lua
Tener abierto https://elunaluaengine.github.io/index.html
Funciones:
Una funcion es un pequeño programa dentro de nuestro script. Ejecuta una serie de comandos, comprueba si se cumplen condiciones...
La estructura de una funcion es la siguiente:
function NomrbeDeLaFuncion(argumento1, argumento2)
contenido de la funcion
end
Y la usariamos escribiendo el nombre de la funcion y, entre parentesis, los valores que queremos dar a sus argumentos:
NombreDeLaFuncion(valor, valor)
No es obligatorio dar un valor a todos los argumentos, podriamos ejecutar la funcion sin ningun argumento.
Cuando creamos una funcion podemos hacer que tenga argumentos. Al invocar una funcion damos un valor a estos argumentos y los podemos utilizar en la funcion.
Por ejemplo este codigo nos sumara los argumentos al ejecutarlo en la terminal (no en WoW):
Como habeis visto es posible (y muy habitual) ejecutar funciones desde otras funciones. En el ejemplo anterior llame a la funcion SumaArgumentos() desde la funcion print(). Esta es una tecnica que usaremos a menudo.
Eventos:
Para casi cualquier cosa que programemos en Eluna necesitaremos un evento que lo "dispare".
Podemos hacer una funcion que nos de un objeto, pero no hara nada hasta que la activemos con un evento. Por ejemplo, podriamos activarla al entrar por primera vez en el juego, al unirnos a una hermandad... Para todo esto tenemos eventos con los que hemos de registrar nuestra funcion.
Para registrar un evento lo primero que necesitamos saber que tipo de evento sera. Tenemos eventos de jugador, de hermandad, de objeto, de campo de batalla... Podemos ver una lista de todos los tipos de evento buscando "register" en la documentacion de eluna o en el codigo https://github.com/ElunaLuaEngine/Eluna/blob/master/Hooks.h
Cuando sepamos que tipo de evento queremos registrar entramos a su pagina en la documentacion y nos informamos de como se usa.
Nada mas abrir la pagina vamos a ver un trozo de codigo. No os asusteis, es muy facil de entender. Este codigo se divide en tres columnas y lo usaremos para saber que evento en concreto vamos a usar. Para ello tenemos que leer la primera de las tres columnas, la que nos trae el nombre del evento. Es muy descriptiva y no vamos a tener ningun problema en identificar el evento que necesitamos.
Una vez tengamos el evento que queremos tenemos que mirar la segunda columna, donde veremos un numero. Este numero es el identificador del evento, lo necesitaremos para registrarlo.
En la tercera columna estan los argumentos que puede tener la funcion ejecutada por ese evento.
En el apartado "Sypnosis" nos dice como llamar el evento que hemos escogido y en "Arguments" nos da una pequeña explicacion de cada argumento de la funcion para registrar el evento.
Cuando queramos registrar un evento tenemos que guiarnos por la sipnosis. Lo mas facil es copiarla y pegarla en nuestro script y modificar los argumentos.
Los argumentos tipicos son el numero de evento y el nombre de la funcion a ejecutar.
Script de ejemplo - Curar a jugador cuando sale de combate:
Quiero que cuando el jugador salga de combate recupere automaticamente toda su vida.
Se que el evento que necesito es del jugador, asi que me voy a https://elunaluaengine.github.io/Global/RegisterPlayerEvent.html
Encuentro el evento que necesito
Y lo registro:
Al registrarlo decidi que la funcion se iba a llamar CurarJugador. A esta funcion le corresponden los argumentos event y player, pero solo usaremos player.
Ahora que hemos creado la funcion tenemos que rellenarla. Para esto es importante estar agil con la documentacion de Eluna para no dar muchas vueltas.
Como quiero modificar la vida del jugador busco "health"
Veo que no tengo ninguna funcion que automaticamente cure completamente al jugador, asi que vamos a usar dos funciones: Leer la vida maxima del jugador y cambiar la vida del jugador (GetMaxHealth y SetHealth).
El objetivo es obtener la vida maxima del jugador y modificar sus puntos de vida para que sean los mismos que los maximos.
Para llamar a una de estas funciones usamos el argumento player (a quien van a afectar).
Asi pondriamos la vida del jugador a 1000:
Pero como lo mas probable es que la vida maxima del jugador no sea de 1000, tenemos que cambiar ese numero por su vida maxima. ¿Como lo hacemos?
Y combinandolo todo la funcion nos quedaria tal que asi:
El script completo seria este:
Instalar nuestro script
Instalar nuestro script es tan sencillo como gurdarlo en formato .lua, moverlo a la carpeta lua_scripts del emulador y ejecutar el comando .reload eluna
Al recargar Eluna tenemos que estar atentos a la consola world para ver si nos da algun error. Un fallo tipico es olvidarse un parentesis:
El mismo worldserver nos dice cual es el fallo y donde esta. A veces el fallo no sale a la luz hasta que ejecutamos el script, asi que si no funciona lo primero que tenemos que hacer es mirar la consola!
Webs de referencia:
https://www.lua.org/pil/contents.html
https://elunaluaengine.github.io/index.html
https://github.com/ElunaLuaEngine/Eluna
https://github.com/ElunaLuaEngine/ElunaTrinityWotlk
https://github.com/ElunaLuaEngine/Scripts
Como ultimo punto dire que la mejor manera de aprender es pegarse con ello. Si teneis una idea intentad hacer el script y pelearos con ella hasta que salga.
Un emulador con Eluna
Un editor de codigo
Nociones basicas de Lua
Tener abierto https://elunaluaengine.github.io/index.html
Funciones:
Una funcion es un pequeño programa dentro de nuestro script. Ejecuta una serie de comandos, comprueba si se cumplen condiciones...
La estructura de una funcion es la siguiente:
function NomrbeDeLaFuncion(argumento1, argumento2)
contenido de la funcion
end
Y la usariamos escribiendo el nombre de la funcion y, entre parentesis, los valores que queremos dar a sus argumentos:
NombreDeLaFuncion(valor, valor)
No es obligatorio dar un valor a todos los argumentos, podriamos ejecutar la funcion sin ningun argumento.
Cuando creamos una funcion podemos hacer que tenga argumentos. Al invocar una funcion damos un valor a estos argumentos y los podemos utilizar en la funcion.
Por ejemplo este codigo nos sumara los argumentos al ejecutarlo en la terminal (no en WoW):
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
Como habeis visto es posible (y muy habitual) ejecutar funciones desde otras funciones. En el ejemplo anterior llame a la funcion SumaArgumentos() desde la funcion print(). Esta es una tecnica que usaremos a menudo.
Eventos:
Para casi cualquier cosa que programemos en Eluna necesitaremos un evento que lo "dispare".
Podemos hacer una funcion que nos de un objeto, pero no hara nada hasta que la activemos con un evento. Por ejemplo, podriamos activarla al entrar por primera vez en el juego, al unirnos a una hermandad... Para todo esto tenemos eventos con los que hemos de registrar nuestra funcion.
Para registrar un evento lo primero que necesitamos saber que tipo de evento sera. Tenemos eventos de jugador, de hermandad, de objeto, de campo de batalla... Podemos ver una lista de todos los tipos de evento buscando "register" en la documentacion de eluna o en el codigo https://github.com/ElunaLuaEngine/Eluna/blob/master/Hooks.h
Cuando sepamos que tipo de evento queremos registrar entramos a su pagina en la documentacion y nos informamos de como se usa.
Nada mas abrir la pagina vamos a ver un trozo de codigo. No os asusteis, es muy facil de entender. Este codigo se divide en tres columnas y lo usaremos para saber que evento en concreto vamos a usar. Para ello tenemos que leer la primera de las tres columnas, la que nos trae el nombre del evento. Es muy descriptiva y no vamos a tener ningun problema en identificar el evento que necesitamos.
Una vez tengamos el evento que queremos tenemos que mirar la segunda columna, donde veremos un numero. Este numero es el identificador del evento, lo necesitaremos para registrarlo.
En la tercera columna estan los argumentos que puede tener la funcion ejecutada por ese evento.
En el apartado "Sypnosis" nos dice como llamar el evento que hemos escogido y en "Arguments" nos da una pequeña explicacion de cada argumento de la funcion para registrar el evento.
Cuando queramos registrar un evento tenemos que guiarnos por la sipnosis. Lo mas facil es copiarla y pegarla en nuestro script y modificar los argumentos.
Los argumentos tipicos son el numero de evento y el nombre de la funcion a ejecutar.
Script de ejemplo - Curar a jugador cuando sale de combate:
Quiero que cuando el jugador salga de combate recupere automaticamente toda su vida.
Se que el evento que necesito es del jugador, asi que me voy a https://elunaluaengine.github.io/Global/RegisterPlayerEvent.html
Encuentro el evento que necesito
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
Y lo registro:
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
Al registrarlo decidi que la funcion se iba a llamar CurarJugador. A esta funcion le corresponden los argumentos event y player, pero solo usaremos player.
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
Ahora que hemos creado la funcion tenemos que rellenarla. Para esto es importante estar agil con la documentacion de Eluna para no dar muchas vueltas.
Como quiero modificar la vida del jugador busco "health"
Veo que no tengo ninguna funcion que automaticamente cure completamente al jugador, asi que vamos a usar dos funciones: Leer la vida maxima del jugador y cambiar la vida del jugador (GetMaxHealth y SetHealth).
El objetivo es obtener la vida maxima del jugador y modificar sus puntos de vida para que sean los mismos que los maximos.
Para llamar a una de estas funciones usamos el argumento player (a quien van a afectar).
Asi pondriamos la vida del jugador a 1000:
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
Pero como lo mas probable es que la vida maxima del jugador no sea de 1000, tenemos que cambiar ese numero por su vida maxima. ¿Como lo hacemos?
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
Y combinandolo todo la funcion nos quedaria tal que asi:
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
El script completo seria este:
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
Instalar nuestro script
Instalar nuestro script es tan sencillo como gurdarlo en formato .lua, moverlo a la carpeta lua_scripts del emulador y ejecutar el comando .reload eluna
Al recargar Eluna tenemos que estar atentos a la consola world para ver si nos da algun error. Un fallo tipico es olvidarse un parentesis:
El mismo worldserver nos dice cual es el fallo y donde esta. A veces el fallo no sale a la luz hasta que ejecutamos el script, asi que si no funciona lo primero que tenemos que hacer es mirar la consola!
Webs de referencia:
https://www.lua.org/pil/contents.html
https://elunaluaengine.github.io/index.html
https://github.com/ElunaLuaEngine/Eluna
https://github.com/ElunaLuaEngine/ElunaTrinityWotlk
https://github.com/ElunaLuaEngine/Scripts
Como ultimo punto dire que la mejor manera de aprender es pegarse con ello. Si teneis una idea intentad hacer el script y pelearos con ella hasta que salga.