2 de julio de 2012

RE Shooting System Tutorial: Capítulo 2


Recomendado a partir de nivel:
Evento de zombie

Bienvenidos al segundo capítulo del tutorial de RE Shooting System. En este tutorial, estudiaremos el evento de zombie, nuestro enemigo principal en este sistema de batalla.

Un evento de zombie es un evento normal, con su gráfico de zombie, en que añadiremos una serie de comandos a ser ejecutados. A este evento hemos de crearle una ruta, con la velocidad que deseemos, y que marque seguir al héroe. También podemos hacer rutas especiales para enemigos especiales, todo está en la originalidad. La siguiente opción es muy importante, este evento se ejecutará al colisionar con el héroe, no vale otro tipo de condición de aparición.


DEFINICIÓN DE ENEMIGO

Lo primero que debe aparecer en la hoja de evento es una anotación que le indica al sistema que ese evento es un enemigo y entonces debe leer de él algunos datos. Para eso, se añade una anotación con la palabra enemy.

DECLARACIÓN DE VARIABLES

Lo siguiente son una serie de variables de dónde el script va a leer las estadísticas del enemigo y calcularlas. Hay una serie de valores máximos y mínimos, permitiendo que el zombie o enemigo pueda tener en el juego diferentes estadísticas cada vez entre el valor mínimo y máximo.

@hp_max = 950 (vida máxima)
@hp_min = 900 (vida mínima)
@atk_max = 50 (ataque máximo)
@atk_min = 35 (ataque mínimo)
@def_max = 50 (defensa máxima)
@def_min = 35 (defensa mínima)

Estas variables son leídas por el Interpreter (script nativo del maker, que se le han añadido funciones nuevas que utiliza este script) y conforme a ellas algunos comandos funcionan de una manera u otra. Creo que no es necesario profundizar demasiado en esto, porque es evidente, si aún así hay dudas puedes dejar un comentario que gratamente se responderá.
Para usuarios avanzados en RGSS: los métodos que manejan estas variables y generan sus valores (ataque, defensa y hp del zombie) son generate_hp, attack_enemy y attack_player en el Interpreter 2.
Creo que sobra decir que si queremos evitar errores tontos, los valores mínimos deben ser iguales o menores que los máximos.

Otra cosa importante a tener en cuenta, este evento sólo ejecutará si se produce una Colisión, por eso el Detonante de Inicio debe ser obligatoriamente Colisionar (si no, da error). Por lo tanto, los comandos, variables y condicionantes de este evento sólo se leerán y actualizarán tanto si el jugador colisiona con él como si lo que colisiona es la bala arrojada con un arma. Lo único que no lee al colisionar son los comentarios o anotaciones. Tengan eso en cuenta si utilizan algún script que necesite las anotaciones para comprobar cosas (script de sombras, sonidos de pasos, etc.).

ATAQUE CON CUCHILLO

Lo siguiente que encontramos es un primer condicionante: near_hit.

Este condicionante lo que hace es comprobar es si se realiza un ataque con cuchillo y si se hace cerca de un enemigo. Si es este el caso devuelve un true (por lo tanto el condicionante se cumple y realizan los comandos que le pongamos debajo).

En este caso, el comando a llevar a cabo si se cumple la condición es turn_hit_on, que significa que se ha realizado un hit (golpe exitoso).

Para atacar con un cuchillo se usa la tecla S y luego la C.

Por alguna razón, el autor no terminó de hacer el sistema del cuchillo o se olvidó de él, así que para evitar errores nos vamos al Interpreter 2 y buscamos las líneas de abajo y le ponemos un # delante de ellas tal como se muestra en la imagen:


Esto dejará inservible el cuchillo, pero más adelante lo arreglaremos, en el capítulo de crear y modificar armas.

El problema es que el método face no está definido y tampoco la lectura del ataque que debería de leer de las estadísticas del arma.

ATAQUE CON ARMA A DISTANCIA

Para atacar con una pistola se usa la Z y luego la C.

La pistola está configurada dentro de los scripts y no requiere de comandos especiales en los eventos. Funciona perfectamente, pero a veces se producen estos errores (aunque a mí con la demo no me ha pasado, sí que me ha pasado cuando usaba este sistema por mi cuenta):
  1. A veces es necesario equipar un arma dos veces para que realmente se equipe. Asegúrate de que se ve el icono del arma en la parte de arriba del hud (junto a la palabra Equipo).
  2. La primera vez que te encuentras un arma es necesario recargar el arma mediante el menú con el comando COMBINAR, pues al recargar el arma automáticamente da error de script. Después de hacerlo por primera vez, ya recarga automáticamente sin problemas.
Las armas a distancia tienen un máximo de munición a cargar. Cuando las balas del arma llegan a cero recarga automáticamente si tenemos munición en el inventario. También podemos ir al inventario y usar Combine para recargar el arma. 

COMPROBACIÓN DE GOLPE

Para comprobar si se ha realizado un golpe exitoso, se utiliza un condicionante con el comando de script hit_check. Al realizar un golpe exitoso el condicionante se vuelve true (verdadero) y se cumple todo lo que está en él. Recuerden que para que se ejecute el evento debe ocurrir una colisión.

