Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 Grosse colle ! Système de Sauvegarde juste avant de Quitter !

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 259

Date d'inscription : 24/05/2010


MessageSujet: 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 ?

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: 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é...

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2431

Date d'inscription : 01/08/2006


MessageSujet: 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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: 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);
}

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 259

Date d'inscription : 24/05/2010


MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 259

Date d'inscription : 24/05/2010


MessageSujet: 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 ) ?


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2431

Date d'inscription : 01/08/2006


MessageSujet: 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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 259

Date d'inscription : 24/05/2010


MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2431

Date d'inscription : 01/08/2006


MessageSujet: 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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Contenu sponsorisé




MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Aujourd'hui à 19:17

Revenir en haut Aller en bas
 
Grosse colle ! Système de Sauvegarde juste avant de Quitter !
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Je voulais juste te voir une derniere fois... tu ne m'en veux pas?
» liste n°2 (la dernière juste avant le nouveau dex :D)
» Le jeu s'arrête en plein chargement d'une partie.
» Recherche sauvegarde monster hunter freedom 2 pr mes dessin
» [TUTO] Changer la pile de sauvegarde de son jeu Super Nes

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: