Vous êtes sur la page 1sur 24

Tutorial para aprender a crear scripts en RGSS by MakerJ

Obra bajo licencia Creative Commons 3.0, totalmente prohibida su distribucin sin reconocer al autor del mismo (MakerJ). Queda totalmente prohibida su edicin sin permiso expreso del autor. Prohibido su uso con fines comerciales.

Creado por MakerJ para la comunidad de Cedexia

Breve Introduccin y Agradecimientos:


Este manual fue creado por mi(MakerJ) para la gran comunidad de creacin de videojuegos Cedexia. Para crear este manual tom como referencia la gua de Necrozard, algunos apuntes de Dublebeax y la gua de DonBarksGueist, adems de mis propios conocimientos a lo largo de todos estos aos como maker. Este gua a sido creada sin nimo de lucro y se puede distribuir siempre y cuando se indique el autor o un enlace a la web del mismo (Cedexia). Espero que con esta gua el que la lea aprenda a programar en RGSS aunque sean las nociones bsicas.

QUE ES RGSS?
RGSS son las siglas de Ruby Scripting System o lo que es lo mismo: Sistema de Scripting para juegos con Ruby. No voy a explicar que es un lenguaje de programacin porque parto de la base de que sabeis que es, pasemos a explicar que es el lenguaje de programacin Ruby. -Ruby es un lenguaje multiplataforma, interpretado y orientado a objetos. Fue creado por Yukihiro Matsumoto en 1993, como un lenguaje facilitador de trabajo, que divirtiera al programador a la hora de hacer su trabajo.

PROGRAMACIN ORIENTADA A OBJETOS? EN ESPAOL, POR FAVOR.


La programacin orientada a objetos POO (OOP en ingls) es un paradigma de programacin que usan los principales lenguajes de programacin, en este paradigma se usan objetos y sus relaciones para programar lo que ser la aplicacin final. Los objetos son entidades que combinan estado (atributo), comportamiento (mtodo) e identidad, esto lo aprenderemos mas adelante en la gua.

Y ESTO DE QUE ME SIRVE?


Principalmente para crear tu propio juego totalmente personalizado, un juego de Rpg Maker XP sin scripts no es nada, cuando creas un nuevo proyecto este ya viene preparado con sus scripts bsicos, si los borras el proyecto no funcionar.

Y QUE PUEDO HACER CON RGSS?


TODO, respuesta simple y rpida. Con RGSS puedes programar scripts que te permitan hacer todo lo que quieras siempre que sea posible que el Rpg Maker lo haga funcionar con fluidez y que tu PC tenga los medios para hacerlo posible.

ESTS SEGURO QUE UN TONTO COMO YO PUEDE APRENDER ESTO?


Por supuesto, programar RGSS es una de las cosas ms fciles que puedes hacer en informtica, en cuanto aprendas lo bsico y practiques un poco podrs dominarlo sin problemas. Pasemos ya a la parte de programacin.

VEO COLORES EN EL EDITOR


El editor de scripts lleva incorporada la funcin de colorear los diferentes tipos de elementos del script. Aprenderse estos colores es muy til para programar con mayor rapidez:
Azul:

Representa las palabras reservadas de la sintaxis. Ejemplos: def, class, if, break
Marrn-rojizo:

Representa los nmeros en el cdigo. Ejemplos: 1, 20, 35, 120


Celeste:

Representa los operadores. Ejemplos: =, *, +, /


Verde:

Representa los comentarios. stos son ignorados por Ruby. Solo sirven de gua al programador. Ejemplos: # Comentario, =begin Comentario de muchas lneas =end
Violeta:

Representa una cadena de texto (String) Ejemplos: Hola Mundo, Enseando Ruby

ELEMENTOS DE PROGRAMACIN.

-VARIABLES:
En el editor del Rpg Maker es posible insertar variables en un evento y aunque son un poco limitadas el concepto es ms o menos el mismo que en programacin: Las variables son estructuras de datos que, como su nombre indica, pueden cambiar el contenido a lo largo de la ejecucin de un programa. Como ya sabemos, las variables almacenan y devuelven valores. Es posible (o no) modificar su valor, pero nunca el tipo de variable. Pasemos a ver los diferentes tipos: Globales: Una variable global en Ruby (y en la totalidad de los lenguajes de programacin), significa que tiene un alcance total en el programa. Una variable global puede ser modificada desde cualquier parte del programa. Las variables globales se diferencian de las dems porque comienzan con el smbolo del dlar ($) antes del nombre original. Ejemplos: $game_system, $game_party, $variable_global De clase: Las variables de clase en Ruby, significa que tiene un alcance solo dentro de la clase donde fue asignada. Una variable de clase puede ser modificada dentro de cualquier metodo de la misma clase, pero no desde otra clase. Se diferencian porque comienzan con el smbolo arroba (@) antes del nombre original. Ejemplos: @window_gold, @actor, @variable_de_clase Locales/De mtodo: Las variables locales o de mtodo, en Ruby (y en la totalidad de los lenguajes de programacin), significa que tiene un alcance solo dentro del mtodo en que fue asignada. No puedes acceder a ella ni por diferentes mtodos ni por diferentes clases, solo dentro de su mtodo. Se usa sobre todo para contadores y variables que sabemos que nunca las vamos a usar fuera de ese mtodo. Se diferencian porque NO comienzan con ningn smbolo, como si fuera una palabra normal. Ejemplos: contador, var_local Instanciables: se pueden acceder a ellas en cualquier lugar de la clase (hablaremos ms delante de ello). Declaracin en RGSS: @variable_instanciable=1 Arrays: este tipo de variable almacena muchos valores en una cadena. Por supuesto, los arrays pueden ser de los 4 tipos de variable citados anteriormente. Declaracin en RGSS: array=[hola,titis,mundo] Acceso de variable: array[0] acceder al valor hola, array[1] a titis y array[2] a mundo, mucho ojo porque, en primer lugar, las cadenas se cuentan desde 0 (0 es el primer valor del array y asi) y acceder a un valor del array inexistente puede generar un error de excepcin al ejecutar.

