Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: nonoroman en Febrero 19, 2018, 10:49:47 PM

Título: RESETEAR LA MEMORIA DE LAS PERSISTENCIAS DE LA ROOMS
Publicado por: nonoroman en Febrero 19, 2018, 10:49:47 PM
Buenas, otra vez ando por aqui.

El caso que traigo ahora es el siguiente, estoy usando la persistencia en las rooms, y todo de momento bien, pero al volver al menu principal y darle comenzar el juego de nuevo, me encuentro que las cosas estan donde las deje, no se han reiniciado a su primera posicion, porque la persistencia esta actuando.

Mi pregunta es la siguiente, hay alguna forma de desactivar o borrar la memoria de esa persistencia???

Porque he estado investigando, o por lo visto, al desactivar la persistencia de la room ya visitada, no consigue evitar que los objectos vuelvan a su posicion inicial.

room_set_persistent( ind, val );

"NOTA: ¡Esta función NO funcionará para desactivar la persistencia si la sala ya ha sido visitada! Una habitación persistente, una vez visitada, se guarda en la memoria y, para desactivar la persistencia, debe ir a esa habitación y establecer la variable room_persistent en false y luego salir de la habitación nuevamente."

Título: Re:RESETEAR LA MEMORIA DE LAS PERSISTENCIAS DE LA ROOMS
Publicado por: Clamud en Febrero 22, 2018, 07:22:53 PM
Eso es lo que debes hacer, ir a la room que quieres que deje de ser persistente ejecutar la línea
[gml]
room_persistent = false;
[/gml]

Puedes ir a la room solo durante un frame para que no se note el cambio. Lo mejor sería desactivar la persistencia justo antes de salir de la room.

¿Para qué necesitas la persistencia?, tal vez se puede implementar otro método.
Título: Re:RESETEAR LA MEMORIA DE LAS PERSISTENCIAS DE LA ROOMS
Publicado por: nonoroman en Febrero 23, 2018, 12:07:25 PM
Muvhas gracias Clamud, pero esa funcion ya me la conocia, pero en mi caso no creo que sea eficiente. Porque tengo hasta 5 niveles distintos donde el jugador sale y entra durante la partida, y hay objectos que va cambiando de posicion.

Para que esa funcion funcione, como bien dices deberia de entrar en cada una de las rooms, realizar la funcion y salir, al ser varias rooms esto crearia una imagen extraña.

Mi problema surge, porque si el usuario por el motivo que sea, desea iniciar una partida desde el comienzo, debo, reniciar todas las posiciones de todos los objectos de todas las habitaciones.

Asi que estoy probando con resetar todo el juego, y de momento parece que me funciona.

De todas formas gracias por contestar. Un saludo a toda la comunidad.  ;)

Cita de: Clamud en Febrero 22, 2018, 07:22:53 PM
Eso es lo que debes hacer, ir a la room que quieres que deje de ser persistente ejecutar la línea
[gml]
room_persistent = false;
[/gml]

Puedes ir a la room solo durante un frame para que no se note el cambio. Lo mejor sería desactivar la persistencia justo antes de salir de la room.

¿Para qué necesitas la persistencia?, tal vez se puede implementar otro método.