Registrarse

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

Estado
Cerrado para nuevas respuestas.

Jessie

What goes around, comes around

Clase 1 : Funciones, Class y Module


Objetivo​

El objetivo de está clase es enseñar la manera de crear y llamar funciones, class y module.

Introducción​

Antes de comenzar, seleccionaremos una versión de Essentials para usar, ya que los temas que veremos son básicos no importa la versión que elijan, pero las sugeridas son la versión 16 o la versión 17.
Ahora abriremos la versión seleccionada de Essentials en Rpg Maker XP, luego entraremos al Editor de Scripts y crearemos una sección nueva arriba de Main, para esto hacemos click derecho sobre la sección Main y al salir las opciones seleccionamos insertar/insert y se creará una nueva sección arriba de la que seleccionamos. Esta nueva sección nos servirá para colocar todo lo relacionado con la clase de hoy y la mayoría de las clases futuras, piensen en ella como su libreta de apuntes.


1.1 Crear y llamar funciones​

Para poder crear una función, primero se necesita definir correctamente, esto se hace escribiendo el comando def al inicio seguido del nombre de nuestra función y para marcar que se finaliza se agrega el comando end, por comodidad se puede usar el operador ; (punto y coma) para separar cada linea.


Dentro del editor, usamos el símbolo # para escribir una nota, las notas son textos de referencia que no afectan el funcionamiento del código.

En el ejemplo 1 vemos como definimos la primera función, primero escribimos el comando def seguido del nombre que le daremos a nuestra función, en este ejemplo la función tendrá el nombre de mi_funcion.
Algo importante para recordar es que el nombre de las funciones deben comenzar con minúscula.

En el ejemplo 2 vemos que al usar el operador ; (punto y coma) podemos colocar diferentes líneas de código en la misma línea, pero hay que recordar que si colocamos un # todo lo que este después se convertirá en una nota, incluso si se usa el punto y coma.

Para llamar una función, simplemente se escribe el nombre tal cual.


1.2 Crear y llamar class​

Un class, en pocas palabras, es la caja donde guardas tus funciones y solo sirven dentro de esa caja. Normalmente, cuando una función es definida dentro de un class a esta función se le llama método.
Cada class creada será un objeto que pertenecerá al class llamado Class.
¿Un poco confuso? Con el propósito de mantener la explicación simple, no indagaremos más a fondo, al menos por ahora.

Para crear un class, se hace escribiendo el comando class seguido del nombre que tendrá.
Es importante recordar que el nombre debe comenzar con mayúscula.


En el ejemplo 4, tenemos un método definido dentro del class, esto quiere decir que solo puede ser llamado a partir del class.

Un class es llamado usando el operador . (punto) seguido del método new, este método pertenece al class Class, mientras que para llamar a un método dentro del class, solo se agrega luego del .new un . (punto) seguido por el nombre del método.


Por definición, al llamar un class, este iniciará el método initialize, en caso de que este método no este definido, entonces no sucederá algo al llamar al class; si se ha llamado un método luego de iniciar el class, primero se iniciará lo que hay dentro de initialize y luego iniciará el método que ha sido llamado.


Para llamar un método dentro de un class sin que se inicie el método initialize, se usa el comando allocate en lugar del comando new, aunque realmente no es algo muy utilizado en Essentials.


En el ejemplo 6 se llamará al class y solo se mostrará lo que hay en el método initialize.
En el ejemplo 7 se llamará al class y se mostrará lo que hay en el método initialize luego se mostrará lo que hay en el método nombrado mi_metodo.
En el ejemplo 8 se llamará al class pero no se mostrará lo que hay en initialize, solo lo que hay en el método mi_metodo.

Si estás llamando un método dentro de otro método que se encuentren dentro del mismo class, no es necesario llamar al class primero.


En el ejemplo 9 vemos como el método mi_metodo está llamando al método mi_metodo2.

1.3 Crear y llamar module​

Es algo complicado intentar explicar un module en palabras simples, pero de manera resumida, un module es un conjunto de métodos y constantes las cuales pueden servir para heredar objetos.
¿Un poco Confuso?
Con el propósito de mantener la explicación simple, por ahora, usaremos a los module como si fueran class; más adelante veremos el verdadero uso del module ya que tiene diversos usos que facilitarían muchos procesos.

Al igual que el class, el module se define de manera similar, primero se debe escribir el comando module seguido del nombre que le daremos. Es importante recordar que el nombre debe comenzar con mayúsculas.
Dentro del module podemos definir métodos al igual que en un class. Pero a diferencia del class, el module nos permite crear class u otros module dentro de si mismo.


En los ejemplo 10, 11 y 12, podemos ver como un module puede contener diferentes objetos, ya sean métodos, class u otros module.

En la mayoría de los casos, en especial usando Essentials solo los métodos u objetos que estén dentro del module serán llamados individualmente.

Para llamar un método que pertenece a un module, el nombre del método debe incluir el nombre del module al que pertenece o el comando self seguido de un punto y el nombre del método.


En el caso de que se desee llamar algún objeto dentro del module, ya sean otros module, class o Constantes, se hace usando el operador :: (doble dos puntos).


En el ejemplo 14 y 15, los métodos que pertenecen al module son llamados.
En el ejemplo 16, el class que pertenece al module es iniciado.
En el ejemplo 17, es llamado un método que pertenece a un class el cual a su vez pertenece a un module.

Ahora, en el caso que se desee llamar un método que pertenezca a un module desde un class u otro module externo, se usa el comando include.