-CONSTANTES
Una constante es lo mismo que una variable, con la importante diferencia de que su valor no puede variar a lo largo de la ejecucin del programa. O sea, que no se puede modificar despus de dado el valor en el script. Los valores constantes tienen un valor determinado por cdigo. Pueden declararse tanto fuera de una clase como dentro de ella. La mayor diferencia es que se escribe en maysculas: EJEMPLO: MAX_MAKERS, CONST

-OPERADORES
Son simples smbolos que se usan en programacin para realizar operaciones matemticas, una de las cosas mas fciles de aprender. Elementos:

+ Suma - Resta * Multiplicacin / Divisin += sumar variable con valor asignado -= restar variable con valor asignado *= multiplicar variable por valor asignado /= dividir variable por valor asignado = asignar valor == equiparar un valor con otro != un valor es distinto de otro > Valor mayor a otro < Valor menor a otro >= valor mayor o igual a otro <= valor menor o igual a otro ! Negar un valor

-ARRAYS
Es un tipo de variables que almacena valores en una misma cadena y estos se pueden leer y escribir. La ventaja de usar arrays es que puedes tener la cantidad de variables que quieras en un solo Conjunto. Ejemplo: @makers = [MakerJ,Cedexia,Comunidad] print @makers[0] print @makers[1] print @makers[2] @makers[0] = Administrador_Cedexia @makers = [MakerJ,Cedexia,Comunidad] : Hemos asignado en una array 3 valores de tipo string (texto). Print @makers [0] Con esta line la estamos diciendo al programa que imprima en pantalla un texto usando la funcin print, el texto que se imprimir ser en este caso el indicado en la lnea, o sea al poner el nmero 0 no est diciendo que imprima en pantalla el nombre MakerJ, esto pasa porque en programacin se empieza a contar desde el 0, si entre corchetes hubiramos puesto 1 en pantalla se mostrara el nombre Cedexia. @makers[0] = Administrador_Cedexia : Esto lo que hace es simplemente cambiar el valor del primer nombre, ahora ya no sera MakerJ sin Administrador_Cedexia, entonces al array final quedara as: @makers = [Administrador_Cedexia,Cedexia,Comunidad] Esto es una demostracin de como mediante un array podemos dar y modificar valores, creo que lo he explicado suficientemente para que sea entendible.

TABLA HASH
Los Hashes, tambin conocidos como Arrays asociativos, mapas o diccionarios. La diferencia entre array y hash, es que, como bien vimos anteriormente, el valor de un dato del array est en cierta posicin, y ese dato tiene como referencia el valor de la posicin, a diferencia de los Hashes, estos tienen la caracterstica de tener como referencia cualquier tipo de valor, pasemos a explicarlo mejor: @makers = {MakerJ =>Admin,Cedexia=>Web,Albert=>Mod} print @makers[MakerJ]

@makers = {MakerJ =>Admin,Cedexia=>Web,Albert=>Mod} Prcticamente igual que el array, nada mas que le asignamos un valor distinto al ndice de posicin. Fijate tambin, y ten mucho cuidado cuando vayas a asignar una, que los valores no van entre corchetes, sino que van entre llaves {}. print @makers[MakerJ] Es muy simple, lo que hace es imprimir por pantalla el valor que hemos asignado al nombre MakerJ dentro de la tabla, en este caso el valor es Admin. Si pusisemos Cedexia nos devolvera el valor web y con Albert nos dira Mod. Es fcil y muy simple de entender.

CONDICIONALES
Como su nombre indica son elementos que guardan una condicin y que harn algo si esa condicin se cumple (o si hay excepciones) de lo contrario se ignorar y se seguir adelante con el siguiente cdigo.

CONDICIONAL IF
Este es probablemente el condicional ms comn y usado en cualquier lenguaje de programacin. Si se ejecuta su condicin o excepcin se ejecutar lo que haya declarado en dicha condicin o excepcin: @persona1 = MakerJ @persona2 = Albert if @persona1 == @persona2 print Ambas personas son la misma else print Personas diferentes end

