Septiembre 10, 2017, 06:01:37 AM Ultima modificación: Septiembre 10, 2017, 07:37:06 AM por Naitsabes0
Pues en muchos juegos hay elementos de regeneración, tales como vida, energía, magia, munición etc.

Lo que busco en este caso seria regeneración de vida, y he pensado en establecer lo siguiente.

-Una condición de que la vida se recupere de forma continua, lo que significa que va sumando mientras pasa el tiempo.

-Un limite, pues en algún momento debe parar de generar vida (salud), ya que seria raro que la vida sea 100% y pase a valores superiores.

Mi jugador tendría una vida 18(100%) como máximo y un regenerador que lo recuperara 1 de vida cuando pasen 30 step
global. vida = 18;
regenerador = 1

En STEP estaría el regenerador, cuando este sea == 30 tendría que dar un global. vida += 1 y volver el regenerador a 0 para repetir el ciclo, pero claro el mayor problema estaría en como detengo el ciclo? en algún momento el jugador podría llegar a tener tanta vida que sea casi imposible de matar.

La verdad podría servir para la regeneración de muchos elementos que mencione con anterioridad, pero analizando 1 da pie a organizar y complementar con otros, lo mas parecido que tengo a esto es el objeto_Tiempo, por lo que creo que debe ser muy similar.

Puedes usar alarmas, y simplemente comprobar que la vida sea menor a 18 antes de regenerarle.
[gml]
///Evento create
global.vidab = 18; //Esta es la vida original, no debe modificarse en juego.
global.vida  = global.vidab; //Esta es la vida que se modificará en el juego
regenerador  = 1;
alarm[0] = room_speed; //Activar una alarma para regenerar cada segundo.
[/gml]
[gml]
///Evento alarm 0
alarm[0] = room_speed;
if(global.vida <= (global.vidab - regenerador)) //Si tiene menos vida de la original (vida máxima)
{
    global.vida += regenerador;
}
[/gml]
Obviamente, si ya tienes utilizando la alarma 0, debes usar otra.
alaberga regué el café.

BA:STFW&RTFM

Cita de: NiuWeb en Septiembre 10, 2017, 06:11:57 AM
Puedes usar alarmas, y simplemente comprobar que la vida sea menor a 18 antes de regenerarle.
[gml]
///Evento create
global.vidab = 18; //Esta es la vida original, no debe modificarse en juego.
global.vida  = global.vidab; //Esta es la vida que se modificará en el juego
regenerador  = 1;
alarm[0] = room_speed; //Activar una alarma para regenerar cada segundo.
[/gml]
[gml]
///Evento alarm 0
alarm[0] = room_speed;
if(global.vida <= (global.vidab - regenerador)) //Si tiene menos vida de la original (vida máxima)
{
    global.vida += regenerador;
}
[/gml]
Obviamente, si ya tienes utilizando la alarma 0, debes usar otra.
Agradecido  :).

Vaya tu código mas un pequeño orden que tuve que hacer, formo una buena regeneración por segundo, salio mas fácil de solucionar de lo que pensaba en un inicio.