Registrarse

[RPG - Scripting] [Escuela]Base Scripting Essentials - Clase 2

Estado
Cerrado para nuevas respuestas.

Jessie

What goes around, comes around

Clase 2 : Cuadros de texto básico


Objetivo​

El objetivo de está clase es poder crear cuadros de texto(mensajes) desde las funciones, class y/o module que hemos aprendido a crear en la clase anterior.

Introducción​

En la clase anterior vimos como crear y llamar funciones, ahora aprenderemos a usar las funciones de Essentials para crear cuadros de texto. Al revisar las tareas de la clase anterior, varios usaron la función Kernel.pbMessage en lugar del comando print como decía las instrucciones, debido a que aún no se veía esta función en clase, preferí que se usara el comando print en su lugar.
En esta clase usaremos esa misma función, explicando con más detalle la manera en que trabaja.
Ya que en la primera clase se aprendió como crear y llamar funciones usando argumentos, eso nos servirá de base para entender mejor la forma de manejar los cuadros de texto.
Para poder entender mejor el tema principal de la clase, he agregado varios temas adicionales al temario.

2.1 Objetos compatibles​

Cuando intenten agregar o modificar algún texto, se toparán con el termino String, no se asusten, en pocas palabras es el nombre que se le dan a los textos.
En la mayoría de los lenguajes de programación, se usan diferentes términos para referirse al tipo de objeto que se maneja, por ahora nos enfocaremos en solamente tres tipos de objetos, String, Integer y Symbol; por supuesto existen otros tipos de objetos y la manera de nombrar y de manejar podría variar según el lenguaje de programación usado.

Un String, como ya hemos visto, es el objeto que se usa para definir textos; para crear un String se tiene que usar “ ” (comillas) o ' ' (apostrofes).

Un Integer es el objeto que se usa para definir el valor de los números; 0, 5, -12 son ejemplos de Integer.

Un Symbol es la manera en que el sistema lee y manipula los códigos usados, por ejemplo el nombre de una función, nombre de un class, nombre de un module o el nombre de una variable o constante son objetos tipo Symbol.

Estos tres tipos de objetos tienen sus propios métodos y son compatibles con varios operadores, pero esto lo veremos en la siguiente clase con más detalle.

Existe otro objeto que es usualmente usado en Essentials, el objeto llamado Kernel. El Kernel es un module(por eso inicia con K mayúscula), pero al estar incluido(comando include) en el class Object, se puede considerar como un objeto. Debido a esto, el objeto Kernel puede ser llamado y sus métodos ser definidos como si fuera una función cualquiera.
En essentials, el module Kernel tiene definido el método pbMessage().


2.2 Llamar un cuadro de texto​

Pokémon Essentials trae diferentes maneras para llamar un mensajes de texto, a los cuales haremos referencia como “cuadro de texto” o “mensaje de cuadro de texto”.


Así de simple se puede crear un mensaje de cuadro de texto.
En caso que se desee agregar el valor de una variable dentro del texto, se debe usar la función _INTL(" ") la cual transforma el valor de esa variable(s) en String(texto).


En el ejemplo 2 tenemos una función que requiere que se agregue un argumento, este argumento es una variable cuyo valor es un String(texto), en la siguiente clase veremos más a fondo las variables y como usarlas.
Al colocar el texto dentro de la función _INTL(“ ”) podemos llamar tantas variables como queramos y transformarlas a String en caso de ser Integer(números) y agregarlas al texto.
Estas variables son colocadas en el texto usando llaves {val}, donde val es el número de la posición de la variable; las variables que serán leídas en el texto, son colocadas luego de cerrar las comillas y colocando una , (coma) para cada variable.


Kernel.pbMessage depende del método Kernel.pbMessageDisplay el cual tiene su propio formato para los textos, este formato, es capaz de tomar el valor de una variable y convertirla en String, por tanto podemos colocar el valor de las variables en el texto de una manera más simple. En el ejemplo 4 vemos como el valor de las variables provenientes de los argumentos pueden aparecer en el texto al usar el comando #{var} donde var es el nombre de la variable o argumento que contiene el valor que deseamos agregar.


2.3 Cuadro de texto con opciones

Kernel.pbMessage también cuenta con la opción para crear cuadros de texto con opciones, esto incluye el clásico Si/No (Yes/No), aunque también puede ser fácilmente modificado.
En clases futuras veremos más a fondo a los condicionales y sus variaciones, pero por ahora solo veremos como manejar el condicional if para el Kernel.pbMessage.

El condicional if es usado para determinar si una condición dada se cumple, en el caso de los cuadros de texto, estos te regresarán el index de la opción seleccionada. El condicional if se utiliza de la siguiente forma.