Este ejemplo de condicional if lo que nos dice es que hemos declarado el valor persona1 que es igual a MakerJ y persona 2 que es igual a Albert. Empezamos el if con la operacin @persona1==@persona2 y debajo la operacin de imprimir en pantalla el texto Ambas personas son la misma Este texto se imprimira en pantalla en el caso de que los 2 valores fueran iguales, pero como en este caso son distintos el programa seguir adelante con el cdigo. Mas abajo encontramos un else que es la palabra que declara la excepcin, en este caso Personas diferentes. La excepcin se cumplir en el caso de que la condicin no sea cumplida y como no lo fue, se imprimir en pantalla el texto Personas diferentes

Acabamos el condicional con la palabra end, todo condicional, mtodo, clase, y ms, deben terminar si o si con un end, sino no se marca el final y es muy probable que te de errores.

CASE
Parecido a if, pero se puede tener numerosas condiciones, incluida una excepcin. Tambin es posible usar rangos. case @command_window.index when 0 command_new_game when 1 command_continue when 2 command_shutdown end case @command_window.index: Primera lnea del condicional case, all es donde indicas que variable quieres verificar, o sea en que variable quieres que se verifiquen los valores. En este caso en una variable de clase llamada @command_window.index, lo que indica es la posicin dentro de la caja de comandos del Scene_Title. when 0: When significa en ingls Cuando, por lo tanto Cuando el valor de @command_window.index es 0, se ejecuten las siguientes instrucciones. command_new_game: Esta es la instruccin seguida del when 0, por lo tanto esta solo se ejecutar si y solo si @command_window.index vale 0, Si te preguntas que es esta lnea, pues es una llamada a otro mtodo dentro de la misma clase, pasar a explicarlo en las prximas lecciones. Como ves, las siguientes lineas son iguales a las explicadas, pero verificando diferentes valores para ejecutar diferentes instrucciones. Dejar claro que los when no terminan con ningn end, pero el cada case siempre debe terminar con uno.

Condicional unless
Vamos a explicar el ltimo condicional de sta leccin. El condicional unless es lo contrario al if, se ejecutarn las instrucciones si y solo si la expresin es falsa. Vamos a un ejemplo para explicarlo mejor:

@nombre = MakerJ unless @nombre == MakerJ print Si no eres MakerJ no me hables! end

@nombre = MakerJ: Asignamos a @nombre, la cadena de texto MakerJ. unless @nombre == MakerJ: La palabra unless significa A menos que, por lo tanto, traducido sera A menos que la variable @nombre sea igual a MakerJ no se ejecuten las instrucciones. Entonces, si el valor de la variable @nombre no es MakerJ, se ejecutar el bloque. Totalmente lo contrario al IF, si la expresin que le damos despus del unless es falsa, se ejecuta el bloque de instrucciones. print Si no eres MakerJ no me hables!: Por lo tanto, si @nombre es igual a MakerJ, es falso, se imprimir por pantalla Si no eres MakerJ no me hables!. Fcil, verdad?. end: Por supuesto, como todo condicional, lo terminamos con un end.

BUCLE FOR
Permite repetir una misma instruccin un nmero determinado de veces y desde un punto determinado hasta otro. Dichos puntos de comienzo y fin del bucle pueden ser nmeros o variables numricas.

for i in 0..10 print i end

for i in 0..10: El bucle debe comenzar por la palabra reservada for, seguida de la variable, la palabra reservada in, y el rango de contador. Hay una pequea diferencia entre 0..10 (dos puntos) y 0...10 (tres puntos), el primero toma un rango desde el primer nmero hasta el ltimo, o sea un rango total, del 0 al 10, y el segundo (tres puntos), toma un rango desde el primer numero hasta el penltimo, del 0 al 9. end: Como todo condicional y bucle, marca el final del mismo. sto imprimir por pantalla 10 veces la variable i, y como i es el contador, imprimir 1,2,3,4... hasta llegar al 10.

BUCLE WHILE
ste bucle sirve para repetir continuamente ciertas instrucciones, pero a diferencia de loop do, este termina cuando la expresin dada sea falsa. Vamos a un ejemplo:

Cdigo Ruby
@num = 10 while @num == 10 print @num sigue siendo igual a 10 end

Cdigo Ruby
Todo bucle while, comienza con la palabra reservada while, seguido de la expresin a verificar. En este caso verificamos si @num==10. While significa Mientras, por lo tanto mientras @num sea igual a 10, que las instrucciones se ejecuten. O sea, si @num vale 10 en todo el programa, ser un bucle infinito, ya que si no cambia de valor, seguir ejecutando sus instrucciones.

Operadores

lgicos

Los operadores lgicos indican el formato de validar cierta expresin en un condicional o bucle. Por ejemplo este que vimos anteriormente:

