Septiembre 08, 2017, 07:48:13 AM Ultima modificación: Septiembre 10, 2017, 03:07:09 AM por Naitsabes0
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();


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.



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

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.

#9 Septiembre 09, 2017, 06:08:46 AM Ultima modificación: Septiembre 09, 2017, 06:10:31 AM por cristopher2545
no tienes algún objeto o pedazo de código que bloquee el tiempo a 125 y no te deje sumarle mas?
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!

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.
alaberga regué el café.

BA:STFW&RTFM

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.
alaberga regué el café.

BA:STFW&RTFM

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?
alaberga regué el café.

BA:STFW&RTFM