Differences

This shows you the differences between the selected revision and the current
version of the page.


es:wmebook:ch3 2013/04/09 18:09 es:wmebook:ch3 2013/04/10 20:13 current
Line 50: Line 50:
<code script> <code script>
-#include “scriptsbase.inc”+#include “scripts\base.inc”
//Ahora definimos las opciones iniciales de la escena //Ahora definimos las opciones iniciales de la escena
Line 591: Line 591:
</code> </code>
 +Guarda todos los script, y ejecuta el juego para comprobar si todo funciona correctamente.
 +
 +Para finalizar este capitulo, realizaremos un pequeño cambio juego, no es necesario pero es para que veáis como resolver lo mismo de otra forma, si os fijas, en cada script debemos hacer uso del método Game.GetNode(“puerta”); para evitar tener que hacer esto en cada script, es posible usar una variable global que guarde si la puerta fue clickeada o no, de esta manera no será necesario desactivar la puerta, y mas adelante el jugador podrá seguir interactuando con la puerta, pero si ya habíamos realizado un clic anteriormente, el script bomba no se volverá a ejecutar, dando así potencia al juego.
 +
 +Bien, veamos los cambios que debemos realizar en nuestros script para realizar lo mismo mediante una variable global.
 +
 +**bomba.script**
 +
 +<code script>
 +#include “scripts\base.inc”
 +
 +for(var tiempo=6; tiempo>-1; tiempo = tiempo -1) /* Iniciamos un bucle que llevara la
 +                                                  cuenta desde que pulsamos la puerta */
 +{
 + Game.Msg(“cuenta atrás: “ +tiempo);//Mostramos el tiempo que nos queda
 + Sleep(1000); // Detenemos la ejecución del script durante 1 segundo
 +}
 +
 + Game.Interactive=false; //Desactivamos el control del jugador
 + actor.Talk(“estoy muerto, intentalo de nuevo); //Hacemos que el actor hable
 + Game.ChangeScene(“scenes\warehouse\warehouse.scene”);/* Volvemos a cargar la
 +                                                              escena, en esta función,
 +                                                              el  parámetro se refiere
 +                                                              al archivo de escena con
 +                                                              el que estábamos trabajando,
 +                                                              debe tener el nombre que
 +                                                              nosotros le hubiéramos
 +                                                              indicado */
 +
 + var puerta = Scene.GetNode(“puerta”); //Obtenemos el objeto puerta en una variable
 + puerta.active= true; // Volvemos a hacer activa la puerta
 +
 + global puertaClicked = false; /* Esta es la nueva linea añadida, con la que
 +                                        controlaremos si la puerta fue clickeada o no.*/
 +
 + Game.Interactive=true; // Devolvemos el control del jugador
 +</code>
 +
 +**Fichero salida.script:**
 +
 +<code script>
 +#include "scripts\base.inc"
 +
 +on "ActorEntry"
 +{
 +        var puerta = Scene.GetNode("puerta"); /* Almacenamos el objeto puerta en una variable
 +                                              en este caso el parámetro “puerta” debe ser el
 +                                              nombre que le diéramos a nuestra puerta en el
 +                                              editor de escenas */ 
 +       
 + Game.Interactive = false; //Desactivamos el control del personaje
 + global puertaclicked; /* Llamamos a la variable global que almacena si la puerta fue
 +                                clikeada*/
 + if (!puertaclicked) // Con la variable global preguntamos si puertaclicked=false
 + {
 +            actor.Talk("No volveré a mi piso hasta que no sepa que no puedo entrar en el
 +                            almacén"); /* El actor realiza un comentario si no hemos echo
 +                                        click sobre la puerta */
 +        }       
 +        else //Si puertaclicked=true
 +        {
 +            Scene.DetachScript("scenes\warehouse\scr\bomba.script"); /* descargamos el script
 +                                                                            de la bomba */
 +                actor.Talk("uff! Estuvo cerca"); // Nuestro personaje suelta un comentario 
 +                Game.ChangeScene("scenes\room\room.scene"); //Cambiamos la escena
 +        }
 +        Game.Interactive = true;  // Devolvemos el control del jugador
 +}
 +</code>
 +Como podemos ver, en este caso ya no es necesario hacer uso del atributo Active del objeto puerta para saber si esta fue clickeada o no, esto da la ventaja que ya comentaba antes, que la puerta puede seguir activa después de hacer el primer clic, con lo que damos la posibilidad de que se pudiera seguir interactuando con ella.
 +Hemos venido trabajando con un proyecto de ejemplo muy simple,en el próximo capítulo empezaremos un proyecto desde 0, espero que hayas entendido estos capítulos anteriores porque son cruciales para seguir con lo que vamos a ver ahora.
 
es/wmebook/ch3.1365523757.txt.gz · Last modified: 2013/04/09 18:09 by dongo
Recent changes RSS feed Creative Commons License Driven by DokuWiki