[Guía] Guía básica acerca de las funciones. |
Hikatory « Citoyen » 1381443540000
| 0 | ||
En este ámbito lo que se hace complicado entender es como usar un comando "!accion" para que suceda cierta cosa. Si bien muy aparte de usar un solo evento: eventChatCommand(String playerName, String message) se tienen que usar otras opciones que no están el la documentación de Lua proporcionada por Tigro. Sentencias IF, asignación de variables, bucles, creación de funciones. En fin, es todo una serie de comándos que si no se los tiene claro, no se podría pretender avanzar en la programación de minijuegos en LUA. Vamos a crear un simple código que revise si el usuario es chaman y tiene queso, este podría darle queso a los otros mediante el comando !queso Nombre_del_Usuario. Mientras no. Empezamos. a dit : Lo que es arriba es una simple presentación de mapas, por ahora con el cambio automático de tiempo activado(si hay pocos ratones en la sala, el tiempo se reduce a 20), la rotación automática de mapas desactivada (porque usaremos un math.random) y que haga uso de la función que crearemos abajo de esta con startNewGame() que contiene una función de cargar un mapa mediante tfm.exec.newGame pero con algo distinto, el math.random(#maps) que hace que de la tome un valor aleatorio de la variable #maps (primera línea) lo cual vendría a tomar el único valor que hay ahí y seria el mapa "0" El main (); que hace que todo lo que ha estado antes de este, sea revisado por el juego y que se pueda ejecutar sin problemas. La función eventLoop hace que suceda algo en fracciones de segundos, en este caso si el tiempo restante es menor o igual a 0 entonces carga la función startNewGame(); que hace cargar un mapa aleatorio. Lo que se va a usar de mapas es hasta ahí, pero un código completo y explicado es este: Rotación simple de mapas. a dit : Una de las cosas que yo no tenía claro era la creación de funciones. Una función que guarde ordenes específicas para su posterior uso en algun otro lado, sin la necesidad de escribir tanto código. Se asignarán 2 variables en la función que vamos a crear, el orden puede variar pero su destino no. En playerName se asignarán los ratones que sean chamanes segun la sentencia IF. En nombrejugador se asignarán los ratones a quienes haya que darle el quesito :B a dit : Esta es una sentencia IF, se lo puede entender como: [url=][/url] Lo que se dice ahí es que si entre todos los jugadores hay un chaman, a ese chaman lo asignaremos en la variable playerName y hagamos una acción, una acción proporcionada en la linea de abajo. a dit : El ratón que quedará asignado en la variable nombrejugador conseguirá un queso [•] Qué tenemos hasta ahora? • Tenemos una presentación de mapas simple, si el tiempo se acaba cambia de mapa. • Hemos creado la función TieneQueso, consiste en agrupar un conjunto de funciones y usarlo para un propósito, más adelante. • Hemos creado una sentencia IF que dicta que si el ratón es chaman (asignado en la variable playerName) entonces este está apto para darle queso a algún jugador (asignado en la variable nombrejugador) Solo tenemos eso, podríamos decir que es la mitad, pero aquí se viene lo importante. a dit : Función clave, esta función no da la opción de crear comandos, todos empezados por un signo de exclamación "!" Declaramos 2 variables, playerName y orden. En la variable orden guardaremos el comando clave que usaremos, en mi caso "!queso" a dit : Declaramos una nueva variable args que nos servirá para un posterior código. a dit : Este comando te extrae la palabra asignada a la variable orden se asigna en la variable arg para usarse en algúna otra proposición. a dit : El código table.insert (args, arg) guarda en su interior las variables recibidas, las guarda para mediante al programador poder asignarle una posición, nombrejugador=args[2] se coloca de segundo y command=args[1] se coloca de primero. En si tenemos !orden Nombre_del_Jugador que es lo que quería obtener desde el principio de la codificación. a dit : Otra sentencia IF, esta es directal a la función function eventChatCommand(playerName, orden) ya que de esas variables playerName y orden, vamos a sacar las distintas instrucciones. [url=]Si el comando es igual a "queso" y de toda la lista de jugadores agregaremos a la variable[/url] playerName [url=]solo los jugadores que tengan el queso entonces...[/url] a dit : Al colocar la función que creamos más arriba TieneQueso con sus respectivas variables, afirmamos que si el raton escribe !queso y si este tiene el queso, entonces la función TieneQueso se activará. [•] Oh espera! Qué tiene la función tiene queso? Una vez que se active el filtro de la sentencia IF que dicte que el que diga el comando !queso y a su vez ese mismo ratón tenga el queso entonces activará la función TieneQueso que nosotros creamos, que crea otro último filtro más. El último filtro fue revisar que si ese ratón es o no chaman. Entonces, si lo es, el programa le dará el queso al ratón nombrado y asignado en la variable args (qué asignamos en la variable args? Asignamos nombrejugador) Y la función reconoce al nombre de jugador directamente mientras se escriba su nombre tal cual es. Y tenemos el minijuego, si el chaman consigue el queso, el podrá compartirlo a sus ratoncitos mediante el código !queso Nombre_del_usuario si el chaman no tiene el queso no podrá hacerlo. Disculpen si he repetido el uso de la sentencia IF como más de 4 veces, pero es que es una función muy importante de la programación en general, gracias a ella nos obviamos de muchos pasos y es muy importante tenerlo claro. El código completo está en este url: !queso En fin, el código lo he hecho con ayuda de Issey y también en base a otros códigos. Lo he tratado de explicar lo más posible. Si tienen alguna duda pues no falta comentar... de aquí en adelante podré cosas básicas para poder desarrollarlas aquí. |
Rataxex « Citoyen » 1381444560000
| 0 | ||
Buen hilo Jika! Ahora sabre todos los !cosaquehaces |