Kenobi-LJN.net

Temas

LUA para wherigos

1. Introducción

En esta serie de tutoriales se da por hecho que si los estás leyendo es porque ya sabes programar Wherigos usando Urwigo, y quieres aprender a programar en LUA para mejorar tus cartuchos. Si no sabes programar Wherigos con Urwigo te recomiendo los estupendos tutoriales de MiTesoro (manual de Urwigo, Tutorial 1, Tutorial 2) y manupor3 (presentación de Urwigo, acciones y expresiones). Cuando lo domines, podrás empezar estas pequeñas lecciones de LUA.

A la izquierda se encuentra el botón para navegar entre los distintos Temas. Cada tema tiene un videotutorial, una explicación teórica escrita, imágenes explicativas, algunos ejemplos en foto, y enlaces para descargar archivos .urwigo para trastear.

Videotutorial

Próximamente...

Qué es LUA y por qué usarlo

LUA es el lenguaje de programación en el que están escritos los cartuchos de wherigo. Como todos los lenguajes de programación, para usarlo hay que tener nociones de programación, conocer la sintaxis del lenguaje, conocer sus funciones, peculiaridades, etc. Esto puede ser algo "poco amigable", o "poco visual". Por ello, hay opciones con entorno gráfico para hacer el proceso de creación de cartuchos más asequible.

Urwigo es un entorno gráfico para generar cartuchos de Wherigo con más facilidad que escribiéndolos directamente con LUA. Pero... el desarrollador de Urwigo no implementó todas las funciones LUA en el entorno gráfico de Urwigo, por lo que para usarlas no nos queda otra que usar LUA "a pelo".

Algunas cosas que son soportadas en Wherigo pero que no están en la interfaz gráfica de Urwigo son: las variables tipo array, el OriginalPoint de una zona (que es el centro geométrico de la misma), la reciprocidad de los commands con target, etc.

Por ejemplo, imaginemos que tenemos un input. Sus propiedades son el nombre, la imagen, la pregunta, si es de tipo text/number/choice, y las posibles respuestas (si es de tipo choice). Ahora imaginemos que queremos cambiar la pregunta del input a mitad del cartucho. Se podría hacer un Set con el siguiente esquema: . Esto se puede hacer porque en Urwigo está la cajita de "Question" para poder arrastrarla a un Set. Pero si se quisiera cambiar las choices de un input... no hay "cajita" de choices. Por lo que si se quiere cambiar los choices a mitad de un cartucho, se ha de usar sí o sí LUA.

En esta serie de tutoriales vamos a usar LUA en combinación con Urwigo, complementándolo.

Como no hay cajita de la propiedad "Choices", no se puede definir con un Set. Sólo queda usar LUA.

El identificador

Lo primero que tenemos que saber para empezar a trabajar con LUA es que no se usa el nombre, si no el identificador. Se puede definir el identificador de cualquier objeto desde la pestaña General dentro de Properties. El identificador ha de cumplir una serie de requisitos para ser válido:

Aquí es donde se define el identificador. Por defecto está en blanco y se asigna uno automático. Si se quiere usar LUA hay que definirlos bien. Fíjate en que no se ha puesto ningún espacio.

Cómo usar LUA en el cartucho

Una vez que tenemos identificado el objeto en cuestión, podemos usarlo con LUA. Básicamente hay tres formas de usar LUA dentro de un cartucho:

Algunos ejemplos...

Para este ejemplo (puedes descargarlo desde aquí) he querido usar un If/Else, aunque en esta serie de tutoriales todavía no se ha explicado cómo es un If/Else en LUA.

Tenemos un cartucho en el que posees una espada. En determinados momentos del cartucho (me imagino al matar monstruos o lo que sea) la espada sube de nivel, siendo más potente. He programado dos funciones totalmente equivalentes, una con cajitas de Urwigo y otra en LUA:

La función "Función subir nivel" incrementa en 1 el nivel de la espada, le cambia la descripción, el icono y la imagen.


La función "subirNivel()" hace exactamente lo mismo, pero escrita en LUA user functions.

Para este ejemplo he puesto un command en el item Espada que permite subir el nivel. Un input pregunta si se desea usar para ello la función "de cajitas" o la de LUA:

Este input permite elegir si se desea ejecutar la función de cajitas o la de LUA. Así demostramos que ambas hacen exactamente lo mismo.