Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: luiiz en Enero 20, 2011, 12:37:16 AM

Título: reiniciar room desde otra room [SOLUCIONADO]
Publicado por: luiiz en Enero 20, 2011, 12:37:16 AM
Hola Makeros...Haciendo Un juego surgio la Necesidad de resetear una room desde otra ya intente de otras formas como reiniciarlo al final del room, al principio etc, y ninguna de esas formas me sirve, por lo que decidi reiniciar el room desde otro pero no encuentro la forma :(.

Necesito saber si hay alguna funcion que pueda hacer esto :P
Título: Re: reiniciar room desde otra room
Publicado por: Texic en Enero 20, 2011, 12:43:35 AM
Nop, no la hay, pero puedes crear un objeto persistente que convierta el room actual en persistente, desactive el dibujado automatico en la pantalla, se vaya al room, lo reinicie, instantaneamente vuelva al que estaba y lo ponga de vuelta a su estado original (persistente o no), reactive el dibujado automatico en la pantalla y se autodestruya, esto crearia la ilusion de que reiniciaste el room desde otro
Título: Re: reiniciar room desde otra room
Publicado por: luiiz en Enero 20, 2011, 01:00:36 AM
Nunca e utilizado esa opcion de dibujado automatico pero ya mas o menos se a que te refieres ahorita mismo lo pruebo ;) gracias
Título: Re: reiniciar room desde otra room
Publicado por: Texic en Enero 20, 2011, 01:08:02 AM
Lo que intentas es reiniciar un room persistente?? Porq no se reinician con room_restart, de hecho estoy viendo c?mo
Título: Re: reiniciar room desde otra room
Publicado por: Texic en Enero 20, 2011, 01:46:32 AM
Mmm... entonctr? una manera de hacerlo, duplicando el room a reiniciar, pero se pierde el ?ndice del anterior, por lo que deber?as llevarlo en una variable global en vez de referirte al mismo como room5 (ej). Al principio del juego pondrias global.room5=room5 y te referir?as al mismo siempre de la misma manera, si est?s dispuesto a hacer eso, entonces puedes "reiniciar un room desde otro". El problema es q una vez q el room inicia no se puede cambiarle el persistent, lo q supone un graan problema =/
Título: Re: reiniciar room desde otra room
Publicado por: luiiz en Enero 20, 2011, 01:50:51 AM
jahjah es un problemon cierto? xD llevo kasi todo el dia de allar una forma pero nomas no =/ seguire probando
Título: Re: reiniciar room desde otra room
Publicado por: lordgeorge en Enero 20, 2011, 02:53:48 AM
mmmm no s? si funciona pero me imagino que debieras:

- Crear una variable global en alg?n lugar (ej: global.resetroomjefe=0)
- Crear un objeto en la room que quieras reiniciar (obviamente debe ser persistente) y en su evento Step pones:
[gml]if(global.resetroomjefe){
    global.resetroomjefe=0
    room_persistent=0
    room_restart()
}[/gml]
- Y cuando quieras reiniciar la room desde otra simplemente pones global.resetroomjefe=1, y cuando vayas a esa room esta se reiniciar?

* Quis?s funcione mejor en el evento "Room Start" de ese objeto
** Recalco que no prob? el m?todo, es mi teor?a nada mas XD
Título: Re: reiniciar room desde otra room
Publicado por: Texic en Enero 20, 2011, 05:53:54 AM
El problema es q room_restart no reinicia rooms persistentes realmente, y aunq le saques el persistent (q por cierto se hace con una funcion, no asi), no lo hace si la room ya fue iniciada
Título: Re: reiniciar room desde otra room
Publicado por: luiiz en Enero 20, 2011, 11:48:26 PM
lorgeorge esa forma ya la habia utilizado antes pero el room no se reinicia solo me cambia la variable global de true a false o viseversa :S
Título: Re: reiniciar room desde otra room
Publicado por: lordgeorge en Enero 21, 2011, 12:50:50 AM
Entonces tengo 2 posibilidades, revisar bien lo que quieres lograr al reiniciar la room (quisas puedes reacomodar los objetos manualmente o simplemente no hacer lo que quieres), o bien puedes hacer un "reset game especial" (no se como llamarlo XD).

