Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Naitsabes0 en Septiembre 08, 2017, 07:48:13 AM

Título: Tengo un problema para sumar tiempo [SOLUCIONADO]
Publicado por: Naitsabes0 en Septiembre 08, 2017, 07:48:13 AM
el objeto que tiene el tiempo dispone de

obj_Tiempo_juego
CREATE
///Variables
global.tiempo = 130; //tiempo en segundos

Los demás elementos se encargan de que corra 30 step por segundo y de dibujarlo.

obj_Poder_Aumento_Tiempo
COLISION con bola
///Sumar tiempo
global.tiempo += 30;
instance_destroy();

(https://i.gyazo.com/2ec2d550cbab0d11fbc0b35e0ce92c13.gif)
El tiempo no se suma se conserva, por lo que se vuelve inútil el poder de aumentar tiempo, hay algo que falla en estos códigos.

Título: Re:Tengo un problema para sumar tiempo
Publicado por: 3dgeminis en Septiembre 08, 2017, 08:21:01 AM
Ahi no hay fallo.
Título: Re:Tengo un problema para sumar tiempo
Publicado por: Naitsabes0 en Septiembre 08, 2017, 09:01:56 AM
Cita de: 3dgeminis en Septiembre 08, 2017, 08:21:01 AM
Ahi no hay fallo.
Vale si hay no hay falla daré todos los elementos involucrados del poder tiempo y el controlador de tiempo.

obj_Poder_Aumento_Tiempo
CREATE
image_speed = 0.05;

COLISION con bola
///Sumar tiempo
global.tiempo += 30;
effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

COLISION con bola triple
///Sumar tiempo
global.tiempo += 30;
effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

COLISION con bola estrella
///Sumar tiempo
global.tiempo += 30;
effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

obj_Tiempo_Juego
CREATE
///Variables
global.tiempo = 130; //tiempo en segundos
alarm[0] = 30; // velocidad del tiempo 1 segundo

ALARMA 0
///Velocidad del tiempo
global.tiempo -= 1; //descuento del tiempo 1segundo
alarm[0] = 60;
image_speed = 0.05;

STEP
///Efecto del tiempo 0
if(global.tiempo < 0)
{
    global.tiempo = 0
    game_end();
}

DRAW
///Dibuja el tiempo actual
draw_set_halign(fa_middle);
draw_set_valign(fa_middle);
draw_set_color(c_red);
draw_text(400,32,string(global.tiempo));
draw_self()

Todo esta en su sitio, es extraño que no funcione  :-\.
Título: Re:Tengo un problema para sumar tiempo
Publicado por: MasterMaker en Septiembre 08, 2017, 09:02:59 AM
En el evento colisión coloca
global.tiempo + 30;
instance_destroy();
Título: Re:Tengo un problema para sumar tiempo
Publicado por: Naitsabes0 en Septiembre 08, 2017, 10:01:33 AM
Cita de: MasterMaker en Septiembre 08, 2017, 09:02:59 AM
En el evento colisión coloca
global.tiempo + 30;
instance_destroy();
Tu ejemplo esta mal redactado, ya que no cumple con los valores lógicos de GM:S
(https://i.gyazo.com/f7eb00163686a0fac03837a8c6e8657b.gif)
Título: Re:Tengo un problema para sumar tiempo
Publicado por: bochaPastore en Septiembre 08, 2017, 01:31:08 PM
Cita de: MasterMaker en Septiembre 08, 2017, 09:02:59 AM
En el evento colisión coloca
global.tiempo + 30;
instance_destroy();

global.tiempop += 30;
Título: Re:Tengo un problema para sumar tiempo
Publicado por: Naitsabes0 en Septiembre 08, 2017, 10:09:52 PM
Cita de: bochaPastore en Septiembre 08, 2017, 01:31:08 PM
Cita de: MasterMaker en Septiembre 08, 2017, 09:02:59 AM
En el evento colisión coloca
global.tiempo + 30;
instance_destroy();

global.tiempop += 30;
Si leyó el problema inicial y no el ultimo mensaje del post, el código tiene ese diseño funcional, no coloque el error lógico que me mandaron, se agradece que repita el código que ya esta escrito, pero el problema no esta hay, razón por la que todavía sigue pendiente.
Título: Re:Tengo un problema para sumar tiempo
Publicado por: 3dgeminis en Septiembre 09, 2017, 12:02:23 AM
Pues ahi tampoco veo error (con un solo objeto te podrias haber ahorrado todas esas colisiones)
Título: Re:Tengo un problema para sumar tiempo
Publicado por: Naitsabes0 en Septiembre 09, 2017, 12:22:29 AM
Cita de: 3dgeminis en Septiembre 09, 2017, 12:02:23 AM
Pues ahi tampoco veo error (con un solo objeto te podrias haber ahorrado todas esas colisiones)
Ese es el problema, no hay error y aun si no funciona, el tiempo no se suma y todo lo demás se ejecuta bien, pero es el tiempo lo que mas me interesa en este caso, respecto a programar todo en un objeto, estoy seguro que podría hacer mas de 100.000 lineas de código para un solo objeto si supiera como administrarlo de forma funcional en los eventos correspondientes, pero ambos sabemos que me faltan pulir habilidades para hacer tal acción.
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: cristopher2545 en Septiembre 09, 2017, 06:08:46 AM
no tienes algún objeto o pedazo de código que bloquee el tiempo a 125 y no te deje sumarle mas?
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: bygdle en Septiembre 09, 2017, 06:13:14 AM
Pues qué optimismo tienes, no va ni una página de hilo y ya rindiéndote,  :-\

Intenta hacer pruebas en el evento de colisión, agrega un show_debug_message() antes de que le sumes al tiempo para ver qué valor imprime. Empieza haciendo eso para ubicar el error.
[gml]
show_debug_message("Original: " + string(global.tiempo));
global.tiempo += 30;
show_debug_message("nuevo: " + string(global.tiempo));

effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();
[/gml]

Y por cierto, sería bueno que agrupes el objeto bola , el objeto bola triple y bola estrella bajo un parent, para que uses un sólo evento de colisión con éste.
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: Naitsabes0 en Septiembre 09, 2017, 06:42:59 AM
Cita de: NiuWeb en Septiembre 09, 2017, 06:13:14 AM
Pues qué optimismo tienes, no va ni una página de hilo y ya rindiéndote,  :-\

Intenta hacer pruebas en el evento de colisión, agrega un show_debug_message() antes de que le sumes al tiempo para ver qué valor imprime. Empieza haciendo eso para ubicar el error.
[gml]
show_debug_message("Original: " + string(global.tiempo));
global.tiempo += 30;
show_debug_message("nuevo: " + string(global.tiempo));

effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();
[/gml]

Y por cierto, sería bueno que agrupes el objeto bola , el objeto bola triple y bola estrella bajo un parent, para que uses un sólo evento de colisión con éste.
Los 3 objetos ya tienen un padre que se encarga de las colisiones, no pueden haber 2 en un mismo objeto. respecto al código, el resultado final es que suma 30 segundos y resta 30 segundos mas los efectos correspondientes, es decir que se auto-anula al instante, quedando en 0, lo compare con los códigos del jugador del otro juego, y es el mismo, por lo que no se puede sumar tiempo a objetos que se crean en la habitación, al menos no del mismo modo, es por eso que este problema esta marcado como sin solución, por la razón anteriormente argumentada  :-\.

///Sumar tiempo
show_debug_message("Original: " + string(global.tiempo));
global.tiempo += 30;
show_debug_message("nuevo: " + string(global.tiempo));

effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

hace lo mismo que

///Sumar tiempo
global.tiempo += 30;
effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

Solo que esta ultima no resta ni suma.
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: bygdle en Septiembre 09, 2017, 07:11:41 AM
El código no hace nada distinto, era para que mirases los valores que imprimen en consola.
Además, la disminución de tiempo es de 1s por cada 60steps, mientras que en la colisión aumenta 30s en 1step, no deberían anularse, para eso son los debugs, para ver lo que realmente sucede.
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: Naitsabes0 en Septiembre 09, 2017, 08:04:34 AM
Cita de: NiuWeb en Septiembre 09, 2017, 07:11:41 AM
El código no hace nada distinto, era para que mirases los valores que imprimen en consola.
Además, la disminución de tiempo es de 1s por cada 60steps, mientras que en la colisión aumenta 30s en 1step, no deberían anularse, para eso son los debugs, para ver lo que realmente sucede.
Pues se anulan  :-\, y el código de DS impide que el juego se ejecute, la verdad pienso en que debería destruir el objeto tiempo y la colisión de la bola, pero el resultado es el mismo, probablemente porque no varié mucho del antes y después.

Si tuvieras que tener un objeto tiempo y un objeto que al colisionarlo sume mas tiempo ¿como lo montarías? claro que seria desde 0, ya que los anteriores mostrados están eliminados en este ejemplo.
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: bygdle en Septiembre 09, 2017, 08:06:25 AM
¿pero qué se imprime en la consola?
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: Naitsabes0 en Septiembre 09, 2017, 08:23:17 AM
Cita de: NiuWeb en Septiembre 09, 2017, 08:06:25 AM
¿pero qué se imprime en la consola?
Nada, es completamente in-funcional, es como si no existiera.
(https://i.gyazo.com/2ec2d550cbab0d11fbc0b35e0ce92c13.gif)
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: bygdle en Septiembre 09, 2017, 05:41:34 PM
La cosola de GM:S, donde se ve el registro de compilación; no en el juego.
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: cristopher2545 en Septiembre 09, 2017, 09:41:20 PM
porque no mejor re haces todo el codigo?
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: Naitsabes0 en Septiembre 09, 2017, 10:04:52 PM
Cita de: cristopher2545 en Septiembre 09, 2017, 09:41:20 PM
porque no mejor re haces todo el codigo?

Vale, recapitulemos como si nada existiera aun.

Tenemos estos objetos involucrados para el tiempo, los cuales no tendrían códigos aun.

1.- obj_Tiempo_Juego : es el icono de arriba que alberga el tiempo marcha atrás en las letras rojas, parte superior de la pantalla.

2.-obj_Bola : es la bola que rompe todo lo que colisiona, todos los bloques y poderes tienen a un padre bloque que los hace destruirse al contacto con la bola.

3.-obj_Poder_Aumento_Tiempo: Suma X tiempo (30) a obj_Tiempo_Juego, cuando es destruido por obj_Bola.

En esto se resume lo que debo lograr, funciono en mi juego "Red Heart" como power up de forma eficiente, pero en este proyecto hay un problema, tal vez porque el obj_Tiempo_Juego es creado por código y no por ser instalado en la habitación.
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: Naitsabes0 en Septiembre 09, 2017, 10:13:40 PM
Cita de: NiuWeb en Septiembre 09, 2017, 05:41:34 PM
La cosola de GM:S, donde se ve el registro de compilación; no en el juego.
He probado su codigo

///COLISION con bola
show_debug_message("Original: " + string(global.tiempo));
global.tiempo += 30;
show_debug_message("nuevo: " + string(global.tiempo));

effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

y no registra nada en la consola ni en el juego, tengo sensación de que no esta en el evento correspondiente, creo que lo mejor seria que recapitulemos como si nada existiera aun.

Tenemos estos objetos involucrados para el tiempo, los cuales no tendrían códigos aun.

1.- obj_Tiempo_Juego : es el icono de arriba que alberga el tiempo marcha atrás en las letras rojas, parte superior de la pantalla.

2.-obj_Bola : es la bola que rompe todo lo que colisiona, todos los bloques y poderes tienen a un padre bloque que los hace destruirse al contacto con la bola.

3.-obj_Poder_Aumento_Tiempo: Suma X tiempo (30) a obj_Tiempo_Juego, cuando es destruido por obj_Bola.

En esto se resume lo que debo lograr, funciono en mi juego "Red Heart" como power up de forma eficiente, pero en este proyecto hay un problema, tal vez porque el obj_Tiempo_Juego es creado por código y no por ser instalado en la habitación.
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: cristopher2545 en Septiembre 10, 2017, 12:51:35 AM
losiento colega lo que sea que estes haciendo mal es por tu parte replique exactamente el mismo codigo que diste aqui y a mi me suma el tiempo pasando del limite tengo 130 de inicial y si toco mi punto me da mas tiempo y se acumula con

global.tiempo+=30

lo que sea que estés haciendo es por tu parte colega
Título: Re:Tengo un problema para sumar tiempo [Sin solución]
Publicado por: Naitsabes0 en Septiembre 10, 2017, 03:06:46 AM
Cita de: cristopher2545 en Septiembre 10, 2017, 12:51:35 AM
losiento colega lo que sea que estes haciendo mal es por tu parte replique exactamente el mismo codigo que diste aqui y a mi me suma el tiempo pasando del limite tengo 130 de inicial y si toco mi punto me da mas tiempo y se acumula con

global.tiempo+=30

lo que sea que estés haciendo es por tu parte colega
Adivina compañero, tenia razón, o al menos suerte de novato, dije que los objetos creados por código no pueden tener aumento de tiempo, así que en vez de crearlo por código "draw_sprite", lo coloque como objeto en la habitación de la misma forma que mi juego "Red Heart", el resultado es

(https://i.gyazo.com/fe0f242baf2566c7fb8010778b0a586c.gif)

Es lo esperado, por lo que mi código nunca estuvo malo, solo no funcionaba bajo esas condiciones  :), igual gracias por la ayuda  ;D.