hola a todos! lindo día el que hay afuera!
tengo un pequeño problema y espero tenga solución y que puedan ayudarme :) porque ya le di vueltas hasta el cansancio, tengo una variable llamada:
global.score=0
esta variable guarda los puntos del jugador durante la partida hasta ahi todo correcto me gustaria tener 3 variables cada cierto tiempo estas 3 variables congelen la puntuacion algo asi como recordar la puntuacion que tenias en ese momento usando la variable global.score pero sin que cambie ninguna de la svariables congeladas por ejemplo
global.score=500
global.score_congelado= global.score // en este caso eran 500
si el jugador gana mas puntos por ejemplo
global.score=700
recordando que el anterior score era 500 entonces
global.score=700
global.score_congelado= global.score // en este caso eran 500
global.score_congelado2= global.score // en este caso eran 700
espero los ejemplos ayuden la idea es usar una variable base, y congelar o guardar en ciertos momentos ese valor sin que se modifique una vez guardado, ojala puedan hecharme una mano! o si esto es posible porque creo estoy soñando mucho! de antemano gracias!
Buenas,
Lo primero de todo ten cuidado con llamar a tus variables igual que algunas palabras reservadas del Game Maker, en este caso score es una variable built-in, si intentas llamar a tu variable de esta forma: global.score ,al intentar compilar el proyecto deberia darte un error.
Te recomiendo no usar una variable global por cada score que quieras guardar, yo usaría un array, lista, mapa, lo que sea para almacenarlo. en lugar de tener global.score_congelado, global.score_congelado2, global.score_congelado3, etc, etc...
Algo así:
[gml]
//CREATE
global.my_score = 0;
global.scores_congelados = ds_list_create();
[/gml]
[gml]
//STEP
if (global.my_score >=500 && is_undefined(global.scores_congelados [| 0])) {
ds_list_add(global.scores_congelados , 500);
}
if (global.my_score >=700 && is_undefined(global.scores_congelados [| 1])) {
ds_list_add(global.scores_congelados , 700);
}
[/gml]
De este modo tendrias almacenado en la posicion 0 y 1 de tu lista los valores 500 y 700, pudiendo ampliar la lista lo que quieras.
Luego si quieres mostrar u operar con estos valores solo tendrias que acceder a la posicion de la lista que quieras.
Por cierto, ¿puede ser que no te estuviese funcionando porque estabas pisando continuamente el valor de global.score_congelado?
Si tenías algo así:
[gml]
if (global.score >500)
global.score_congelado= global.score;
[/gml]
global.score_congelado se estaría actualizando constantemente al valor de global.score
Espero que te sirva, un saludo.
Cita de: Tylag en Agosto 09, 2020, 09:26:49 AM
Buenas,
Lo primero de todo ten cuidado con llamar a tus variables igual que algunas palabras reservadas del Game Maker, en este caso score es una variable built-in, si intentas llamar a tu variable de esta forma: global.score ,al intentar compilar el proyecto deberia darte un error.
Te recomiendo no usar una variable global por cada score que quieras guardar, yo usaría un array, lista, mapa, lo que sea para almacenarlo. en lugar de tener global.score_congelado, global.score_congelado2, global.score_congelado3, etc, etc...
Algo así:
[gml]
//CREATE
global.my_score = 0;
global.scores_congelados = ds_list_create();
[/gml]
[gml]
//STEP
if (global.my_score >=500 && is_undefined(global.scores_congelados [| 0])) {
ds_list_add(global.scores_congelados , 500);
}
if (global.my_score >=700 && is_undefined(global.scores_congelados [| 1])) {
ds_list_add(global.scores_congelados , 700);
}
[/gml]
De este modo tendrias almacenado en la posicion 0 y 1 de tu lista los valores 500 y 700, pudiendo ampliar la lista lo que quieras.
Luego si quieres mostrar u operar con estos valores solo tendrias que acceder a la posicion de la lista que quieras.
Por cierto, ¿puede ser que no te estuviese funcionando porque estabas pisando continuamente el valor de global.score_congelado?
Si tenías algo así:
[gml]
if (global.score >500)
global.score_congelado= global.score;
[/gml]
global.score_congelado se estaría actualizando constantemente al valor de global.score
Espero que te sirva, un saludo.
perdona por la tardanza colega pero me sirvió de maravilla pude hacer todo un sistema usando tu código y te lo agradezco mucho!