Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 4193 miembros registrados.
El último usuario registrado es Godot.

Nuestros miembros han publicado un total de 85222 mensajes en 12132 argumentos.

[XP][Tutorial] Engine de terreno del pantano

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP][Tutorial] Engine de terreno del pantano

Mensaje por Wecoc el 2017-01-20, 11:54

Back to the basics, hoy os explicaré cómo hacer que al pasar por un determinado terreno, el personaje reciba daño como si estuviera envenenado.
Se podría hacer que al entrar en un terreno se recibiera estado Veneno (o Pantano) y al salir se quitara, pero en vez de eso no implicaremos ningún estado, solo imitaremos su efecto. De ese modo, sin cambiar la base de scripts, podremos controlar mejor cómo funciona el efecto en su totalidad desde el engine mismo.

Ésto también se puede definir por Area usando el Area Support en caso de que no queráis limitarlo a un autotile sinó a un area más compleja del mapa.
Explicaré ámbos casos paralelamente, porque solo tienen una pequeña diferencia.

Primero hay que definir el terreno en la Base de Datos o bien el Area en el mapa.

Spoiler:

Para detectar si estamos en el terreno o área usaremos un interruptor siempre encendido, y un Evento Común en Proceso Paralelo que se activa con ese interruptor.
Dentro de éste Evento Común ponemos una condición para mirar si el personaje está encima del terreno. Solo se usa ahí, así que sí, se podría usar una variable, pero no hace falta.
Solo hay que poner ésto en una condición:
$game_player.terrain_tag == (ID del Terreno)

Spoiler:

Si en cambio usáis Area Support el método cambia pero es básicamente lo mismo:
$game_player.area == (ID del Area)
Es la única diferencia entre un sistema y el otro, a partir de aquí ya es igual en ámbos.

Luego ahí dentro de la condición se podría poner un Flash, un Esperar x frames para que el Flash no sea constante y un bajar HP (con la opción de morirse activada).

Spoiler:

Pero el veneno del maker no funciona así, ¿verdad? Es algo más complejo. Si no, menudo tutorial xD

El veneno del maker hace todo ésto:

A - Actúa solo cuando se está andando (al inicio de cada paso)
B - Actúa solo en pasos pares (es decir uno de cada dos pasos)
C - Resta un 10% de la vida máxima a cada actor
D - Si un actor muere se escucha el sonido "Collapse" (definido en la Base de Datos)

Imitaremos cada uno de éstos pasos para nuestro engine.

A - Actúa solo cuando se está andando

Haremos una pequeña astucia aquí. Al iniciar el paso, la variable @anime_count del personaje aumenta, y va subiendo 1.5.
Eso significa que si comprobamos si esa variable vale 1.5 es lo mismo que comprobar que justo está empezando el paso.
Usaremos instance_eval para acceder a esa variable, puesto que por defecto no es accesible:

$game_player.instance_eval("@anime_count") == 1.5

Hay otros métodos pero muchos dependen de la velocidad del personaje así que según cual fuera ésta podrían no funcionar bien; éste en cambio se cumple siempre.

B - Actúa solo en uno de cada dos pasos

Eso se puede cambiar a cada paso (por lo que nos podríamos saltar ésta condición), cada tres... lo que se quiera. Solo hay que obtener el número de pasos actual de la party, $game_party.steps, y dividirlo por ese número, si la división es exacta luego se efectúa. Para ello usamos la propiedad resto (%) que si vale 0 significa que la división es exacta.

$game_party.steps % 2 == 0

C - Resta un 10% de la vida máxima de cada actor

La mejor forma de hacer ésto es usando un llamar script, de éste modo además lo ligamos a lo siguiente.

D - Si un actor muere se escucha el sonido "Collapse"

Solo hay que comprobar que no esté muerto antes de restarle la vida, y si está muerto después luego se ejecuta el sonido.
El llamar script quedará así:

Código:
for actor in $game_party.actors
  if !actor.hp0?
    actor.hp -= (actor.maxhp / 10)
    if actor.hp == 0
      s = $data_system.actor_collapse_se
      $game_system.se_play(s)
    end
  end
end

Ahí podéis cambiar la proporción de HP que se quita, si creéis que 1/10 del total es demasiado (suele serlo, el Veneno del maker es muy potente)

A diferencia de restando vida normal, haciéndolo por llamar script así al morir todos no se inicia Game Over.
Pero es muy fácil cambiar esa propiedad, solo hay que añadir un segundo Llamar script:

Código:
if $game_party.all_dead?
  $game_temp.gameover = true
end

Resultado final:

Spoiler:

Ojalá os sirva.
avatar
Wecoc
Administrador
Administrador



Créditos 9272

Gracias : 503

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Tutorial] Engine de terreno del pantano

Mensaje por PKTrainer el 2017-01-21, 11:11

¿no hay en el XP una opción para hacer eso directamente?
avatar
PKTrainer
Iniciado
Iniciado

0/3

Créditos 0

Gracias : 4

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Tutorial] Engine de terreno del pantano

Mensaje por Wecoc el 2017-01-21, 11:31

Lo expliqué en el primer párrafo, el modo que tienes con el maker directamente es añadiendo estado Veneno (o Pantano) al entrar en el terreno y quitándolo al salir. No tienes más control que ese.

Con el engine en cambio puedes controlar cualquier cosa; frecuencia de daño, cantidad de daño, color del flash (o si hay flash o no)... Y otras cosas que se te ocurran, como hacer que al morir por eso pase algo especial, quitar SP en vez de HP... No hay todos los límites que hay al usar un estado predeterminado.

Se podría hacer por script; aplicar el daño con el estado Veneno normal pero cambiar todo eso que he dicho con un script. Pero en éste caso es más fácil hacer el engine, que ya ves lo que ocupa, solo requiere un interruptor, y así queda separado del auténtico estado Veneno.
avatar
Wecoc
Administrador
Administrador



Créditos 9272

Gracias : 503

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Tutorial] Engine de terreno del pantano

Mensaje por PKTrainer el 2017-01-21, 11:39

OK,gracias por aclarármelo,es que pensé que no te habías dado cuenta de que había,pero con el engine la verdad es que se pueden hacer muchas cosas mas,para eso esta ¿no?
avatar
PKTrainer
Iniciado
Iniciado

0/3

Créditos 0

Gracias : 4

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Tutorial] Engine de terreno del pantano

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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