Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: jefferson940 en Diciembre 21, 2011, 09:43:05 PM

Título: Que tiene de malo este codigo
Publicado por: jefferson940 en Diciembre 21, 2011, 09:43:05 PM
tengo este codigo en el step de mi personaje,

if vida<=0 and estado<>"muerto"
    {estado="muerto";
     alarm[0]=30;
     effect_create_above(1,x,y,1,c_white);}

no se por q este codigo se convierte en un ciclo si le estoy cambiando el estado q es diferente a "muerto" a que si sea "muerto".
eso, segun yo, deberia dejar de repetir este ciclo
Título: Re: Que tiene de malo este codigo
Publicado por: MaanuRP en Diciembre 21, 2011, 10:34:56 PM
Por lo que yo se, para decir: "Es distinto de:" se usa: != y no <> como en VB.
Título: Re: Que tiene de malo este codigo
Publicado por: jefferson940 en Diciembre 21, 2011, 10:37:57 PM
no me sirvio con !=
Título: Re: Que tiene de malo este codigo
Publicado por: MaanuRP en Diciembre 21, 2011, 10:51:22 PM
Revisaste las variables? Que la variable se ponga en "muerto" cuando debe estarlo?

Y porque preguntas si la vida es menor o igual a 0 y aparte si la variable esta en "muerto"? No pongas dos cosas iguales en un if porque muchas veces se te puede complicar encontrar el error.
Título: Re: Que tiene de malo este codigo
Publicado por: jefferson940 en Diciembre 21, 2011, 11:12:22 PM
el personaje tiene varios estados
cuando la vida llega a cero cambia a estado="muerto" precisamente para q no se me forme un ciclo.

revise, y si, el estado queda en "muerto" y la vida es <=0
pero aun asi me sigue creando el ciclo, lo se por q me crea el efecto constantemente y no me ejecuta el codigo de la alarm[0]
Título: Re: Que tiene de malo este codigo
Publicado por: MaanuRP en Diciembre 22, 2011, 12:35:00 AM
Hasta que la vida no sea mayor a 0 o su estado cambie, la alarma va a ser 30 siempre, ya que se crea el bucle. Entiendes?
Título: Re: Que tiene de malo este codigo
Publicado por: jefferson940 en Diciembre 22, 2011, 01:39:42 PM
pero si la condicion es q estado sea diferente a "muerto" para que se cumpla el codigo, y para q no se repita paso el estado a "muerto".

no se por q vuelve y repite el ciclo si ya cambie la condicion q era necesarioa
Título: Re: Que tiene de malo este codigo
Publicado por: elviskelley en Diciembre 22, 2011, 02:08:23 PM
if vida<1 and (estado!="muerto")
    {
    alarm[0]=3*room_speed;
    effect_create_above(1,x,y,1,c_white);
    estado="muerto";
    }
Título: Re: Que tiene de malo este codigo
Publicado por: Wadk en Diciembre 22, 2011, 03:51:38 PM
Elvis, tu c?digo es m?s o menos equivalente.

El problema parece ser que el estado despu?s de cambiar a "muerto" cambia a otra cosa y enseguida el c?digo vuelve a ejecutarse. Yo pondr?a el c?digo as?:
[gml]if (vida <= 0 && estado != "muerto") {
    show_message("estado = '" + estado + "'");
    estado = "muerto";
    alarm[0] = 30;
    effect_create_above(1, x, y, 1, c_white);
}[/gml]
Ah? te pod?s fijar cu?l es el valor de estado cuando deber?a ser "muerto".
Título: Re: Que tiene de malo este codigo
Publicado por: jefferson940 en Diciembre 22, 2011, 04:29:43 PM
Gracias a ambos por responder, la verda es q ensaye ambas respuestas y sigue en lo mismo, no se de donde mas buscarle.
Título: Re: Que tiene de malo este codigo
Publicado por: MatuX en Diciembre 23, 2011, 01:49:31 PM
entonces f?jate que capas ese no es tu problema, tal ves en otro lado la condici?n de "muerto" sea otra que haces que te genere ese ciclo infinito seguro, en que parte lo pusiste?