Cdigo Ruby
@num = 10 while @num == 10 print @num sigue siendo igual a 10 end

Cdigo Ruby
El operador lgico en este caso es ==, el signo de igual. Hay una importante diferencia entre = y ==, el primero es ASIGNAR, con l puedes asignarle un valor a una variable, constante, etc. El otro es IGUAL, para comparar valores en condicionales o bucles. Pasemos a la lista de los mismos: Igual: El smbolo de igual para la comparacin en condicionales y bucle es: == Sirve para verificar si un valor es igual a otro. Or: Significa en matemtica. O sea puedes comparar dos valores verificando si uno o el otro es verdadero. El smbolo es: || or Not: Significa No es cierto, negacin. Por lo tanto es para verificar que algo no es cierto, el smbolo es: != !(expresin) Mayor: El smbolo mayor, para verificar si un dato es mayor que otro, excluyndose. Se expresa con el smbolo: > Mayor o igual: Es lo mismo que mayor, pero incluyendo el valor dado. Smbolo: >= Menor: El smbolo menor para verificar si un dato es menor que otro, excluyndose. Se expresa con el smbolo: < Menor o igual: Es lo mismo que menor, pero incluyendo el valor dado. Se expresa de la siguiente manera: <=

Clases y mtodos
Son el cuerpo y alma del scripting. Las clases son objetos que llamaremos para hacer la magia. Dentro de dicha clase encontramos los mtodos. Los mtodos contienen las instrucciones que creamos y vamos a mandar al intrprete. Para que ste las ejecute. Una clase puede tener atributos, al igual que los mtodos. En principio, si existen atributos stos se deben rellenar con un valor al llamar scripts, de lo contrario, generara un error de excepcin al ejecutar. Bien antes de nada, nuestra clase (casi siempre) debe tener un mtodo por defecto llamado initialize. Ah es donde pondremos nuestros atributos de acceso a la clase, y tambin ejecutaremos cdigo una vez inicializado el script. class Clase_Marras #he notado que hay que poner en maysculas la primera letra de la clase para que no de problemas de sintaxis
attr_accessor :greeting attr_accessor :name #los atributos en cuestin def initialize(greeting, name) # el mtodo de inicializacin junto con sus atributos @greeting=greeting @name=name end def say print @greeting + " " + @name end end # mtodo que se puede llamar

Herencia de Clases:
Eres hijo nico, tu padre muere y heredas sus pertenencias. Es una forma simple de explicarlo. Para que una clase herede de otra, debemos poner esto: class Clase_Marras < Windows_Base Este ejemplo te permitira, por ejemplo usar el sistema de ventanas para mostrar textos, ventanas y ms cosas. Ideal para crear vuestro propio sistema de men personalizado. Pero todava no hemos terminado. Debemos inicializar la clase padre cuando la necesitemos. Ya que Windows_Base te permite crear ventanas y tiene ciertas propiedades obligatorias para su creacin (posicin x, posicin y, ancho, alto). En el mtodo de inicializar metemos:
super(0, 0, 200, 200)

Aqu es de cuando acabamos con la teora y pasamos a una parte ms prctica , que ya iba siendo hora.

GRFICOS Y IMGENES
Todo juego sea del tipo que sea debe tener grficos, un juego que no los tenga no puede llamarse juego propiamente dicho. En esta leccin aprenderemos a insertar grficos y como debemos utilizarlos:

@sprite = Sprite.new @sprite.bitmap = Cache.picture(nombre_del_archivo) @sprite = Sprite.new: Primero de todo, para crear un sprite, debes asignarlo a una variable, para posteriormente poder manipularlo. As que en este caso le asignamos un nuevo sprite/imagen a la variable @sprite, la variable puede llamarse como quiera, no tiene porque llamarse as. Despus, introducimos el signo de asignacin (=), y a continuacin el comando Sprite.new, esto si es obligatorio escribirlo tal cual est, crea un nuevo sprite/imagen. = Cache.picture(nombre_del_archivo): Ahora, para cargar en este sprite, la imagen, simplemente ponemos el nombre de la variable a la que le asignamos un sprite nuevo anteriormente, un punto, seguido de bitmap, el signo de asignacin (=), y a continuacin Cache.picture (para acceder a un directorio se escribe Cache + . + el directorio sin s, o sea que si es Pictures, va a ser Cache.picture, si hay algn directorio que termine sin s, djalo tal cual, como System, que queda exactamente igual, Cache.system). Despus de este comando, entre parntesis, va el nombre del archivo que utilizaremos en el script.
@sprite.bitmap

MANIPULAR GRFICOS

Como no siempre quedan las imgenes como queramos o donde queramos, tenemos a nuestra disposicin algunos cdigos para ayudar. Para utilizar estos mtodos hay que escribir el nombre de la variable a la que le asignamos un sprite nuevo o una ventana, ms un punto, ms el mtodo, todo seguido.

