Scripts

TUTORIAL: SISTEMA DE ESTACIONES

¡Bien! Como hemos dicho en nuestra entrada inicial, inauguramos este apartado con un pequeño pero útil script para Pokémon Essentials que explicaremos de manera sencilla para que sea fácilmente entendible para aquellos que seáis unos entendidos en el mundo de la programación y para los que tengáis menos idea.

Se pretende que los que tengáis menos idea aprendáis también algo de programación. Puede ser algo complejo pero de esta manera vosotros podréis hacer más fácilmente vuestros propios scripts sin ayuda. Nosotros para la explicación utilizaremos un proyecto de Pokémon Essentials 15.1 que podéis descargar fácilmente de Internet de forma gratuita y que al final del tutorial os dejaremos link para descargar, pero aconsejamos que lo probéis en vuestros propios proyectos. Es de agradecer que deis créditos si usáis este tutorial en vuestro propio proyecto.

Bien, hora de comenzar:

Antes de nada, ¿Qué es lo que va a hacer este script?

El script va a mostrar una imagen que indicará en qué estación nos encontramos y además, cambiará
el tileado de nuestro juego en función de la estación. Solo el de fuera, es decir, que los interiores, como el tileado interior de las casas y demás, no cambiarán.

Muchos pensaréis que habrá que hacer un script con un algoritmo muy complejo, pero veréis que es más sencillo de lo que parece, aunque primero habrá que explicar algo de teoría.

Comencemos con la primera parte:

1) Mostrar una imagen que nos indica la estación:

Para este paso y para el siguiente, necesitaremos un poco de código que servirá de manera común. Para aquellos que no sepáis cómo funciona bien RGSS, hay que tener en cuenta que este lenguaje lo que hace es unir todos y cada uno de los scripts del editor en uno solo. De manera que lo único que los separa son las diferentes clases, pero esto nos viene bien, pues los métodos o fragmentos de código definidos que no estén dentro de una clase, podrán ser accesibles de manera global desde cualquier parte del código.

Basta, de teoría, pasemos a la práctica.

- Primero tenemos que abrir el editor.



- Se nos abrirá una pestaña como ésta con todos los scripts del juego.



- Para escribir nuestro script lo haremos encima del main, pero debajo de todos los demás. Lo que tenemos que hacer es click derecho en el script "main" y daremos a Insertar, de manera que se nos creará un script en blanco. Nosotros por dejarlo más claro, dejaremos varios huecos. Tenemos que ponerle un nombre para identificar nuestro nuevo sistema de estaciones.



- Ahora procederemos a crear nuestro método. Éste lo que hará es devolvernos el valor de la estación, es decir, qué estación está vigente y tenemos que tener en cuenta que para ello necesitaremos 2 variables o contenedores a los que podéis acceder de manera global: day y mon, que como intuitivamente ya habréis descubierto, nos marcan el día y el mes. Bien, para acceder a ellos los llamaremos de la siguiente manera: Time.now.day y Time.now.mon. Estas dos variables recogen durante toda la ejecución del programa/juego el día y mes del ordenador que se esté usando. El sistema de estaciones se puede hacer más simple si solo utilizamos el mes, pero hagámoslo complejo.
Para definir el inicio un método en Ruby (el lenguaje en el que se basa RGSS), tenemos que utilizar la palabra def  y para acabar, la palabra end. De manera que nuestro método quedará así definido: 




Ahora llega parte de la chicha: El código del método:



- Pero este script tendrá el percance de que si es 20 de diciembre seguirá el tileado de otoño y no
cambiará hasta el 21 de diciembre, por lo que podemos obviar la parte de los días y ponerlo de manera aproximada solo con los meses (O simplemente, a vuestro gusto):



- Con esto termina la mitad de la parte uno y de la parte dos. Ya que este método por si solo no hace nada, tenemos que vincularlo a lo que queramos hacer. No os preocupéis porque ahora solo queda lo mas sencillo.

Queremos que se nos indique la estación nada más iniciar la partida y para mostrar una imagen antes de que cargue el mapa, hay que tener en cuenta cuando lo carga, ¿verdad?

Pues eso ocurre en el script Scene_Map, por lo que tendremos que hacer una ligera modificación ahí, en especial en el método "main" del Scene_Map.



-Recordad que la imagen debe ser del tamaño de la pantalla y que con las veces que disminuyáis la opacidad de la imagen, se aumentará la velocidad con la que desaparece. Si queréis que se mantenga la imagen unos instantes más podéis utilizar el método  pbWait(frames que queráis que se mantengan). Ponedlo simplemente después de Graphics.transition y antes de hacer desaparecer la imagen. Ejemplo: pbWait(20). Es necesario poner en la transición de la opacidad pbWait(1) ya que así esperará un frame cada vez que baje algo la opacidad, de manera que este efecto será visible. Si no lo ponéis, observaréis que pasa directamente al resultado final: Desaparecer.

El efecto final será algo similar a ésto:



Y con esto se pone fin a la parte uno del tutorial. Ahora solo queda cambiar el tileado.

2) Cambiar el tileado según la estación:

Para ello, tenemos que saber cuando se carga el tileado del juego, ¿Verdad?

Pues esto se hace en el script Spriteset_Map, así que tenemos que ir ahí y modificarlo un poquito.



Como veis hemos recogido una vez más el valor del método que hemos creado inicialmente. Si este valor es "Primavera", "Verano", "Otono" o "Invierno", pone un tileado u otro.

- Y esto es todo. Ya tenéis un sistema de estaciones completamente funcional. Si lo que queréis es que también se modifiquen las batallas, solo tenéis que hacer lo mismo pero en el script PokeBattle_Scene, justo cuando se cargan los fondos y las bases de los Pokémon.



p.D: Los árboles en verano v otoño no cambian porque no hemos hecho el tileado para ello, simplemente tenéis que modificar el habitual por los gráficos de verano, otoño, invierno y primavera por los que correspondan. También recordad que para que funcione tenéis que tener en el archivo metadata.txt de la carpeta PBS señalados los mapas que sean outdoor/fuera. Sino, el tileado no cambiará.

Aquí os dejamos un link donde podéis descargaros el proyecto con el que hemos hecho el tutorial:

https://mega.co.nz/#!FFxHTZLA!RXby6jZAVPz_j2zWKf3L1Pk6JZLlP6l4hrSSicdd3Ko

Así podéis usarlo de referencia.

Si tenéis cualquier duda o sugerencia, podéis escribirnos a nuestro correo o dejarlo en los comentarios.

Esperamos que os haya gustado, que lo disfrutéis y aprovechéis y que sigáis apoyándonos.

¡Un saludo, fans de Primal Silex!







1 comentario:

  1. It's good to take the work of others and trying to continue the version but you could give the credits, like this version "primal silex" has been stolen from Blue Chrome made by Luka S.J at Pokecommunity site.
    Good luck still...

    ResponderEliminar