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.
Ahi no hay fallo.
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 :-\.
En el evento colisión coloca
global.tiempo + 30;
instance_destroy();
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)
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;
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.
Pues ahi tampoco veo error (con un solo objeto te podrias haber ahorrado todas esas colisiones)
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.
no tienes algún objeto o pedazo de código que bloquee el tiempo a 125 y no te deje sumarle mas?
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.
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.
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.
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.
¿pero qué se imprime en la consola?
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)
La cosola de GM:S, donde se ve el registro de compilación; no en el juego.
porque no mejor re haces todo el codigo?
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.
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.
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
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.