¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

Kanonelsebas

avatar
Tutorial para Principiantes:
Victor´s Animated Battle Script.

Hola a Todos!
Soy Kanonelsebas, quizás me recuerden por temas como…. Ok, este es mi primer tema xD

Lo que voy a postear ahora no lo escribí yo, es un post hecho oginalmente por  el Usuario “Lyson” del Foro rpgmakervxace.net que, al tiempo que escribo esto, no se encuentra online.

Y luego de desesperar y desesperar por largo tiempo, recordé que existe el cache de Google!
(bendito sea!)

Y es que yo no hace más de dos semanas que empecé a planear esto de hacer juegos con el rpg maker, y la verdad que soy demasiado ansioso como para empezar por lo básico xD

Asi que noob y todo, me adentre en tratar de entender cómo funciona el script de Victor “Animated Battles”.

Y este es uno de los mejores tutoriales que leí, lejos el más explicativo y simple, que encontré hasta ahora.

Por eso me tomo la molestia de traducirlo y postearlo, para que todos aquellos que quieran aprender y estén un poco verdes (como yo xD) puedan aprender algo más acerca de este maravilloso Script.
Entonces, todos los créditos a Lyson, que se tomó el trabajo de hacerlo!

En combinación, les dejo 3 videos de Passive Lion, que son el complemento perfecto para este tutorial. Están en Ingles, y ya el video no lo puedo traducir xD! Pero es bastante simple y visualmente explicativo, así que calculo que con estas dos herramientas, pueden entender las bases del Script de Victor, como para comenzar a programar sus batallas animadas O:

Ademas, les dejo la Version en PDF por si necesitan revisarlo un dia que no tengan conexion xD





Bueno, vamos al tutorial! =D



Tutoriales de Passive Lion (Youtube)

Es una serie de 3 videos, donde nos muestra en un forma sencilla como instalar tanto el script de batallas animadas, como también los battlers y algunas Skills.

En este video, Passive Lion enseña como instalar los Scripts Necesarios para que todo marche bien.


Primera Parte:

Aquí nos enseña como Instalar los Sprites de Holder´s Animated Battlers.

Segunda Parte:

Y aquí nos habla de las Skills :

Tercera Parte:

Es super importante que tengas instalados 3 scripts para que todo funcione!


  • Basic Module
  • Animatted Battles
  • Actors Battlers


En ese orden. En el Video, Passive Lion explica como.




Tutorial de Lyson: Victor Animated Battle Script.



Hola a todos, mis compañeros fanaticos del RPG Maker!

Hace bastante desde que hice un tutorial del RPG Maker, y es tiempo de que me siente y escriba uno nuevo. Con toda la charla acerca  de que “las batallas laterales esto, las batallas laterales aquello”, y considerando lo popular que es el Script de Victor “Animated Battles”, decidi armar un pequeño tutorial para darles una guía paso a paso para crear sus propias acciones para sus personajes en su proyecto de RPG Maker VX Ace


Pero Primero lo Primero:

Pregunta 1: “Qué es una Accion?”

Para todo aquel que decida probar el Script Animated Battle de Victor, esta es una muy buena pregunta. Y la respuesta es relativamente simple. Una Accion (o Action a partir de ahora) es el resultado de un segmento de código que armas en orden de hacer que tus Actores o Enemigos se muevan y ataquen a través del campo de batalla. Sando varias funciones pre-establecidas que Victor provee, puedes usar las Actions para hacer que tu personaje o enemigo haga… prácticamente todo lo que se te ocurra decirles que hagan.

Pregunta 2: “Increíble! Decíme como hago éso!”

Wowowow! Calmate un poco, atolondrado! (xD!) No podes ir directamente a empezar a hacer Actions. Para principiantes, ni siquiera sabes como hacerlas todavia! Si realmente queres aprender como usar el Script de Victor, primer hay que empezar desde el principio. Y por el principio, me refiero al principio del Script. Démosle un vistazo a las partes del Script ANTES de llegar a la parte de empezar a crear Actions.

Victor's Animated Battles – El Comienzo.