El "reset game especial" consiste en que debes tener en la primera room s?lamente un objeto. Ese objeto hace 2 cosas, si no existe un archivo externo llamado "temp.txt", pasa a la segunda room sin hacer nada. Pero si aquel archivo existe, lo abre y ejecuta todo lo que est? en el... generalmente en ese archivo pondr?s algo como:
[gml]//Contenido del archivo "temp.txt"
room_goto(room_asdf)
score=300
asdasd=asdas
//todo lo que quieres guardar al reiniciar el juego[/gml]

Entonces cuando quieras reiniciar una room persistente, creas ese archivo de texto con todo lo que quieres guardar (incluyendo la room a la que quieres ir), y cuando sea el momento de ir a la room persistente haces un game_restart() y al reiniciar el juego pasar?s directamente a donde quer?as, sin pasar por los menus, intros, etc.

Este es un m?todo algo extremo, pero funciona, incluso saqu? la idea de otro juego que hace aquello.

* Si haces este experimento, no olvides eliminar el archivo de texto luego de ser le?do.
Título: Re: reiniciar room desde otra room
Publicado por: Wadk en Enero 21, 2011, 01:31:21 AM
?No servir?a un script as??
[gml]// room_restart_(room)
var pr, arp, nr, nrp;
pr = room;
prp = room_persistent;
nr = argument0;
room_set_persistent(pr, true);
room_goto(nr);
nrp = room_persistent;
room_set_persistent(nr, false);
room_restart();
room_goto(pr);
room_set_persistent(nr, nrp);
room_set_persistent(pr, prp);[/gml]
Título: Re: reiniciar room desde otra room
Publicado por: Texic en Enero 21, 2011, 03:26:20 AM
Wow, tu script es tan parecido al q hice probando que asusta XD
Nop, no s? si lo tengo q repetir, pero room_set_persistent nada mas sirve para rooms aun no iniciados, una vez q fuiste al room, aunq ya no te encuentres en este, la funcion no hace nada, y como se sabe room_restart no sirve para rooms persistentes
Título: Re: reiniciar room desde otra room
Publicado por: Wadk en Enero 21, 2011, 07:10:50 PM
Es que no lo puedo creer XD.
?Qu? tal algo as??
[gml]// room_restart_(room)
var pr, nr;
pr = room;
nr = argument0;
room_goto(nr);
with (all){
    x = xstart;
    y = ystart;
}
room_goto(pr);[/gml]
No ser?a reiniciar el room del todo, pero tal vez sea suficiente...
Si no lo mejor me parece que ser?a no poner al room como persistente...
Título: Re: reiniciar room desde otra room
Publicado por: luiiz en Enero 22, 2011, 07:02:45 AM
Bueno de echo la opcion de restaurar las instancias a su punto de origen tambien la utilice pero no me funciona, algo anda mal en alguno de mis objetos, tendre que revisar codigo por codigo :S pero gracias a todos los que comentan, si llegara a encontrar el problema probar? con los codigos que postiaron ;)
Título: Re: reiniciar room desde otra room(Solucionado)
Publicado por: luiiz en Enero 22, 2011, 04:36:29 PM
Bueno Se?ores he solucionado el problema, creo que alguien puso un codigo como el que utilice pero hay algo curioso...

coloque una variable global:                  global.restart=false

y un objecto en el room a reiniciar:          obj_restart_room

al darle clic al boton de seleccion
de mision la variable global se
hacia verdadera.                              global.restart=true

una vez que se entra al room donde
existe el objeto obj_restart_room
la variable global se hace falsa y
se reinicia el room pero...
aqui viene lo curioso:                       
                                                     codigo anterior:

                                              evento step (obj_restart_room)
                                              if global.restart=true
                                              {
                                              global.restart=false
                                              room_persistent=false
                                              room_restart()
                                              room_persistent=true
                                              }


                                                    codigo corregido:

                                              evento step (obj_restart_room)
                                              if global.restart=true
                                              {
                                              global.restart=false
                                              room_persistent=false
                                              room_restart()
                                              }

como pueden ver el codigo es el mismo solo que en el anterior agregaba al final el room_persistent=true para hacerlo persistente de nuevo pero de algun modo no se porque el codigo no funcionaba =S, desidi quitarle ese pedaso y me anda perfecto y el room una vez reiniciado se coloca persistente de nuevo automaticamente :D les dejo mi solucion apor si algun dia se atoran en lo mismo jhejhe saludos =)