Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Herni en Junio 08, 2010, 01:28:26 AM

Título: C?mo comprobar que un save pertenece a nuestro juego?
Publicado por: Herni en Junio 08, 2010, 01:28:26 AM
Buenas noches a tod@s,

Probando un sistema propio de cargar/salvar partidas me he encontrado con este problema haciendo pruebas para forzar errores.

"This is a save file for a different game!" :'(

El caso es que hago todo tipo de comprobaciones y chequeos cuando salvo y cuando cargo partidas, pero se me escapa el c?digo que me permita comprobar este tipo de error para que no salga la ventana de error est?ndar del GameMaker.

Alguna idea de si hay alguna funcion en plan game_check(filename)? :-X

Gracias a tod@s, un saludo,
- Herni
Título: Re: C?mo comprobar que un save pertenece a nuestro juego?
Publicado por: soccer2008 en Junio 08, 2010, 01:43:37 AM
prueba desactivando mensajes de error en la configuraci?n del gm.
Título: Re: C?mo comprobar que un save pertenece a nuestro juego?
Publicado por: Herni en Junio 08, 2010, 03:16:45 AM
Bueno... y una soluci?n menos cutre que me permita a m? gestionar el error? :'(

Vamos... lo digo por avisar al usuario en plan mensajito => "mel?n que te has equivocado de save, que el que me dices es de otro juego".

Y respecto a la opci?n del GM, prefiero de momento mantener el aviso de errores activado, al menos hasta que ?l proyecto lo de por completado.

Un saludo,
- Herni
Título: Re: C?mo comprobar que un save pertenece a nuestro juego?
Publicado por: Herni en Julio 18, 2010, 09:51:50 AM
Subo este post m?o que llevaba tiempo sin respuesta y es que me ha vuelto a suceder lo mismo :'(

Y no s? c?mo comprobarlo para que salte un error personalizado por m?, no ese mensaje tan feo que aparece :o


Gracias a tod@s, un saludo,
- Herni
Título: Re: C?mo comprobar que un save pertenece a nuestro juego?
Publicado por: Gabriel Moreno en Julio 18, 2010, 05:25:32 PM
Lo compruevas porque es save casi siempre lleva un nombre ej: Si presionas en la herramienta Save Game en main2...te pregunta; Filename="aqui tu pones el nombre del savegame"
Puedes poner elnombre de tu juego o cosas asi.
Título: Re: C?mo comprobar que un save pertenece a nuestro juego?
Publicado por: Herni en Julio 18, 2010, 06:42:43 PM
Cita de: Gabriel Moreno en Julio 18, 2010, 05:25:32 PM
Lo compruevas porque es save casi siempre lleva un nombre ej: Si presionas en la herramienta Save Game en main2...te pregunta; Filename="aqui tu pones el nombre del savegame"
Puedes poner elnombre de tu juego o cosas asi.

El caso es que yo tengo configurados unos script m?os en los que:
* Salvo pulsando F5
* Cargo pulsando F6

En ambos casos le abro la ventana est?ndar de di?logo de "Abrir" y "Guardar c?mo" para que ?l pueda elegir la partida que quiere Abrir, o al salvar que le pueda poner el nombre que quiera.

Yo de base en los cuadros de di?logo s?lo muestro las extensiones ".sav" y adem?s cuando le da a guardar, le presento un nombre de archivo por defecto generado a partir de los siguientes datos:
* Nombre del Juego
* Fecha a la inversa (para que queden ordenados)
* Hora

De manera que un archivo save por defecto ser?a con estos formatos:
Juego-20100614-115143.sav
Juego-20100718-183121.sav

As? quedan bien ordenados en la carpeta.


El problema es que si alguien le da por abrir otro archivo .sav de vete a saber de d?nde lo ha sacado, me da este error:
"This is a save file for a different game!"


Y si abre otro archivo .sav que no tiene nada que ver con una partida de un juego hecho con GameMaker, me da este otro error:
"Cannot load game saved with other version."


Y es justo lo que me gustar?a controlar, para presentarle yo un mensaje de error personalizado y volver al juego.

?Alguna manera o idea?


Gracias, un saludo,
- Herni
Título: Re: C?mo comprobar que un save pertenece a nuestro juego?
Publicado por: Wadk en Julio 19, 2010, 05:18:46 AM
?Aj?aa! ?Lo logr?!
Comprob? que el ID del juego se guarda en los bytes 4, 5, 6 y 7 de cada partida. As? cre? este script para comprobar si la partida corresponde al juego o no :)
Código (file_is_savegame) [Seleccionar]
//file_is_savegame(file);
//file: El archivo a comprobar.
//Devuelve: 1 Si el archivo es una partida guardada que corresponde al juego.
//          0 Si no lo es.

var f,i,byte,ret;
f=file_bin_open(argument0,0);

ret=0;
for(i=0;i<4;i+=1){
    file_bin_seek(f,4+i);
    byte=file_bin_read_byte(f);
    byte*=power(256,i);
    ret+=byte;
}

file_bin_close(f);
return ret==game_id;
Título: Re: C?mo comprobar que un save pertenece a nuestro juego?
Publicado por: Herni en Julio 19, 2010, 05:39:08 AM
Cita de: Wadk en Julio 19, 2010, 05:18:46 AM
?Aj?aa! ?Lo logr?!
Comprob? que el ID del juego se guarda en los bytes 4, 5, 6 y 7 de cada partida. As? cre? este script para comprobar si la partida corresponde al juego o no :)
Código (file_is_savegame) [Seleccionar]
//file_is_savegame(file);
//file: El archivo a comprobar.
//Devuelve: 1 Si el archivo es una partida guardada que corresponde al juego.
//          0 Si no lo es.

var f,i,byte,ret;
f=file_bin_open(argument0,0);

ret=0;
for(i=0;i<4;i+=1){
    file_bin_seek(f,4+i);
    byte=file_bin_read_byte(f);
    byte*=power(256,i);
    ret+=byte;
}

file_bin_close(f);
return ret==game_id;


Uuuuoooooo... mola :-*

Voy a ver si puedo apa?arlo con la funci?n est?ndar de Cargar saves del GM, para que haga un chequeo previo.


Muchas gracias Wadk, un saludo,
- Herni