El comando if debe ser finalizado con el comando end, y el comando else es opcional.


En el ejemplo 5 vemos que se ha usado Kernel.pbConfirmMessage para crear un cuadro de texto en el cual se generará un pequeño cuadro que muestre las opciones Yes/No. Al colocar Kernel.pbConfirmMessage después del comando if, este nos regresará el valor del index seleccionado, si se selecciona la primera opción (Yes) ocurrirá lo que hay después del comando if. Si se usa el comando else, al seleccionar la segunda opción, ocurrirá lo que hay después de este comando.
Al finalizar, se debe cerrar el condicional if con el comando end.


En el ejemplo 6 vemos que en lugar de usar Kernel.pbConfirmMessage, se ha usado Kernel.pbConfirmMessageSerious, la diferencia es que este último cambia el orden de las opciones mostradas, en lugar de mostrar Yes/No mostrará No/Yes, todo lo demás aplica exactamente igual.


En el ejemplo 7 regresamos al Kernel.pbMessage, pero lo usaremos como condicional; para hacerlo primero necesitamos definir las opciones que tendrá, en el ejemplo aparecen solo dos opciones (Peras y Manzanas), pero pueden ser tantas como deseen teniendo en cuenta que si son demasiadas estas quedarán fuera de la pantalla.


El formato para crear un cuadro de mensaje de este tipo es el siguiente :
Kernel.pbMessage(A,B,C)
Donde :
A es el texto en el cual se realiza la pregunta para el jugador
B es la lista de opciones dentro de [] (Corchetes)
C : Index de la opción que se seleccionará si el jugador presiona X (Peras tiene index=1 mientras que Manzanas tiene index=2)

De manera predefinida, Kernel.pbMessage te regresará el valor de la opción seleccionada. En el ejemplo se a colocado el operador == al final de la condición inicial, esto significa que la primera condición se cumplirá solamente si el index de la opción seleccionada es igual al valor que se coloque al final del operador ==. En esta ocasión la primera opción tiene el index=0, mientras la segunda opción tiene el index=1.

En las siguientes clases aprenderemos como usar los cuadros de texto en base a variables y con diferentes tipos de condicionales.

2.4 Comandos básicos

Essentials trae diversos comandos para modificar la imagen y posición de los cuadros de texto, así como otros para agregar mugshots, iconos o dar formato al texto agregando colores, estilos, tipo de fuente entre otros más.
En la pagina de Wiki de Essentials aparece la lista completa de estos comandos, por ahora solo veremos algunos que nos servirán para la tarea de la clase.


A diferencia de los textos creados desde los npc, al crear un texto desde un script, se deberá usar doble diagonal \\ para llamar a un comando.
En el ejemplo 8 vemos que el comando \\w[val] cambiará la imagen del cuadro de texto, ya que val es el nombre del cuadro de texto(skin) dentro de la carpeta Windowskin en Graphics.

Para hacer que cambie la posición del cuadro de texto en la pantalla se usan los siguientes comandos, \\wu para colocarlo arriba de la pantalla, \\wm para colocarlo en medio de la pantalla y \\wd para colocarlo en la parte baja de la pantalla(normal).

Para cambiar el color del texto se puede usar el comando \\c[val], donde val es el número que representa ese color. La lista de colores disponibles es :
0 =Negro, 1=Azul, 2=Rojo, 3=Verde, 4=Cían, 5=Magenta, 6=Amarillo, 7=Gris y 8=Blanco.



Tarea de la clase 2

Durante esta clase, vimos como llamar mensajes de cuadros de texto y como usarlos para crear una ventana de opciones.

Con el propósito de reforzar lo aprendido, se deberá realizar lo siguiente :

  • Crear una función que requiera 3 argumentos, luego mostrar estos argumentos en un mensaje de cuadro de texto usando Kernel.pbMessage
  • Crear un class que al iniciar muestre un mensaje de cuadro de texto en el cual te realice una pregunta simple de Yes/No.

Ambas tareas se entregarán desde el canal #tareas en el servido de discord CreadoresEssentials, si aún no se han unido lo pueden hacer desde este link https://discord.gg/VvrSQwz
Pueden usar capturas de pantalla para mostrar el código que han creado además de los mensajes de los cuadros de texto mostrados en el juego. Todas las imágenes deberán enviarlas juntas en un archivo .rar para poder facilitar su manejo.
Tienen como plazo límite el día Lunes 18 de marzo antes que la siguiente clase sea publicada.
A partir de esta clase, el criterio de asistencia ya no será tomado en cuenta, así que solamente se considerará la entrega de la tarea.

 
Estado
Cerrado para nuevas respuestas.
Arriba