Una vez que el hit es true se ejecutan dos comandos.
  1. generate_hp: si el hp (la vida del zombie) no está generada, la genera mediante los dos valores especificados en las variables del evento (al inicio del mismo). En el caso de que el evento ya tenga su vida generada, se ignora este comando.
  2. attack_enemy: realiza el propio ataque. Esto es, mediante el ataque del arma usada y la defensa del zombie, se calcula el daño hecho.
Para usuarios avanzados en RGSS: como veis es una fórmula bastante sencilla de entender y se podía hacer más compleja y aleatoria, incluso añadir que el jugador fallase, si se leyera más características del jugador o se crearán nuevas variables a los eventos (que deben inicializarse en el Interpreter 1)
Lo siguiente que tenemos es una llamada al Evento Común: Normal Animation.

Básicamente, este evento usa dos comandos bien fáciles de entender.

  1. stop_move_event: por el propio nombre se puede deducir lo que hace, básicamente detiene momentáneamente todos los eventos en lo que se produce este evento.
  2. weapon_hit_check(id): este comando les puede servir para montar interesantes engines con este sistema (más adelante crearemos algunos interesantes). Lo que hace básicamente es comprobar si el arma con el que se hace el hit true es la que pusimos en el id. Obviamente, id es el ID del arma en la Base de datos. Como vemos la animación normal para cualquier arma es [Blood], pero luego hay varias condiciones según que arma se usa para que se vean distintas animaciones.
NOTA: Al llamar el evento común desde un evento si utilizamos la opción Este evento, nos estamos refiriendo al evento desde donde hemos llamado al evento común.
Volviendo al evento del zombie, lo siguiente que comprueba si el hit es true, es si el zombie ha muerto con el ataque de nuestro jugador mediante event_die. Entonces, si el evento ha muerto se activa un interruptor Local que nos lleva a la segunda página del evento (de la que hablaremos más adelante), pero podemos poner que ocurran cosas si el evento muere: que cuente una variable, que aparezca una cinemática, que se transforme en un enemigo más fuerte, etc.

Después de comprobar si el enemigo ha muerto con el golpe, lo que hay es el comando unhit, que simplemente indica que el golpe ha acabado y por lo tanto el hit se vuelve false.

ATAQUE AL JUGADOR

Si se produce una colisión pero el hit_check marca que no se ha producido un ataque por parte del jugador (o sea, que es false), entonces quiere decir que el zombie puede atacar al jugador. Todo lo que ocurra entonces, se pone en la excepción del condicionante del hit_check.


En esta excepción pondremos todo lo que ocurre cuando un zombie nos ataca. Debe contener el comando attack_player que realizará el ataque al jugador. Aparte, debe contener una condición que detecte si después del ataque el jugador muere con una condición de script con player_die y que dentro tenga el comando de Fin de Juego u otra cosa que ocurra cuando muera el jugador.

EL ZOMBIE MUERE

Cuando se cumple la condición de event_die se activa un interruptor local que lleva a una nueva página, en ella veremos los siguientes comandos, además en esta página deberemos poner un gráfico del zombie muerto.


Esta condición va a detectar si se activa el comando die_point_check y entonces el interruptor local B del evento llevará a una tercera hoja que estará vacía haciendo que el evento del zombie desaparecería.


El comando die_point_check se activa cuando usamos el evento común Call Door (evento de teletransporte). Si no quieres usar esto no lo pongas y listo.

Y hasta aquí el segundo capítulo, que como ven se ha explicado bastante del funcionamiento del sistema. Ahora seréis capaces de modificar los eventos zombie para personalizarlos a vuestro gusto.

Hasta el próximo capítulo.


ESTO ES UN TUTORIAL ORIGINAL NO COPIES, DISTRIBUYE Y ACREDITA A SUS VERDADEROS AUTORES

Creative Commons License

4 comentarios:

  1. Hola, antes de nada quiero darte las gracias porque tus tutoriales son muy útiles :), y seguidamente una pequeña duda con respecto a este script, verás, es que llevo tiempo queriendo hacer un sistema a lo metal gear para el rpg maker, tengo el radar, tengo el sistema de visión (aunque atraviesa paredes y no se como hacer para que no lo haga) y este sistema de tiros de resident evil me viene de perlas, porqeu ademas puedes hacer que las balas no atraviesen ciertos tiles, lo único que me queda por saber es si con este script puedo crear enemigos con armas de fuego, es lo único que me falta :S. De nuevo muchas gracias por todo, espero que puedas echarme un cable, y perdón por el tocho

    ResponderEliminar
    Respuestas
    1. Hola, gracias por comentar.

      Lamentablemente los enemigos no pueden disparar, pero se podría implementar incluso con engines, ya que este sistema te permite utilizar fácilmente engines junto al sistema.

      También puedes utilizar el Blizz ABS que es bastante completo, trae sistema de radar, los enemigos tienen rango de visión y de escuchar, a parte de que no van a atacarte sin más, también intentan esquivar tus ataques y pueden disparar. Tenemos los tutoriales de este sistema en español.

      Suerte!

      Eliminar
    2. Guau suena genial!, le echaré un vistazo. Si consigo hacer algo te lo comunicare por si te interesa ponerlo. Muchas gracias :)

      Eliminar
  2. Hola, me gustaría saber como solucionar lo del cuchillo, eso es lo que me tiene vuelto loco, he buscado soluciones pero no encuentro ninguna. Espero que me puedan ayudar, Gracias.

    ResponderEliminar

ATENCIÓN: Tu comentario aparecerá cuando sea aceptado.