Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
Nike : Jusqu’à 50% sur les articles de ...
Voir le deal

 

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

Aller en bas 
3 participants
AuteurMessage
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! EmptyMar 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
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! EmptyMar 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é...
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! EmptyMer 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.
Revenir en haut Aller en bas
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
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! EmptyMer 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);
}
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! EmptyMer 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
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! EmptyMer 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
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! EmptyMer 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).
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! EmptyJeu 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
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! EmptyJeu 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.
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Contenu sponsorisé





Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty
MessageSujet: Re: Grosse colle ! Système de Sauvegarde juste avant de Quitter !   Grosse colle ! Système de Sauvegarde juste avant de Quitter ! Empty

Revenir en haut Aller en bas
 
Grosse colle ! Système de Sauvegarde juste avant de Quitter !
Revenir en haut 
Page 1 sur 1

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: