Primero les pondre un solo video que esta en Ingles, no se preocupen los que no saben porque hablaremos ahora de lo que dice el video.
------------------------------------ HERENCIA ----------------------------------------------------------
Herencia: Son todos los datos que recibe nuestra función a partir de otra función, se asignan a la funcion que usamos con el simbolo " < " despues del nombre (ejemplo: Nueva_Informacion < Scene_Base )
-----------------------------------------------------------------------------------------------
Hoy haremos nuestra primera ventana wuuuuuujuuuuu!!! es para esto que haremos un nuevo script, el anterior si quieren lo guardan (no impide el funcionamiento del que haremos), ahora como siempre definiremos nuestra clase como class seguido de un nombre cualquiera, en mi caso yo le pondré Window_Nuevo.
A esta nueva clase, le heredaremos los datos de otra funcion que es la más conocida por algunos que intentaron hacer un script, la famosa Window_Base , nos quedaría
class Window_Nuevo < Window_Base
Que significa esto, que nuestra funcion obtendra todos los datos de la Window_Base, asi como faces, portraits, colores, etc. todos los datos que encontraremos en el script llamado Window_Base.
Lo que sigue es generar la ventana, para esto como siempre despues de una clase, generaremos el método initialize
class Window_Nuevo < Window_Base
def initialize
Y generaremos la ventana, colocando super(x,y,width,height) , donde
x : posicion en el eje X
y: posicion en el eje Y
width: ancho de la ventana
height: alto de ventana
Uno le ponde el tamño de la ventana que quiere en esos datos, luego de esto cerraremos el método y la clase, Nos estaría quedando así
class Window_Nuevo < Window_Base
def initialize
super(0,0,320,240)
end
end
Luego de esto llamaremos a otra famosa funcion, por lo que generaremos otra clase pero esta vez le pondremos Scene o escena, yo le pondre Scene_Nuevo y la heredaremos de la famosa Scene_Base
por lo tanto nos queda Scene_Nuevo < Scene_Base.
Crearemos 3 metodos dentro de este, el primero es el que arrancara nuestra pantalla, el segundo hara que se renueve en cada movimiento y el tercero es el que la cerrara
la primera la definiremos como def start, dentro de ella pondremos una variable de clase que hara que obtenga los valores nuestra ventana @ventana = Window_Nuevo.new , cerraremos este metodo.
la segunda la definiremos como def update, dentro de ella haremos que devuelva al mapa donde estabamos antes de abrir nuestra ventana, para ello hay que hacer una aclaracion... son distintos metodos para el rmvx y para el rmvx ace, por tanto pondré las dos formas y de ahi veremos que nos va mejor.
- RMVX: Para esta colocaremos nuestra variable de clase seguida de " .update ", quedaria @ventana.update , si queremos que con apretar el boton Z se salga de la ventana podremos if Input.trigger?(Input::C) y debajo de este pondremos que la escena cambia a la escena del mapa, de esta manera $scene=Scene_Map.new
class Window_Nuevo < Window_Base
def initialize
super(0,0,320,240)
end
end
class Scene_Nuevo < Scene_Base
def start
@ventana=Window_Nuevo.new
end
def update
@ventana.update
if Input.trigger?(Input::C)
$scene=Scene_Map.new
end
end
- RMVX Ace: ¿Porque son distintos? la verdad no sabría explicar el porque, pero debe tener relacion a que Scene_Base en la parte que dice update, especifica que antes de todo va super(), esta es la forma que tambien tiene cada cosa para poder anotarla en cada script, para que cada una funcione, lo mas probable es que sea asi.... seguimos, para esta colocaremos super() seguido de la variable que pusimos antes con " .update " quedaria asi @ventana.update , si queremos que con apretar el boton Z se salga de la ventana podremos if Input.trigger?(Input::C) y debajo de este pondremos que la escena cambia a la escena del mapa, de esta manera SceneManager.call(Scene_map) de esta manera llamaremos al mapa en el que estabamos, luego cerramos
class Window_Nuevo < Window_Base
def initialize
super(0,0,320,240)
end
end
class Scene_Nuevo < Scene_Base
def start
@ventana=Window_Nuevo.new
end
def update
super()
@ventana.update
if Input.trigger?(Input::C)
SceneManager.call(Scene_map)
end
end
Finalmente terminaremos con el ultimo metodo que sera def terminate , abajo de el pondremos nuestra variable @ventana con " .dispose " por lo tanto quedaria @ventana.dispose, de esta manera terminamos cerrando la clase Scene_Nuevo
Para llamar a la ventana desde el juego, crearemos un evento que tendra llamar script, para el RMVX pondremos $scene=Scene_Nuevo.new y para el RMVX Ace pondremos SceneManager.call(Scene_Nuevo), finalmente podremos ver la ventana en el juego y asi tendremos nuestra primera ventana ya hecha ^^
Una acotacion... dentro de def initialize podremos colocar las cosas que mostraremos dentro de la ventana, de esta manera podremos por ejemplo colocar la cara del primer personaje del juego, para poder ver como colocarlo, simplemente nos vamos en los scripts, en el que dice Window_Base y buscamos dentro de el draw_face (o mas facil lo buscamos con el buscador de script) vemos la primera linea para ver como se ponde y lo colocamos en el script nuevo que hacemos. De esta manera les dejare la tarea.
--------------------------------------- Tarea ------------------------------------------
Viendo el video en ingles (que no sera dificil de encontrar tampoco) deberan hacer aparecer la cara del 3 personaje del maker y al lado de este la barra de vida
Cualquier consulta de esto, me preguntan, de todas manera pondre la solucion en la siguiente leccion
------------------------------------------------------------------------------------------
ES TODO POR AHORA!! ahora a investigar por ahi, pueden leer el tecto guia de Necrozard que les entregue para ver como colocar mas cosas, asi se les facilitará la vida, por mientras...
SOLUCIÓN TAREA: Agregue una cosa extra que es la barra de mp del personaje 3 y agrande la ventana
class Window_Nuevo < Window_Base
def initialize
super(0,0,545,415)
actor = $game_actors[3]
draw_actor_face(actor, 5, 0)
draw_actor_hp(actor, 160, 0)
draw_actor_mp(actor, 160, 50)
end
end
class Scene_Nuevo < Scene_Base
def start
@ventana = Window_Nuevo.new
end
def update
super()
@ventana.update
if Input.trigger?(Input::C)
SceneManager.call(Scene_Map)
end
end
def terminate
@ventana.dispose
end
end
Vale ya te he mandado por privado el script.
ResponderEliminarEsta pagina es muy buena para aprender Rurby, la recomiendo :)
eeeellla la del blog de la feña
ResponderEliminarella la bloggera
ella la hola soy germana