Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DarkKRuleR en Agosto 16, 2010, 12:17:30 PM

Título: Enviar datos a partidas guardadas
Publicado por: DarkKRuleR en Agosto 16, 2010, 12:17:30 PM
Buenas! Pos ver?n, el problema es... yo puedo cargar dos partidas... hay dos bloques para guardar partida. Antes de cargar, en el men? principal, est? el objeto obj_S_contr, el que tiene todos los datos principales, y es persistente, y obj_mensajero que tambi?n. Mi idea era que ?ste objeto enviara mensajes a partidas guardadas. Me explico: yo quiero que, al cargar partida, y s?lo si selecciono tal opci?n, el objeto mensajero que habia antes de cargar la partida viaje hacia la partida guardada, si no la selecciono cargo la partida normalmente. Es una locura no? Porque yo quiero que no sea lo mismo, jugar la partida cargandola normal, que jugarla al cargarla con esa opcion. Pero principalmente es por un problema: desde el menu principal, tengo que poder elegir jugar a un minijuego del juego real: ?STO implica cargar la partida normal, y una vez cargada que me env?e a tal room. Pero, para ?sto, necesito poder enviar datos, como un objeto, o manejar las variables de la partida guardada antes o despu?s de cargarla. La cosa es que ese envio solo funcione si en el menu principal lo selecciono, para cargar la partida con una configuracion especial que no tendria si la cargo normalmente. Es posible? Esque veo la ?nica manera... (espero haberme explicado bien  :-[)
Título: Re: Enviar datos a partidas guardadas
Publicado por: Texic en Agosto 17, 2010, 12:34:08 AM
Tendr?as que usar recursos externos al juego, como el registro de windows, un ini, un txt...
Lo m?s util seria un txt, y que con este se haga un execute_string(), asi pod?s hacer que el juego haga lo que se te cante una vez q carga
Título: Re: Enviar datos a partidas guardadas
Publicado por: DarkKRuleR en Agosto 17, 2010, 04:09:52 AM
Mmm .. pero, el jugador podria modificar el txt?! si puede, no vale!

Lo que quiero, en mi juego, est? el juego normal (todas las rooms son persistentes). Durante el juego, hay varios minijuegos. Lo que yo quiero es, al cargar la partida y seleccionar un minijuego, que cargue la partida, y enseguida me cambie, desde donde salga, a la room del minijuego, ya que necesito los datos de ?sa partida para el minijuego. Y al terminar, regresar al menu principal, cuando, si jugara la partida normal, al terminar seguiria jugando, pero como hago ?se ALGO antes de iniciar partida, es  por eso que regresa. Como dices, podr?a dar datos a un archivo txt, cargar la partida y hacer tal cosa en ?sta? Pero, el jugador no tendria que poner modificar ?sto!
Título: Re: Enviar datos a partidas guardadas
Publicado por: Texic en Agosto 17, 2010, 03:59:55 PM
En realidad, si creas el txt en la carpeta temporal es bastante inaccesible para un usuario normal, y adem?s ser?a por un muy corto per?odo de tiempo que el txt existir?a, s?lo para pasar los datos de la partida actual a la partida guardada, luego lo borras, y es como si nada hubiera pasado, con eso podr?as lograr algo asi:

PD: El execute_shell te va a llevar a la carpeta temporal, para que veas que ni se ve el txt con lo r?pido que es el proceso
Título: Re: Enviar datos a partidas guardadas
Publicado por: DarkKRuleR en Agosto 17, 2010, 06:10:31 PM
Wow, por lo que he probado funciona! He guardado una partida con el numero 12 y he creado un meteoro pulsando espacio (code que hice yo), luego he hecho partida nueva con el numero 2, he cargado la anterior, y salia la del meteoro con los datos de antes de cargar! Es justo lo que necesito, voy a estar un rato probando aver si consigo implementarlo, gracias!
y si, no da tiempo, ni siquiera sale el archivo por lo que veo  ;)

edit- le doy vueltas y no consigo solucionarlo.. lo que hago es esto:

case(7):

a=file_text_open_read(temp+"\check.txt")
check=file_text_read_string(a)
file_text_close(a)
file_delete(temp+"\check.txt")
if string(check)="1"
{
a=file_text_open_read(temp+"\run.txt")
while !file_text_eof(a)
{
str=file_text_read_string(a)+" "
file_text_readln(a)
}
file_text_close(a)
execute_string(str)
}
file_delete(temp+"\run.txt")

c=file_text_open_write(temp+"\check.txt")
file_text_write_string(c,1)
file_text_close(c)
a=file_text_open_write(temp+"\run.txt")
file_text_write_string(a,"global.load["+string(block)+"]="+string(global.load[block]));
file_text_close(a)
if block=1 {global.load[1]=1; game_load("savegame bloc 1");}
if block=2 {global.load[2]=1; game_load("savegame bloc 2");}
break;


mas o menos, lo que quiero es que en el documento se guarde la var global.load[1] en el caso que cargue en el bloque 1, al final creo que hago bien y cargo su valor, pero.. donde se crea la variable? no consigo saber donde se crea el documento, donde se escribe la variable...
(no pregunto porque la respuesta siempre es si, en lugar de preguntar pongo 1, no te pide si pasar datos o no)

si, lo tengo que hacer todo junto, crear el documento con la variable, cargar partida, cargar el documento y borrarlo  :o

AH, otra cosa, si adem?s del valor de una variable numerica tambien quiero pasar el valor de una segunda variable, tengo que hacer todo el code de nuevo o la cosa se complica?
Título: Re: Enviar datos a partidas guardadas
Publicado por: DarkKRuleR en Octubre 09, 2010, 09:58:21 PM
Bueno, he estado pensando, y creo que no es una buena opci?n la de ir a una partida guardada y coger datos, aunque el ejemplo era muy bueno gracias =)
pero creo que ser?a mejor, crear un archivo txt que guarde dos variables, nada dentro del juego, el juego siempre cargaria las dos variables del archivo txt antes de acceder al minijuego, y si haces record, guardaria el record siempre en el archivo txt. Bueno, serian 3-4 variables a guardar. Ese archivo claro, deber?a estar en una carpeta inaccesible, por ejemplo, se podr?a guardar dentro de mi pc, en archivos de sistema o asi? Esque en archivos temporales, esos se borrarian alguna vez, se podr?a checar al principio del juego si existe el archivo, y si no crearlo en archivos del sistema u otra carpeta asi lejana, que el usuario ni sabria donde estar?a metido, y como guardar alli un par de variables y checarlas luego? O no se puede? Porque creo que te restringen entrar en archivos de sistema...
Título: Re: Enviar datos a partidas guardadas
Publicado por: hernis en Noviembre 08, 2010, 01:38:20 AM
te sugiero ke uses mejor los archivos ini son faciles de manejar
aki hay un tutorial acerca de como usarlos
http://www.comunidadgm.org/index.php?topic=10512.0

en cuanto al directorio puedes usar esto
[gml]variable = environment_get_variable("APPDATA")[/gml]
es una funcion ke obtiene el directorio donde la mayoria de los programas guardan sus datos
en windows 7 la carpeta se encuentra aki
C:\Users\Usuario Actual\AppData\Roaming
en xp la verdad no recuerdo donde esta ese directorio xro se usa lo mismo