Aqu dejo algunos: x: Con este mtodo indicas la coordenada X para situar a tu gusto la imagen. .y: Indica la coordenada Y de la imagen. .z: Indica la coordenada Z de la imagen, la coordenada Z indica la posicin de capa, si por ejemplo, @sprite1.z = 1 y @sprite2.z = 2, y las dos se encuentran en la misma posicin, @sprite2 se va a ver y @sprite1 no, porque la prioridad de visin (z) de @sprite2 es mayor. .opacity: Cambia la opacidad del objeto. 0-255 .visible: Aqu debes indicar con un true o false, si es true el objeto se mostrar, si es false, no lo har. .update: Actualiza el objeto. .dispose: Borra el objeto.

REPRODUCIR AUDIO
Comp un juego sin audio queda sos, aqu os dejo el comando para reproducirlo: Audio.se_play("Audio/SE/nombre_del_archivo): Con este comando puedes reproducir un sonido SE. Si quieres reproducir un BGM o otro tipo de sonido, simplemente cambia Audio.bgm_play, o sea cambia donde dice el tipo de sonido, y pon el que necesites, y despus (Audio/TIPOSONIDO/nombre_del_archivo).

PULSAR UNA TECLA


Normalmente cualquier script necesita que oprimamos alguna tecla, para ello est este script: Input.trigger?(Input::LETRA): El Input.trigger? Sirve para asegurarse de una tecla presionada, se usa mucho en los men y ttulos. Reemplaza LETRA por la letra presionada, en mayscula (C,X,A, y ms) y no olvides situar los dos puntos (::) despus del Input y antes de la LETRA

VENTANAS
Este tipo de ventanas no tiene nada que ver con las de tu casa. Estas son bloques en los que se muestra lo que tu elijas desde el propio script.

Y COMO HAGO UNA?


Quieres crear una ventana? No hay problema, vamos a ello. Abre el RPG Maker VX, y entra al Editor de Scripts (F11). Crea una nueva pgina encima de Main (Insert), y llamala como quieras. El nombre de la pgina solo sirve para organizarte. Bueno, como sabrs, una ventana es una clase, comencemos a crearla: class Window_Sample < Window_Base end Primero de todo comenzamos creando una nueva clase, el nombre no tiene porque comenzar con Window_, pero es recomendable para que no te confundas. Le pondremos de nombre a la ventana, Window_Sample, y heredaremos los mtodos de Window_Base, mas tarde explicar porque de Window_Base. Posteriormente, vamos a crear un mtodo dentro de la clase. Ese mtodo se va a llamar initialize, debe ser obligatorio su nombre, as que por normas, le llamaremos al primer mtodo, initialize: class Window_Sample < Window_Base def initialize end end

A continuacin, dentro del mtodo initialize, vamos a indicar los parmetros de super. El comando super contiene cuatro parmetros, el primero es X, se debe indicar la coordenada X donde la ventana se situar, en el segundo la coordenada Y, el tercer parmetro es width, o sea la base, el largo de la ventana, y el ltimo y cuarto parmetro es height, que es la altura de la ventana. Con estos parmetros podemos jugar, manipulando las dimensiones y posicin de la ventana. Por lo tanto, el comando quedara: super(x,y,base,altura) class Window_Sample < Window_Base def initialize super(70,100,400,20) end end

Lo que hicimos fue agregar el comando super, con sus respectivos parmetros, lo situamos en las coordenadas (70,100), con una base de 400 y una altura de 20 pxeles. Ahora vamos a crear otro mtodo, donde dibujaremos un texto, le llamaremos refresh, no tiene porque llamarse a si, pero en la mayora de las ventanas se encuentra. As que, vamos a crearlo:

class Window_Sample < Window_Base def initialize super(70,100,400,20) end def refresh self.contents.clear end end

Bien, ya tenemos el nuevo mtodo creado, e introducimos una nueva linea: self.contents.clear Lo que hace esta linea lo podemos traducir perfectamente, ya hablamos antes de self, significaba YO, PROPIO, MIS, contents, significa contenidos, y clear, limpiar/borrar, entonces, mis.contenidos.limpiar, por lo tanto lo que hace es limpiar los contenidos de la ventana, te preguntars porque limpiamos los contenidos si ni siquiera los hemos puesto. El tema est en el update de la Escena que lo llama, imagina que tu ventana se llama desde Scene_Map, all habr un bucle (update) que actualizar los datos de tu ventana, por lo tanto, sino est el self.contents.clear, se escribiran arriba del anterior, y el juego puede desbordarse. Siempre en el mtodo donde vayamos a dibujar los datos, introducimos un self.contents.clear. Ahora pasemos al dato final, vamos a introducir un comando para insertar un texto dentro de la ventana: class Window_Sample < Window_Base def initialize super(70,100,400,20) end def refresh self.contents.clear self.contents.draw_text(120,0,100,100,"Aprende Ruby",1) end end

Bien, simplemente agregamos la siguiente lnea: self.contents.draw_text(120,0,100,100,"Aprende Ruby",1) El comando draw_text de self.contents lo que hace es imprimir un texto pero en forma de grfico, o sea no imprime un texto en una ventana default del sistema operativo como hace print, sino que lo hace en base a una fuente y lo introduce en los grficos de la escena. Los parmetros del draw_text son fciles: self.contents.draw_text(x,y,base,altura,texto,alineacin) Tan fcil como eso. Indicar la coordenada X, la coordenada Y, la base del texto, o sea, el largo de la regin del texto, el ancho de la regin, el texto entre comillas () y por ltimo la alineacin, si vale 0 es texto se sita a la izquierda, si vale 1 es centrado, y si vale 2 se sita a la derecha. Ahora lo que tenemos que hacer, es llamar al mtodo refresh, para que nos introduzca los textos y

nos limpie los contenidos, quedara as: class Window_Sample < Window_Base def initialize super(70,100,400,20) refresh end def refresh self.contents.clear self.contents.draw_text(120,0,100,100,"Aprende Ruby",1) end end

con esto acabas de crear tu propia ventana, cuando tengas mas conocimientos podrs poner todo lo que desees en ella.

LLAMAR TU NUEVA Y PRECIADA VENTANA


Existen dos diferentes lugares para llamar a una ventana, puede ser desde una Scene, o desde el mapa con Llamar Script, pero de las dos formas es igual. Para llamarla, debes asignarle a una variable, tu ventana. Por ejemplo: @ventana = Window_Sample.new Nunca olvides poner .new, ya que le estas indicando una nueva ventana, o sea una nueva Window_Sample, si no lo pones, te mandar error. Despus como vimos antes, desde esa variable @ventana, puedes dimensionarla, como por ejemplo cambiarle sus coordenadas: @ventana.x =200 @ventana.y = 200 Tienes que poner exactamente lo mismo en Llamar Script, si es que quieres llamar la ventana desde un evento.

Window_Base
Window_Base, es una clase como cualquier otra, pero tiene los mtodos base para toda ventana, por eso es que siempre heredan de ella, contiene el initialize con todos los parmetros default, contiene mtodos muy tiles como dibujar el nombre del hroe, la vida, o la clase:
text_color(n):

Con este mtodo puedes cambiar el color de un texto cualquiera. Indicando en n el nmero del color. draw_icon(icon_index, x, y): Este mtodo sirve para dibujar en la ventana un icono cualquiera, donde icon_index, indica el ID del icono, x e y, las coordenadas para situarlo. draw_face(face_name, face_index, x, y): Este mtodo sirve para dibujar la Cara (Face) de cualquier persona o hroe dentro de la ventana, donde face_name va el nombre del archivo de las faces (Actor1, People1, etc), donde face_index, ahi va el ID de la Face dentro de la imagen de Faces, y despus x e y como coordenadas para la ubicacin. draw_character(character_name, character_index, x, y): Dibuja el grfico de un character (personaje), donde character_name va el nombre del grfico donde esta el character que quieres poner, donde character_index es el ID del personaje dentro de la imagen, y posteriormente las coordenadas x e y. draw_actor_graphic(actor, x, y): Dibuja el grfico de uno de los personajes, donde actor debes indicar que actor es, pero no su ID, debes indicarlo de una forma de ms compleja. En actor debes poner: $game_actors[id], ahora si, donde id, va el ID, del personaje, puedes asignarlo a una variable para no tener que ponerlo cada vez que uses un comando que requiera el ID del actor. draw_actor_face(actor, x, y): Dibuja el grfico de la cara de cierto personaje, donde actor, va lo mismo que dijimos en el mtodo anterior: $game_actors[id], despus las coordenadas x e y para la posicin. draw_actor_name(actor, x, y): Dibuja el nombre de cierto hroe, donde actor va lo mismo que dijimos en el mtodo anterior, despus las coordenadas x e y. draw_actor_class(actor, x, y): Dibuja la clase de cierto personaje, donde actor va de que hroe quieres que se sepa la clase, y posteriormente las coordenadas. draw_actor_level(actor, x, y): Dibuja el nivel de cierto personaje dentro del grupo, donde actor va de que hroe quieres saber el nivel, y los siguientes las coordenadas. draw_actor_state(actor, x, y): Dibuja el estado de cierto hroe, donde actor va de que hroe quieres que se sepa el estado, y despus las coordenadas x e y. draw_actor_hp(actor, x, y): Dibuja el HP/VIDA, de cierto personaje, donde actor va de que hroe quieres que se sepa el HP/VIDA, y posteriormente las coordenadas para su posicin. draw_actor_hp_gauge(actor, x, y): Dibuja la barra de vida de cierto personaje, donde actor va de que hroe quieres que se sepa la vida, y despus las coordenadas x e y. draw_actor_mp(actor, x, y): Dibuja el MP/PODER MAGICO, de cierto personaje, donde actor va de que hroe quieres que se sepa el MP/PODER MAGICO, y posteriormente las coordenadas para su posicin. draw_actor_mp_gauge(actor, x, y): Dibuja la barra de poder de cierto personaje, donde actor va de que hroe quieres que se sepa el poder mgico, y despus las coordenadas x e y. draw_actor_parameter(actor, x, y, type): Dibuja cierto parametro indicado en type, donde actor va de que hroe quieres que se sepa el parmetro, x e y las coordenadas, y en type va un numero del 0 al 3, donde: 0 = ATK; 1 = DFS; 2 = SPI; 3 =AGI draw_item_name(item, x, y): Dibuja el nombre de cierto item, donde item, se indica el ID del

item, posteriormente las coordenadas x e y. Hay ciertos mtodos que necesitan un parmetro actor, alli debes indicar lo siguiente: $game_actors[id] Donde id, va el ID de la Base de Datos de la seccin Personajes, si es el principal, es 1. Todos esos mtodos pueden ser aplicados en cualquier ventana solo si la clase est heredada a Window_Base. Estos mtodos son bsicos y muy fciles de recordar.

ESCENAS
Las escenas lo son todo tanto en Rpg Maker XP como en VX. El ttulo es una escnea, el mapa tambin, tambin puede ser un objeto, pero solo puede haber una escena actual. Para llamar a una escena, hay que asignarle a la variable global $scene, la escena que queremos ejecutar. Por ejemplo: $scene = Scene_Title.new As se llama tambin desde un comando Llamar Script. Recuerda que la variable global a asignar la nueva escena, siempre debe ser la variable $scene. Vamos a crear una escena, que salga un cartel en la punta arriba-izquierda que tenga un acceso rpido para salir del juego. Vamos paso a paso a crearlo: class Scene_Sample < Scene_Base end Primero de todo creamos una clase, llmala como quieras, te recomiendo que el nombre comience con Scene_, para organizarte mejor. Heredamos los mtodos de Scene_Base. Y seguimos Empezaremos la scene con un mtodo llamado start: class Scene_Sample < Scene_Base def start op1 = Seguir op2 = Ir al ttulo op3 = Salir @mapa = Spriteset_Map.new @com = Window_Command.new(172,[op1,op2,op3]) end end

Bien, vamos a explicarlo paso a paso. op1 = Seguir: Aqu lo que hicimos fue asignarle una cadena de texto (String) a una variable de mtodo, ya que no la utilizaremos fuera de start. Estas variables locales/de mtodo las utilizaremos para crear la ventana de comandos. = Spriteset_Map.new: Aqu lo que hacemos es llamar a un objeto, que es la funcin del Scene, juntar sub-objetos. En este caso le asignamos a una variable de clase, ya que la necesitaremos en los dems mtodos para actualizarla (update), la clase Spriteset_Map, que es el mapa en general, poniendo esta lnea en cualquier script, muestra el mapa de fondo, si no hubiramos puesto esta linea, se vera un fondo negro con las opciones, y no las opciones con el mapa actual de fondo, puedes probar borrar esta linea cuando terminemos esta leccin para ver el efecto.
@mapa @com

= Window_Command.new(172,[op1,op2,op3]): Aqu llamamos a otra clase ms, que es Window_Command, esta clase crea una ventana segn sus parmetros y le agrega un cursor para poder seleccionar opciones. Necesita parmetros, el primero es el largo de la ventana de comandos, en este caso le puse 172, me pareca justo. El segundo parmetro, debes indicar las opciones dentro de corchetes [], y separados por coma. Bien, hasta aqu tenemos algo importante, pero todava falta, sigamos: class Scene_Sample < Scene_Base def start op1 = Seguir op2 = Ir al ttulo op3 = Salir @mapa = Spriteset_Map.new @com = Window_Command.new(172,[op1,op2,op3]) end def update @mapa.update @com.update end end Seguir explicndote paso a paso: def update: Creamos otro mtodo, esta vez se llama update, el mtodo update es muy especial e importante, ya que est en constante repeticin, por lo que su nombre dice, es sumamente til para actualizar objetos.
@mapa.update:

Actualizamos @mapa, o sea Spriteset_Map, que es lo que le asignamos. Para actualizar cualquier objeto, se debe poner la variable en la cual se asigno, seguida de un punto y update.
@com.update:

Actualizamos @com, o sea la caja de comandos (opciones). end: Obviamente, como todo mtodo, termina en end. Tenemos la caja con las opciones, y el mapa de fondo, lo nico que nos queda es programar las instrucciones segn la opcin elegida, veamos lo que sigue:

class Scene_Sample < Scene_Base def start op1 = Seguir op2 = Ir al ttulo op3 = Salir @mapa = Spriteset_Map.new @com = Window_Command.new(172,[op1,op2,op3]) end def update @mapa.update @com.update if Input.trigger?(Input::C) case @com.index when 0 @com.dispose $scene = Scene_Map.new when 1 @com.dispose $scene = Scene_Title.new when 2 exit end end end end if Input.trigger?(Input::C): Recuerdas esta lnea? Por si no, lo que hace es asegurar una tecla presionada, y est en un condicional if, por lo tanto, significa si la tecla C, a sido pulsada, que se ejecute las siguientes lineas. case @com.index: La siguiente lnea al if anterior es un case, toma para verificar la variable @com.index, index significa punto de posicin, o sea, en que opcin se encuentra el cursor. @com.dispose: Est linea lo que hace es borrar el objeto asignado a la variable @com, o sea borra la caja de opciones. $scene = Scene_Map.new: Recordemos que $scene significaba la escena actual en que se est, por lo tanto se reemplaza la escena por el Mapa y se vuelve al juego sin problemas. exit: Este comando sirve para cerrar el programa terminando todos los procesos. Como ven, me salt algunas lineas, porque ya me imagino que sabrn, hemos hecho ejemplos de los mismos anteriormente. Pues bien, he terminado de explicar lo que es un Scene y un ejemplo completo. Muy bien! Has creado tu propia ventana y tu propia scene.

RESUMIENDO

Primero de todo creamos la escena escribiendo la palabra reservada class y su nombre, posteriormente la heredamos a Window_Base para poder usar sus mtodos. Creamos un mtodo llamado start para crear las opciones del men y llamar a los dems objetos. Creamos otro mtodo llamado update, este mtodo es especial porque est situado en una repeticin constante, por lo que es sumamente til para actualizar objetos. En ella, introducimos los mtodos para actualizar el mapa y la caja de opciones. Despus creamos un condicinal if para verificar si la tecla C se ah presionado. Dentro de ese condicional, anidamos un condicional case, para verificar donde estaba el cursor cuando se presion la tecla C y ejecutar diferentes instrucciones segn su posicin.

CREANDO NUESTRO HOLA CEDDEXIA!

Como en cualquier mtodo de programacin lo primero que se hace es crear un hola mundo nosotros no vamos a ser menos ^^ Un hola mundo es una ventana que nos muestra un texto con la frase Hola Mundo, pero como eso ya est muy visto nosotros crearemos nuestro propio Hola Cedexia Pues vamos a ello, vamos al editor de scripts y creamos un script encima de main donde ponemos lo siguiente:

class Hola_Cedexia < Window_Base def initialize super(0, 0, 200, 200) self.contents = Bitmap.new(width-32, height-32) #creamos un nuevo mapa de bits donde dibujar nuestro texto self.contents.font.name = "Comic Sans MS" self.contents.font.size = 24 self.contents.draw_text(0, 0, 200, 32, "HOLA CEDEXIA!") end end

Creamos otro script y lo llamamos Mostrar_cedexia

class Mostrar_Cedexia def main a

@window_1=Hola_Cedexia.new Graphics.transition loop do Graphics.update Input.update @window_1.update if Input.trigger?(Input::A) #si pulsamos el Z en nuestro teclado, la ventana desaparecer y volveremos a controlar al personaje $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new break end end Graphics.freeze @window_1.dispose end end

Echo todo esto solamente tendremos que crear un evento en el juego donde llamemos este script: mostrar=Mostrar_Cedexia.new mostrar.main Y asegurarnos de que lo activamos en el juego. Con esto ya habramos creado nuestro propio Hola Cedexia

YA EST?
Si, con todo lo que te he ensaado en esta gua puedes hacer prcticamente lo que quieras siempre que utilices bien los cdigos y lo hagas con cabeza.

Ahora mismo eres un erudito del RGSS (si lo has entendido todo) por eso espero que sepas utilizar esos conocimientos para hacer algn buen proyecto.

YA TENGO MI SUPERPROYECTO LLENO DE SCRIPTS PROPIOS! AHORA QUE?


Pues ahora que ya has conseguido crear tu juego, te recomiendo que vayas por algunos foros y lo ensees a los dems usuarios para que te comentes sugerencias y fallos que pueda tener, recuerda que el script perfecto no existe, siempre puede haber algn fallo. Puedes postearlo en un foro especializado en creacin de videojuegos como por ejemplo Cedexia: http://cedexia.saapy.com o http://cedexia.saapy.com/foro

FINAL DE LA GUA
Aqu es donde acaba mi gua para aprender RGSS orientado a Rpg Maker XP. Despus de estar unas cuantas horas pegado a la pantalla escribiendo lo que acabas de leer quiero dar por finalizado mi trabajo. Esta gua a sido creada por mi para el foro de Cedexia. Finalemente me gustara dar las gracias a todos los usuarios de Cedexia por hacer posible este proyecto. Si quereis ver mas manuales como este, preguntar dudas, hacer sugerencias, postear vuestros juegos o lo que sea os recomiendo registraros en : http://cedexia.saapy.com Podeis contactarme en el foro de cedexia o mediante el siguiente mail: makerjworld@hotmail.com HASTA LA PROXIMA!

Obra bajo licencia Creative Commons 3.0, totalmente prohibida su distribucin sin reconocer al autor del mismo (MakerJ).Queda totalmente prohibida su edicin sin permiso expreso del autor. Prohibido su uso con fines comerciales.

Vous aimerez peut-être aussi