| Grosse colle ! Système de Sauvegarde juste avant de Quitter ! | |
|
|
Auteur | Message |
---|
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Mar 18 Aoû 2015 - 9:50 | |
| Bonjour, Voici mon problème, je voudrais proposer au choix un mode de difficulté plus réaliste dans mon jeu qui consiste à ne pouvoir sauvegarder la partie UNIQUEMENT avant de quitter. Là est mon problème, car en écrivant : - Code:
-
buffer=SaveTextBox.Text; SaveGameSlot (index + 100, buffer); gSave.Visible=false; gSavetextbox.Visible=false; QuitGame(0); Ca ne sauvegarde pas. Visiblement l'option QuitGame est prioritaire sur toutes les autres. Comment faire ? J'ai bien tenté alors un truc du genre - Code:
-
if(gSave.Visible==true){ buffer=SaveTextBox.Text; SaveGameSlot (index + 100, buffer); gSave.Visible=false; gSavetextbox.Visible=false;} if(gSave.Visible==false) QuitGame(0); Ca ne fonctionne pas non plus. Une idée ? Une ruse ? Qqch ? |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Mar 18 Aoû 2015 - 18:44 | |
| D'aprés l'aide : - Citation :
- NOTE : La partie ne sera pas sauvegardée immédiatement ; la fonction attendra que le script ait fini son exécution avant de sauvegarder.
Donc le comportement observée est normale. Je ne me souviens plus de si la solution usuelle est un Wait(1) bien placé, ou bien de créer un booléen, et de le checker dans un repeatidly_execute... Espérons que Kitai passe par là! Sinon, sache que si l'utilisateur quitte le jeu via alt + F4, ou en fermant la fenêtre, ton systéme de sauvegarde ne sera pas appelé... L'event on_game_quit est réclamé depuis pas mal de temps, mais n'est pas implémenté... |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Mer 19 Aoû 2015 - 1:28 | |
| - Billbis a écrit:
- Je ne me souviens plus de si la solution usuelle est un Wait(1) bien placé, ou bien de créer un booléen, et de le checker dans un repeatidly_execute...
Il y a en effet plusieurs solutions envisageables, personnellement je choisirais la solution du booléen proposée par Billbis. Mais... - Billbis a écrit:
- Sinon, sache que si l'utilisateur quitte le jeu via alt + F4, ou en fermant la fenêtre, ton systéme de sauvegarde ne sera pas appelé...
L'event on_game_quit est réclamé depuis pas mal de temps, mais n'est pas implémenté... Pour le coup, j'utiliserais en plus un bloc de sauvegarde à chaque cycle de jeu (dans la fonction repeatedly_execute) et je proposerais au re-lancement du jeu de relancer la sauvegarde automatique si le joueur le veut. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Mer 19 Aoû 2015 - 8:10 | |
| - Kitai a écrit:
- Pour le coup, j'utiliserais en plus un bloc de sauvegarde à chaque cycle de jeu (dans la fonction repeatedly_execute) et je proposerais au re-lancement du jeu de relancer la sauvegarde automatique si le joueur le veut.
Malin ! Je sauvegarderai plutôt une fois par seconde seulement (ou une fois toute les 5 secondes ?), pour limiter l'usage disque. Et du coups plus besoin de sauvegarder en quittant ! EDIT: Tout bien réfléchit, ta deuxième solution devrait fonctionner en rajoutant un else. - Code:
-
if(gSave.Visible==true){ buffer=SaveTextBox.Text; SaveGameSlot(index + 100, buffer); gSave.Visible=false; gSavetextbox.Visible=false; } else if(gSave.Visible==false) { QuitGame(0); } |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Mer 19 Aoû 2015 - 9:17 | |
| oh putain mais oui, le else if ! Je vais tester
Edit: Oui mais non, le else if, ça voudrait dire que je RE-click sur le bouton et que cette fois-ci, ça quitte le jeu. Ce qui aura comme conséquence que lorsque je vais ouvrir le jeu il va se bloquer sur la seule possibilité de cliquer sur le bouton pour quitter. |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Mer 19 Aoû 2015 - 9:28 | |
| Non il me faut un bloc bidule machin mais j'ai peur de faire une sauvegarde automatique et que ça fasse ramer le jeu à mort ou bien comment avoir la possibilité d'avoir plusieurs parties en route sans que les sauvegardes autos ne se superposent ?
La solution booléenne ça donnerait quoi ?
J'y ai vaguement pensé mais je n'ai pas trouvé de solution viable. Le truc que j'ai fait c'est ajouté une bool du genre bool click
Si on sauve, ça déclenche click= true; et si click= true, ça quitte. Le problème reste le même, ça lance le script tout d'un coup et ça quitte sans sauver. Peut-être utiliser la bool avec le repeatedly_execute ? Mais comment faire pour redémarrer une partie sans que ça quitte en boucle (oui car la bool sera sauvegardé en etat ) ?
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Mer 19 Aoû 2015 - 12:12 | |
| - filoulefilou a écrit:
- Le problème reste le même, ça lance le script tout d'un coup et ça quitte sans sauver.
Peut-être utiliser la bool avec le repeatedly_execute ? Mais comment faire pour redémarrer une partie sans que ça quitte en boucle (oui car la bool sera sauvegardé en etat ) ? Ah oui, voilà le problème, je me souvenais plus. Une solution serait d'ajouter un on_event avec eEventRestoreGame. Tu pourrais alors remplacer ta booléenne click par un entier que tu définis à 2 par exemple et qui te permet d'attendre 2 cycles de jeu avant de quitter. L'astuce étant qu'entre ces deux cycles, si tu es dans le cas d'une partie chargée, la fonction on_event devrait être appelée et tu peux y redéfinir la variable click à -1 par exemple, empêchant le déclenchement du QuitGame dans repeatedly_execute. - filoulefilou a écrit:
- Non il me faut un bloc bidule machin mais j'ai peur de faire une sauvegarde automatique et que ça fasse ramer le jeu à mort ou bien comment avoir la possibilité d'avoir plusieurs parties en route sans que les sauvegardes autos ne se superposent ?
Je doute que ça fasse ramer le jeu, et si c'est le cas, comme le suggère Billbis, sauvegarde tous les N cycles au lieu de le faire chaque cycle. Je ne suis pas sûr de bien comprendre ta question sur "plusieurs parties en route sans que les sauvegardes autos ne se superposent", mais la solution pourrait passer par utiliser plusieurs blocs dédiés aux sauvegardes automatiques, et pour chaque partie tu détermines quel bloc utiliser sur la base d'un fichier de configuration externe (où tu augmentes la valeur d'un paramètre à chaque partie chargée par exemple). _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Jeu 20 Aoû 2015 - 12:20 | |
| - Citation :
- Une solution serait d'ajouter un on_event avec eEventRestoreGame. Tu pourrais alors remplacer ta booléenne click par un entier que tu définis à 2 par exemple et qui te permet d'attendre 2 cycles de jeu avant de quitter. L'astuce étant qu'entre ces deux cycles, si tu es dans le cas d'une partie chargée, la fonction on_event devrait être appelée et tu peux y redéfinir la variable click à -1 par exemple, empêchant le déclenchement du QuitGame dans repeatedly_execute.
Là, j'avoue, faut m'aider. Ah ah, je comprends pas bien |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Jeu 20 Aoû 2015 - 18:03 | |
| - Code:
-
// Une variable globale qui fait quitter le jeu lorsqu'elle vaut 0 int quit = -1;
// Une fonction que tu appelles lorsque tu veux quitter en sauvegardant function SaveAndQuit(int slot, String description) { SaveGameSlot(slot, description); quit = 2; // Dans 2 cycles de jeu, on quitte }
function repeatedly_execute() { if (quit == 0) QuitGame(0); else if (quit > 0) quit--; }
// Lorsqu'on est dans le cas d'une partie chargée, on passe quit à -1 function on_event(EventType event, int data) { if (event == eEventRestoreGame) quit = -1; } L'idée c'est qu'en appelant la commande SaveAndQuit, la partie sera sauvée avec la variable quit qui vaut 2. Lorsque tu rechargeras cette partie donc, la fonction on_event sera appelée alors que la variable quit sera toujours à 2 (ou 1 si un cycle s'est exécuté entre-temps, ça je sais pas). Du coup tu en profites pour la redéfinir à -1 histoire de prévenir l'exécution dans le repeatedly_execute. En dehors de ça, l'exécution normale de SaveAndQuit fait qu'au bout de 2 cycles de jeu (1/20ème de second environ) la fonction QuitGame sera appelée. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
Contenu sponsorisé
| Sujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter ! | |
| |
|
| |
| Grosse colle ! Système de Sauvegarde juste avant de Quitter ! | |
|