En el ejemplo 18 vemos que para llamar un método dentro de un module externo, se necesita definir ese método con el comando self. o usando el nombre del module en su lugar.
Pero si se usa el comando include al inicio, podremos llamar a ese método sin tener que agregarle el self. o el nombre del module, ya que el comando include te leerá todos los métodos y objetos dentro del module como si estos estuvieran definidos dentro del class.

En este mismo ejemplo he usado el comando print, cuya función es mostrar un mensaje en la ventana del juego, Essentials suele usar esté comando y sus variaciones para mostrar los errores cuando estos ocurren.

¿Suena algo confuso? Al ir tomando más experiencia, notarán lo útil que pueden llegar a ser los module, pero por ahora para mantener la simpleza de la explicación, no indagaremos más a fondo, al menos no por ahora.

1.4 Argumentos y Aliases​

Adicionalmente a los temas previstos, decidí que es importante tomar en cuenta dos temas adicionales, argumentos y aliases.

Un argumento es el valor de entrada que se le brinda a una función o método, en la mayoría de los casos ese valor suele ser brindado por el usuario, pero también puede depender del valor de ciertas variables y/o constantes.


En el ejemplo anterior vemos como a la función llamada unSaludo se le han agregado argumentos, estos se definen como si fueran variables y opcionalmente se les puede brindar un valor predefinido en caso de que el usuario no lo haga.
Siempre van entre paréntesis y cada argumento separado por una coma; para darles un valor predefinido solo se usa el operador = (Igualdad); en el ejemplo, al usar un texto(String) se usan ya sea “ ”(Comillas) o ' '(Apostrofes) para definir que la información que estamos enviando es un texto.

Para llamar una función con argumentos, se hace de la misma manera en la que se llamaría una función cualquiera, solamente se le agrega los paréntesis y en caso de ser necesario brindar la información que se podría necesitar.
Más adelante veremos como usar los argumentos en variables.

El aliases, es un método que ayuda a guardar la información de un método definido dentro de un class o module antes de sobrescribir la información de este.

Existen dos formas de esté método, el comando alias y el alias_method, para mantener la explicación simple, solo nos enfocaremos en el comando alias.


En el ejemplo 20, hemos creado un class llamado Colores, este tiene un método llamado lista el cual contiene un texto con nombres de colores.
El comando return regresa el valor dado cuando el método es llamado, en el ejemplo al llamar al método lista, esté regresará el texto con los nombres de los colores.
Ahora digamos que nuestra class Colores está metida en algún lugar entre la enorme lista de secciones del editor de scripts, pero como necesitamos modificar lo que la función lista hace, entonces en lugar de estar buscando y editando constantemente, solamente vamos a una sección nueva o conocida, y usamos el comando alias.
Ya que el método lista se encuentra definida dentro del class Colores, primero necesitamos abrir ese class, eso lo hacemos al escribir el nombre del class como ya hemos aprendido, luego usamos el comando alias seguido del nuevo nombre del método que deseamos sobrescribir y de último el nombre original del método; en el ejemplo nos quedó así :
alias lista_2 lista
Debajo definimos nuevamente nuestra función y hacemos todos los cambios que necesitemos, en el ejemplo use el comando print para que muestre un mensaje que incluya un nuevo color más la lista de colores que ya teníamos definido, ya que el método anterior lo guardamos en una función temporal llamada lista_2, podemos tener acceso a ella al llamarla usando el nuevo nombre que le dimos.



Tarea de la clase 1​

Durante esta clase, vimos como definir y llamar funciones, class y module; además de una pequeña introducción al uso de argumentos y el aliases.

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

  • Realizar una función con tres argumentos y que al llamar a esa función desde un evento(npc) te muestre un mensaje usando el comando print, el mensaje debe contener esos tres argumentos en forma de texto.
  • Realizar un module que contenga un método que te regrese un texto con una lista de nombres de bayas (mínimo 3). Luego hacer una función que te muestre esa lista de bayas usando el comando print.

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 mostrados en la ventana del 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 Jueves 14 de marzo antes que la siguiente clase sea publicada.
No olviden seleccionar el botón +Gracias al final de este post para registrar su asistencia.


 

Ayman

Cazador Sin Recompensa
Para crear un class, se hace
escribiendo el comando class seguido
del nombre que tendrá.
Es importante recordar que el nombre
debe comenzar con mayúscula.

Pero esto iría dentro del editor de scrpits-escuela de scripting?
Todo lo demas ocurre en el editor de scripts?
Porfavor podeias decir cada cosa donde la haces?
Por lo demas el tuto te ha quedado perfecto
 
Última edición:

Jessie

What goes around, comes around
Para crear un class, se hace
escribiendo el comando class seguido
del nombre que tendrá.
Es importante recordar que el nombre
debe comenzar con mayúscula.

Pero esto iría dentro del editor de scrpits-escuela de scripting?
Todo lo demas ocurre en el editor de scripts?
Porfavor podeias decir cada cosa donde la haces?
Por lo demas el tuto te ha quedado perfecto
Así es, desde el inicio remarque que la mayoría de lo que se realice en la clase se hará dentro de la sección nueva que se debió crear, como lo muestra la Imagen 01.
Si te fijas en los ejemplos, están hechos dentro del editor de scripts, y para comprobar si funcionan, se les llama desde el comando Script usando un NPC, como lo muestra la Imagen 03.
 
Estado
Cerrado para nuevas respuestas.
Arriba