Código:
#--------------------------------------------------------------------------
  # * Initialize Variables
  #--------------------------------------------------------------------------
  VE_ACTION_SETTINGS = {} # Don't remove or change
  #--------------------------------------------------------------------------
  # * Animated battler sufix
  #   When using sprites, add this to the animated sprite sheet of the battler,
  #   that way you can keep the original battler a single sprite and make
  #   easier to setup their position on the troop
  #--------------------------------------------------------------------------
  VE_SPRITE_SUFIX = "[anim]"
  #--------------------------------------------------------------------------
  # * Intro fade
  #   When true, there will be a small fade effect on the battlers during
  #   the battle start (like RMXP default battle)
  #--------------------------------------------------------------------------
  VE_BATTLE_INTRO_FADE = true
  #--------------------------------------------------------------------------
  # * Default sprite settings
  #   This is the settings for all battler graphics that doesn't have
  #   their own custom setting
  #--------------------------------------------------------------------------
  VE_DEFAULT_SPRITE = {
  # Basic Settings
  # name:   value,
   frames: 3,      # Number of frames
   rows:   4,      # Number of rows
   mirror: false,   # Mirror battler when facing right
   invert: false,   # Invert the battler graphic
   mode:   :charset,  # Graphic style (:sprite or :chasert)
   action: nil,     # Action settings
  # Main Poses
  # name:      row,
   idle:     1,   # Idle pose
   guard:    2,   # Guard pose
   evade:    2,   # Evade pose
   danger:   3,   # Low HP pose
   hurt:     4,   # Damage pose
   attack:   5,   # Physical attack pose
   use:      6,   # No type use pose
   item:     6,   # Item use pose
   skill:    7,   # Skill use pose
   magic:    8,   # Magic use pose
   advance:   nil,   # Advance pose
   retreat:   10,  # Retreat pose
   escape:   10,  # Escape pose
   victory:   11,  # Victory pose
   intro:    12,  # Battle start pose
   dead:     13,  # Incapacited pose
   ready:    nil, # Ready pose
   itemcast:  nil, # Item cast pose
   skillcast: nil, # Skill cast pose
   magiccast: nil, # Magic cast pose
   command:   nil, # Command pose
   input:    nil, # Input pose
   cancel:   nil, # Cancel pose
   # You can add other pose names and call them within the action settings
   # use only lowcase letters
  } # Don't remove
  #--------------------------------------------------------------------------
  # * Custom sprite settings
  #   Theses settings are set individually based on the battler graphic
  #   filename (even if using the charset mode, the setting will be based
  #   on the battler name, so it's suggested to use the same name for
  #   the battler and charset graphic when using charset mode)
  #   Any value from the default setting can be used, if a value is not set
  #   it's automatically uses the value from basic setting
  #--------------------------------------------------------------------------
  VE_SPRITE_SETTINGS = {
  # 'Filename' => {settings},
  #
  # 'Sample 1' => {frames: 4, rows: 14, mirror: true, mode: :sprite,
  #            action: nil},
  # 'Sample 2' => {frames: 3, rows: 4, mirror: true, invert: false,
  #            mode: :charset, action: :charset},
  # 'Sample 3' => {frames: 3, rows: 4, mirror: false, invert: false,
  #            mode: :charset, action: :kaduki},


Wow, mira todo ese codigo. Es mucho para enterderlo de entrada, lo sé. Que demonios significa todo eso?! Bueno, no se preocupen, su amigo Lyson esta aquí para ayudar! Para cuando terminemos con esto, estarás hacienda tus propias Actions en un pestañeo! Pero por ahora, hechemos un vistazo a las partes importantes del código que postee arriba.

Código:
  VE_ACTION_SETTINGS = {} # Don't remove or change

Esta se explica por si misma. No lo toques… nunca. ¿OK? Recuerdas cuando estabas en tercer grado, y tu maestra te descubría jugando con tu... “cosa”(1), y te dijo “Hey, No toques eso!!”. Si, es exactamente lo mismo. No lo toques.

Código:
VE_SPRITE_SUFIX = "[anim]"

Ok, esta es una parte muy importante del codigo. Básicamente, si decides que quieres usar sprites para tu battlers (Busca los Battlers Animados de Holder si no sabes a que me refiero), esta line de código le dice al Script cual imagen es la estática y cual es la animada.

@Kanonelsebas escribió:NT: Se refiere que imagen, sprite, charset, plantilla (o como quieras llamarlo) usara el programa para hacer las animaciones. Se explica mejor más adelante.

Eres libre de cambiar lo que esta dentro de los corchetes y escribir lo que quieras, pero es mas fácil dejarlo como está.

Ejemplo: Digamos que estoy usando el Battler “Escorpion” de Holder.  Entonces tendría dos archivos: $scorpion.png, y $scorpion[anim].png
Ese [anim] le dice al Script que use $scorpion[anim].png cuando se trata de realizar las Actions.


Código:
VE_BATTLE_INTRO_FADE = true

Éste es quizás, la linea de código menos importante de todo el Script. Basicamente te permite elegir si queres o no un pequeño efecto de transición (fade in) al comenzar la batalla. Es un adorno que puedes elegir. True la activa, False la apaga. Sigamos.


Código:
  VE_DEFAULT_SPRITE = {
  # Basic Settings
  # name:   value,
   frames: 4,      # Number of frames
   rows:   14,      # Number of rows
   mirror: false,   # Mirror battler when facing right
   invert: false,   # Invert the battler graphic
   mode:   :sprite,  # Graphic style (:sprite or :chasert)
   action: nil,     # Action settings


Muy bien, ahora llegamos a una de las partes difíciles. Esta sección del código establece los valores para los battlers por default, o sea esos que no tienen gráficos especiales.
El hecho de que estés usando este script es un indicativo de que vas a usar graficos de Battlers personalizados, pero para el bien de lo que viene, vamos a revisar que significan algunos de estos códigos.

Código:
   frames: 4,      # Number of frames
   rows:   14,      # Number of rows

Ok, mira esta imagen:



Ahora, garantizado, esta es una sprite Kaduki (ya lo explicaremos mas adelante), pero pro ahra, sirve para explicar frames y rows. Puedes decirme cuantas frames y row hay en esa imagen?

Si respondiste 3 frames y 4 rows, Felicidades! Sabes como funcionan los frames y los rows! Si respondiste otra cosa, o ni siquiera respondiste nada, permitime que te explique mejor.

Cada gráfico individual en esa imagen se considera una Frame. Cada fila de imágenes  se considera una row. Estos dos términos son vitales para crear tus propias Actions, así que si no las entendes del todo, empeza a estudiarlas!


Código:
mirror: false,   # Mirror battler when facing right
   invert: false,   # Invert the battler graphic

Estas  dos las explico juntas porque cumplen prácticamente los mismos propósitos. Y son bastantes explicitas. No puedo decir mas de lo que Victor ya dijo en sus comentarios (en el Script, arriba de esas líneas) mas que los activas con True, y que mirror e invert son buenos para usar cuando estas creando sprites de enemigos.

@Kanonelsebas escribió:NT: Probando por mi cuenta, tengo una sprite sheet cuyo personaje esta mirando a la derecha. Para que en la batalla apareciera mirando a la izquierda, me sirvió activar el “invert”. Prueben con cada uno para estar seguros cual es el que les funciona a uds.

Código:
  # Main Poses
  # name:      row,
   idle:     1,   # Idle pose
   guard:    2,   # Guard pose
   evade:    2,   # Evade pose
   danger:   3,   # Low HP pose
   hurt:     4,   # Damage pose
   attack:   5,   # Physical attack pose
   use:      6,   # No type use pose
   item:     6,   # Item use pose
   skill:    7,   # Skill use pose
   magic:    8,   # Magic use pose
   advance:   9,   # Advance pose
   retreat:   10,  # Retreat pose
   escape:   10,  # Escape pose
   victory:   11,  # Victory pose
   intro:    12,  # Battle start pose
   dead:     13,  # Incapacited pose
   ready:    nil, # Ready pose
   itemcast:  nil, # Item cast pose
   skillcast: nil, # Skill cast pose
   magiccast: nil, # Magic cast pose
   command:   nil, # Command pose
   input:    nil, # Input pose
   cancel:   nil, # Cancel pose


Dale un vistazo a ese código. Recuérdalo, volveremos a él en un instante.


Código:
  VE_SPRITE_SETTINGS = {
  # 'Filename' => {settings},
  #
  # 'Sample 1' => {frames: 4, rows: 14, mirror: true, mode: :sprite,
  #            action: nil},
  # 'Sample 2' => {frames: 3, rows: 4, mirror: true, invert: false,
  #            mode: :charset, action: :charset},
  # 'Sample 3' => {frames: 3, rows: 4, mirror: false, invert: false,
  #            mode: :charset, action: :kaduki},
   'Scorpion'  => {frames: 4, rows: 14, mirror: true, mode: :sprite,
               action: nil},
   'Warrior_m' => {frames: 4, rows: 14, mirror: false, mode: :sprite,
               action: :default},
   'Actor1'   => {frames: 3, rows: 4, mirror: false, invert: false,
               mode: :charset, action: :charset},
   '$Actor4'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
  } # Don't remove

Bueno, esta es una sección muy importante del script. Aquí es donde le decimos al script el nombre del battler que quieres usar, cuantas frames tiene, cuantas rows tiene, si queres que use las opciones de “invert” o “mirror”, el tipo de modo que vas a usar, y el tipo de Actions que queres usar.
Si venís entendiendo el tutorial, ya estas familiarizado con las frames, rows, mirror e invert. Los otros dos términos son nuevos, y los explicaremos ahora.

Mode es, básicamente, donde le decís al script como queres que trate la imagen que programaste ahí. Por ejemplo, usando el código posteado recién, el Script sabe que debe tratar al Scorpion como una Sprite, Actor 1 como un CharacterSet (charset) y $Actor 4 como un Character Set.

Action trabaja de la misma manera. Le dice al Script que porcion de los comandos Actions quieres asociar con la imagen. Para el Warrior_m, el Script asignara la parte de “default Action”, para el Actor1, la parte de “Charset Action”, y para el $Actor 4, la porción de “kaduki Action”.

Aca es donde tambien le decis al codigo cuantas rows y frames tiene tu imagen.

Ahora que sabes que hacen los Frames, Rows, Mode, y Action, podes empezar a programar en el nombre de la imagende tu battlers. Ac ate maestro el codigo que uso para la imagen que postee antes:


Código:
'$Lyson_1'   => {frames: 3, rows: 4, mirror: false, invert: false,
               mode: :charset, action: :kaduki},

Ya aclaramos antes que la imagen tiene 3 frames por fila (row) y 4 rows en total. No quiero que use (mirror) o (inverse). Es definitivamente un Character Set, y como es un personaje del estilo kadui, quiero que use la porción de Actions de Kaduki.

Es importante aclarar que si anotas un número incorrecto de frames (digamos que en lugar de 3, pusiera 4), una vez que entres a una batalla, el personaje hará una especie de pestañeo. No queremos eso. Así que asegúrate que pusiste las frames correctas!
Ahora, necesitas hacer esto mismo para cada personaje y cada enemigo que planes que tenga su animación.
Aquí hay una pequeña sección de lo que puse en el proyecto de mi Juego:


Código:
   '$Hornet_1'  => {frames: 4, rows: 4, mirror: true, invert: true, mode: :charset,
               action: :charset},
   '$Wolfie'  => {frames: 4, rows: 4, mirror: true, invert: true, mode: :charset,
               action: :charset},
   '$Lyson'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Lyson_1'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Lyson_2'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Lyson_3'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Lyson_5'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Elania'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Elania_1'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Elania_2'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Elania_3'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Elania_5'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Raelan'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Raelan_1'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Raelan_2'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},
   '$Raelan_3'   => {frames: 3, rows: 4, mirror: true, invert: false,
               mode: :charset, action: :kaduki},

Y eso es solo una parte, sirve para dos enemigos y 3 miembros del grupo jugables. Pero ahora que vimos los significados para decirlo al script como queremos que use las imagines, finalmente podemos meternos de lleno en el “grato” trabajo de crear Actions. Pensaste que todo lo que vimos era complicado y tomaba mucho tiempo? No viste nada todavía!!!

I Like to Move It, Move It

Ok, bueno, hay dos cosas que necesitas saber acerca de la siguiente parte del Script.

             (1) Es realmente larga, y ni en pedo lo posteo todo aca. Simplemente, es demasiado.

y mas importante,

             (2) esta dividido en 3 secciones diferentes e importantes.

Te acordas como mencionamos antes que podias seleccionar que porción de Actions le asignaba el script a cada imagen? Acá es donde encontras las porciones. Están listadas en este orden:

Default, Charset, Kaduki.

Default empieza en esta linea de codigo:

Código:
VE_DEFAULT_ACTION = "

Charset empieza en esta linea de codigo:

Código:
VE_ACTION_SETTINGS[:charset] = "

Y kaduki empieza en esta linea de codigo:

Código:
  VE_ACTION_SETTINGS[:kaduki] = "

Y en el medio de esas tres Importantisimas lineas, veras un montón de lineas purpuras y numeros, quedaras con cara de WTF, y rápidamente cerraras todo y nunca más volverás a tocar el malvado Script de Victor, nunca nunca mas.
Y yo estoy aca para decirte, es mas facil de lo que parece1 Y finalmente llegamos a la pregunta que hiciste al principio, “Como uso lo que aprendi hasta ahora para crear movimientos asombrosos, geniales, realmente espectaculares para que usen mis personajes en batalla??" Bueno, aca es donde aprenderemos como hacerlo. Pero primero, tenemos revisar lo que hay entre esas tres lineas de código que mencione hace un ratito..

Ok, bueno, déjame decirte como me preparo mentalmente cuando empiezo a crear Action Poses.
Trato esta sección del Script como si se tratara de crear un evento en el editor del mapa.  Literalmente trabaja del mismo modo. Vamos a hechar un vistazo a la primera Action definida en la porción de Default Action:

Código:
   # Pose displayed when idle
   <action: idle, loop>
   pose: self, row idle, all frames, wait 8;
   wait: 32;
   </action>

La linea de comentario practicamente te dice que estas mirando. Pero lo detallare un poco mas. Esta linea es la Action que define como el Script muestra la pose de descanso por defecto.

@Kanonelsebas escribió:(NT: Idle es la pose que usa el personaje en las batallas cuando no esta haciendo nada. O sea, cuando esta parado mientras elegís que comando debe ejecutar)

Código:
   <action: idle, loop>

Esta línea hace dos cosas. La primera parte después de action le da nombre la acción. Esta Action se llama Idle. La segunda palabra, loop, hace exactamente lo que crees que hace. Le dice al Script que repita y repita esta acción.

Ahora, esta es la parte donde necesitas empezar a pensar como un programador de eventos. Hablando de eso, recordémonos como, dale?



Si estas de alguna manera familiarizado en como trabajan los eventos, entonces prácticamente podes imaginarte como lo anterior aparece cuando jugas el juego. Y es un proceso muy simple. El juego sigue el evento paso por paso. 1 linea por vez, hasta que llega al final. Las Actions creadas trabajan de la misma manera, solo que estas usando código en lugar de opciones de evento preprogramadas. Así que volvamos y veamos nuevamente esa linea de codigo para la Action llamada Idle.

Código:
   # Pose displayed when idle
   <action: idle, loop>
   pose: self, row idle, all frames, wait 8;
   wait: 32;
   </action>

Después de definer la action, y decirle que haga loop, ya sabemos como manejar la Action como un evento. Mira la 3era línea, bueno, técnicamente la segunda línea del Código.

Código:
   pose: self, row idle, all frames, wait 8;

Si estas pensando como un programador de eventos, esta es la primera linea del evento. Esta es la primera cosa que esta Action hace cuando la ejecutas. Ahora vamos a ver particularmente que dice esta linea de codigo.

Pose es como defines que frames queres que esa Action muestre en pantalla cuando la activas. Ok, te acordas de esa pequeña porcion de código que postee por alla arriba y te dije que tuvieras en mente? Bueno, aca es donde se pone en juego. La pondré de nuevo como un recordatorio:


Código:
  # Main Poses
  # name:      row,
   idle:     1,   # Idle pose
   guard:    2,   # Guard pose
   evade:    2,   # Evade pose
   danger:   3,   # Low HP pose
   hurt:     4,   # Damage pose
   attack:   5,   # Physical attack pose
   use:      6,   # No type use pose
   item:     6,   # Item use pose
   skill:    7,   # Skill use pose
   magic:    8,   # Magic use pose
   advance:   9,   # Advance pose
   retreat:   10,  # Retreat pose
   escape:   10,  # Escape pose
   victory:   11,  # Victory pose
   intro:    12,  # Battle start pose
   dead:     13,  # Incapacited pose
   ready:    nil, # Ready pose
   itemcast:  nil, # Item cast pose
   skillcast: nil, # Skill cast pose
   magiccast: nil, # Magic cast pose
   command:   nil, # Command pose
   input:    nil, # Input pose
   cancel:   nil, # Cancel pose

Eso entra en juego aca:


Código:
   pose: self, row idle, all frames, wait 8;

Vamos por cada parte puestas aca. Lo primero que ves es la palabra self. Esto le dice al script que la pose que estas por definir es por la imagen que invoco esta pose. User también se puede usar acá, pero para todas pero para todos los efectos, significan la misma cosa en este punto.

La siguiente parte del código es row idle. Esto le dice al script de que row usar cual frame. Ahora, la Action por default, es única porque todas sus Actions ya tienen los rows de las poses definidas. En aquel largo pedazo de código que te dije que recuerdes, la row de la pose “Idle” estaba definida como Row 1. Asi que para esta Action, Idle, row idle le esta diciendo al script que use la row 1.

All frames, esta es la segunda parte del codigo que involucra como el Script va a mostrar esa pose.  Hay un par de formas diferentes para que el código maneje a las frames. All frames hace exactamente lo que dice, le dice a ese comando de pose que muestre todas las frames de la row 1.  Pero también podes decirle a la pose que muestre una frame especifica, usando el los términos Frame 1, Frame 2, Frame 3, etc. etc. Si tan solo especificas 1 frame, entonces esa es la única frame que el mostrara el script.

Wait 8 hace exactamente lo que crees que hace. Seguis pensando como un programador de eventos? Entonces deberias saber que es lo que el commando Wait hace. Trabaja de la misma manera acá. Le estas diciendo al código que espere 8 frames.

Ahora, como es que todo lo anterior junto funciona?

Código:
               pose: self, row idle, all frames, wait 8;

Acabas de crear una pose, que usa todas las frames de la row 1, con un retraso (wait) de 8 frames entre cada una de ellas.



Incluso cuando este es kaduki, el efecto es el mismo. Row 1 es la pose idle en este caso, y el comando pose repetirá todas las tres frames con intervalos de 8 frames.

Y eso es la esencia básica de las pose. Hay un par mas de comandos que podes agregar, como invert, return, loop, y revert, solo por nombrar algunos.

Para todos los efectos, podes intercambiar return y revert, que básicamente es una manera de decirle al commando de la pose que vaya hacia atrás después de llegar a la ultima frame. Entonces iria frame 1 > frame 2 > frame 3 > frame 2 > frame 1. Loop hace que la pose se repita indefinidamente hasta que apliques una nueva pose.

Ahora que ya sabes como funcionan las poses, volvamos y veamos la Action por defecto para Idle:


Código:
   # Pose displayed when idle
   <action: idle, loop>
   pose: self, row idle, all frames, wait 8;
   wait: 32;
   </action>

Lo unico diferente que hace esta action es esperar 32 frames antes de empezar todo de Nuevo. Y ahí tenes, seccionaste tu primer Action.

Estas listo para ir por cosas mas complicadas? Si respondiste POR SUPUESTO QUE SIIII!!! Sigue a la próxima sección.

Creando tus propias Actions personalizadas

De acuerdo, voy a romper una de mis propias reglas: voy a revelarte mi Acción personalizada para una Skill de mi proximo proyecto RPG Maker próximo a salir, Whispers of Eternity. Deberías sentitrte privilegiado. Pero, hey, lo que sea para beneficiar a la comunidad, no? Primero, hechemos un vistazo a esa Action en… bueno, accion:

Revelacion xD:

Ok, entonces, lo que estas viendo aquí es como codifique la Action para Spear Dive. Ahora que viste como luce en el juego, vamos a ver como luce en el Código!


Código:
   #Lyson Skill - Spear Dive -
   <action: Spear Dive, reset>
   wait: animation;
   pose: self, sufix _3, row 1, frame 3, wait 3;
   direction: targets;
   icon: weapon 1, angle 220, x +20, y +5;
   wait: 60;
   anim: id 81;
   wait: 140;
   anim: id 113;
   pose: self, sufix _3, row 1, frame 2, wait 3;
   move: self, move to, x -20, y +250, speed 30;
   wait: 40;
   icon: weapon 1, angle 130, x +5, y +5 z +1;
   wait: 160;
   pose: self, sufix _1, row 3, all frames, wait 3, loop;
   move: self, move to, x -0, y -150, speed 15;
   wait: 20;
   anim: id 112;
   move: self, move to, x -0, y +30, speed 15;
   wait: 20;
   anim: id 114;
   anim: targets, effect;
   effect: 100%;
   wait: 20;
   move: retreat;
   direction: targets;
   wait: 10;
   </action>

Hey, es mucho, no? Bueno, realmente no. Vamos por partes. Recuerda mirarlo como si estuvieras vieando un evento!

Lo primero que hice fue definir la Action. Se llama Spear Dive, y se restablece despues de su uso.

Después, hay un comando wait. Recuerdas como Lyson se detiene antes de activar la skill y ves esa pequeña aura a su alrededor? Eso es lo que hace esta linea aqui. Le dice a la Action que espere que termine la animacion antes de continuar.

La 3ra línea de la Action es donde le digo la pose de la misma. Esta en self, y el sufix_3 simplemente significa que esta cambiando a la imagen $Lyson.png que yo define como $Lyson_3.png. Entonces le digo que use la row 1, Frame 3, con una espera (wait) de 3 frames.

Direction: Targets; se explica por sí mismo. Quiero que enfrente al objetivo.

Okay, la linea icon: es como podes mostrar las armas que tenes equipadas en batalla. weapon 1 le dice a la Action que muestre tu arma equipada en ese momento. El resto del comando Icon es… bueno, se explica por si mismo. Angle le dice a la Action en que angulo mostrarlo, y los valores X y Y son cambios a la posición del icono. También debes ver mas abajo una Z. los valores Z determinan si el Icono se muestra delante o detrás de tu personaje.

Anim: id 81; Este es el comando de animación. Le dice a la Action que muestre la animación con ID 81 (no estoy seguro si se traduce asi);

Más comandos wait, otra pose…

Ah, Move.

Move es el comando  que le dice a la action como mover tu imagen por la pantalla. Piensa como usas el comando Move Picture en los eventos, trabaja de la misma manera. Con Move to le esta diciendo a la action que se mueva hacia el objetivo, pero hacia x - 20 & y +250 del objetivo. Speed es que tan rapido te mueves hacia allí. 15 viene por defecto. Yo use 30 aca para emular el Salto hacia el aire.

Todo lo demás es prácticamente lo mismo hasta que llegas a Anim: Targets, Effect. y Effect: 100%. Esto es como tu Action le dice al juego que realize cualquier skill, o item, o ataque común, o defense que hayas configurado.

Ahora que el daño ha sido causado, necesito regresar a Lyson a su posicion original.

Move: retreat; hace eso, y con direction: targets; continua mirando hacia los objetivos mientras regresa.

Y todo es es para Spear Dive. Pero solamente lo codificaste, ahora debes adjuntarlo a tu skill. Y eso es bastante simple.

En la pestaña de Skill de la Base de Datos, ve al panel de Notas de la skill a la que quieras adjuntarle esta Action, y escribe esto en el casillero:

Código:
<action pose: Spear Dive>

Y cada vez que uses esa skill en batalla, la Action que creaste para Spear Dive será mostrada.


--------------------

Y eso es realmente todo lo que hay que hacer. Garantizado, todo lo que he repasado aquí son los básicos para configurar una Action, pero afortunadamente en un modo que vos puedas entenderlo.
Hay muchos, muchos, muchos mas comandos  que podes usar para definer como una Action opera, como por ejemplo:

jump, throw, hide, plane, flash, shake, movie, picture, etc. etc.

Pero una vez que entendes lo básico acerca como funcionan los comandos (Y Victor provee Actions de muestra que invocan muchos de estos comandos), estarás descifrando como implementarlos antes de que te des cuenta!

Dejare una pequeña prueba: dime como piensas que la siguiente Action aparecerá cuando se use en el Juego:




Código:
<action: I'm Not Telling You, reset>
   wait: animation;
   pose: self, sufix _1, row 1, all frames, return, wait 3;
   direction: targets;
   wait: 60;
   pose: self, sufix _3, row 1, frame 2, wait 3;
   icon: weapon 1, angle 330, x +0, y -10;
   anim: id 131;
   wait: 60;
   pose: self, sufix _3, row 2, frame 2, wait 3;
   icon: weapon 1, angle 25, x -12, y -0;
   pose: self, sufix _3, row 2, frame 3, wait 3;
   icon: weapon 1, angle 330, x -5, y -10;
   anim: id 132;
   anim: targets, effect;
   effect: 100%;
   pose: self, sufix _3, row 2, frame 2, wait 3;
   icon: weapon 1, angle 25, x -12, y -0;
   pose: self, sufix _3, row 2, frame 3, wait 3;
   icon: weapon 1, angle 330, x -5, y -10;
   anim: id 132;
   anim: targets, effect;
   effect: 100%;
   pose: self, sufix _3, row 2, frame 2, wait 3;
   icon: weapon 1, angle 25, x -12, y -0;
   pose: self, sufix _3, row 2, frame 3, wait 3;
   icon: weapon 1, angle 330, x -5, y -10;
   anim: id 132;
   anim: targets, effect;
   effect: 100%;
   pose: self, sufix _3, row 2, frame 2, wait 3;
   icon: weapon 1, angle 25, x -12, y -0;
   pose: self, sufix _3, row 2, frame 3, wait 3;
   icon: weapon 1, angle 330, x -5, y -10;
   anim: id 132;
   anim: targets, effect;
   effect: 100%;
   pose: self, sufix _3, row 2, frame 2, wait 3;
   icon: weapon 1, angle 25, x -12, y -0;
   pose: self, sufix _3, row 2, frame 3, wait 3;
   icon: weapon 1, angle 330, x -5, y -10;
   anim: id 132;
   anim: targets, effect;
   effect: 100%;
   pose: self, sufix _3, row 2, frame 2, wait 3;
   icon: weapon 1, angle 25, x -12, y -0;
   pose: self, sufix _3, row 2, frame 3, wait 3;
   icon: weapon 1, angle 330, x -5, y -10;
   anim: id 132;
   anim: targets, effect;
   effect: 100%;
   pose: self, sufix _3, row 1, frame 2, wait 3;
   icon: weapon 1, angle 25, x -12, y -0;
   pose: self, sufix _1, row 1, all frames, return, wait 3;
   move: retreat;
   direction: targets;
   wait: 10;
   </action>

Sean libres de postear su respuesta aquí, o mandenme un MP!
Y eso es todo para el tutorial Básico del Script de Victor Animated Battles! Esper que esto ayude a arrojar algo de luz sobre cómo funciona el guión, y espero ver algunas actions personalizadas realmente impresionantes en un futuro próximo!!!

Lyson Out!

@Kanonelsebas escribió:Solo por recordar… No escribí este Tutorial, Lyson del foro rpgmakervxace.net lo hizo, así que no respondan porque no sabría decirles si tienen razón xD!

orochii

avatar
Wow, pos igual, gracias por compartir, y de paso gracias a Lyson por el rato. El tutorial este está inmenso y se nota el curro. Espero le sirva de mucho a quienes estén usando el Victor Engine.

Salut,
OZ

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.