Veran, digamos que tengo un RPG en el que hay una pantalla de escenario y otra de combate.
El combate se realiza en el room de escenario, solo que cambiando al fondo de batalla.
tengo una variable global.escenario, que almacena el escenario en modo combate.
Y al comienzo del room, pongo este código para almacenar el fondo del escenario:
global.f=layer_background_get_id(layer_get_id("Background"))
global.vuelta=layer_background_get_sprite(global.f)
Cuando entro en un combate, uso esto para cambiar al fondo de combate:
layer_background_change(global.f,global.escenario)
Por cierto, he hecho que nada más cargar se ejecute este código:
global.f=layer_background_get_id(layer_get_id("Background"))
show_message(global.f)
Me da -1, pero si lo uso al cambiar a otro room, me da 82.
Una vez el combate acaba, uso esto:
layer_background_change(global.f,global.vuelta)
Eso si, he notado que si por ejemplo guardo (game_save) y salgo del juego en mitad de un combate, vuelvo a ejecutar el juego y cargo esa partida (game_load), una vez gano el combate, el fondo no cambia al del escenario.
Este problema se soluciona si cambio a otro room.
Por cierto, he hecho que al cargar partida se ejecute este código:
global.f=layer_background_get_id(layer_get_id("Background"))
show_message(global.f)
Me da -1, pero si lo uso al cambiar de room, me da 82.
He actualizado para incluir un proyecto en el que se puede ver lo que digo.
El programa permite cambiar de fondo pulsando izquierda y derecha, mientras que los botones de izquierda y derecha guarda y carga la partida.
Guarden, carguen y intenten cambiar de fondo para ver el problema.
Te recomiendo tratar de evitar usar las funciones Game_save y Game_load de GM como método de almacenamiento definitivo, ya que son muy limitadas y pueden dar problemas.
La misma documentación te recomienda solo usarlas como buffer para cargar partidas cuando sigues dentro del juego, ya que al salir, muchos datos del juego no se guardan con Game_Save
Cita de: Frenzy en Junio 09, 2019, 06:58:00 PM
Te recomiendo tratar de evitar usar las funciones Game_save y Game_load de GM como método de almacenamiento definitivo, ya que son muy limitadas y pueden dar problemas.
La misma documentación te recomienda solo usarlas como buffer para cargar partidas cuando sigues dentro del juego, ya que al salir, muchos datos del juego no se guardan con Game_Save
En mi caso lo que quiero es hacer como Dark Souls, en el cual el juego al salir guarda tu posición actual para que una vez regreses el juego este tal y como lo hayas dejado.
Si la cosa fuera guardar simplemente un record si que usaria otro sistema más eficiente, pero en este caso lo suyo es usar game_save.