Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -29%
DYSON V8 Origin – Aspirateur balai sans fil
Voir le deal
269.99 €

 

 Interface de chargement/enregistrement avec Vignette

Aller en bas 
+5
Jorkz
Dragonsquall
Kromagnon
Shai-la
Asraroth
9 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMar 5 Déc 2006 - 13:00

Voici une présentation de l’interface de sauvegarde/chargement que j’ai réalisé pour le jeu « Mashin Choz ». Ceci est une méthode, et il en existe certainement bien d’autres…

1°) Les GUI

le 1er GUI est le menu qui propose de charger ou d’enregistrer, de reprendre le jeu, ou de quitter. On pourrait aussi ajouter un bouton « options » pour gérer le volume de la musique et du bruitage, la rapidité du texte, etc.

Interface de chargement/enregistrement avec Vignette Pic1


le 2ème GUI (le plus compliqué) est celui qui va présenter les vignettes pour charger ou enregistrer la partie en cours. Ce n’est pas la peine de faire 2 GUIs, un pour charger et un autre pour enregistrer. Une simple variable nous indiquera dans quelle condition ce GUI est utilisée. On pourra ainsi modifier le texte du bouton « Action » pour qu’il indique : « Enregistrer » ou « Charger »

Interface de chargement/enregistrement avec Vignette Pic2


Les 2 derniers GUIs ne sont que des boites de dialogue pour demander la confirmation de l’écrasement d’une partie déjà sauvegardée et la confirmation pour quitter le jeu. Rien de passionnant :roll:

Interface de chargement/enregistrement avec Vignette Pic4

Interface de chargement/enregistrement avec Vignette Pic5


Je reviens maintenant plus en détail sur le 2ème GUI. Voilà comment il est construit…
Interface de chargement/enregistrement avec Vignette Pic3
Les boutons noirs du fond sont plus hauts et plus larges de 2 pixels pour encadrer le bouton qui se trouve par dessus. Ils vont servir à afficher le cadre jaune qui indique que le joueur a sélectionné cette vignette.
Les boutons du dessus (avec une jolie texture moirée bleue made-in Paint Shop Pro sur l’image 🐰 ) vont afficher les vignettes si une sauvegarde correspondante existe.

Voici à quoi ressemble le Sprite Manager pour ces GUIs :

Interface de chargement/enregistrement avec Vignette Pic6


Dernière édition par le Jeu 18 Jan 2007 - 13:17, édité 1 fois
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMar 5 Déc 2006 - 13:06

2°) Un peu de théorie

Une notion relativement importante pour tout bien comprendre : Les pointeurs
Les pointeurs sont des petits êtres qui vivent dans la mémoire vive de votre ordinateur et qui ne font que de pointer du doigt quelque chose qu’on leur a attribué pour indiquer la position de ce quelque chose. C’est leur métier.
Plus abstraitement et succinctement, un pointeur est une variable qui indique une adresse en mémoire. (généralement, l’adresse d’une autre variable, d’une image, d’une chaîne de caractère, etc..).

A l’assaut des « sprites dynamiques »
Rappel : Un sprite est une petite image rectangulaire qui représente un objet ou un personnage. Dans le cas d’un objet ou d’un personnage en mouvement, il y a plusieurs sprites qui s’enchaînent à l’affichage afin de créer l’illusion du mouvement (par exemple, un personnage qui marche). Le sprite se caractérise aussi par une couleur « transparente » qui permet de ne pas afficher un gros rectangle au beau milieu d’un « background ». Sous AGS, çà évite de voir une boite d’une horrible couleur fushia autour de notre héros qui se déplace à travers la « room ». Mais bon… c’est le même principe dans tous les jeux en 2D.

AGS permet de créer des sprites dynamiques. C’est à dire, des sprites qui ne font pas partie de notre banque de sprites dans le menu sprite manager.

C’est quoi la différence ? Et à quoi çà sert ?
Bonne question ! En théorie, tous les sprites qui sont dans le «Sprite manager » seront chargés dans la mémoire de l’ordinateur lorsque le jeu sera lancé. Alors qu’un sprite dynamique n’existe pas ENCORE dans le jeu. Il va donc nous falloir le créer « dynamiquement ». C’est à dire, allouer (ou réserver) une place en mémoire et aller l’occuper avec un petit dessin. Dans ce tutoriel, ce qui nous intéresse est de créer une petite image (vignette) de l’écran du jeu.
Pour créer et utiliser un sprite dynamique, il nous faut un pointeur. Ce pointeur n’est qu’une variable qui indique où se trouve le sprite (ou futur sprite) dans la mémoire de l’ordinateur.

:sleep:
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMar 5 Déc 2006 - 15:55

3°) Le script (enfin !)

Dans le script global, et dans la fonction « on_key_press », voilà ce que çà donne :

Code:
if (keycode==363) {  // touche F5 enfoncée
  gInterface.Clickable = false;  // désactivation de l’interface du jeu
  PauseGame();                  // Mise en pause du jeu
  gOptions.Visible = true;      // Affichage du 1er GUI (charger/sauver,etc..)
}

En résumé, si je joueur appuie sur la touche F5 (cf. les jeux Lucas-Art), on affiche le menu…


Pour « déclarer » un pointeur de sprite dynamique, c’est :
Code:
DynamicSprite* monsprite;
DynamicSrpite est la catégorie de variable… Ca pourrait être un Int, un String, un Object, etc…l’astérisque juste après, indique qu’il s’agit d’un pointeur.. et « monsprite » est le nom de mon pointeur.

Tout en haut du Global Script, j’ai déclaré les variables suivantes :

Code:
DynamicSprite* tempsprite1;  // Pointeurs des Sprites pour les 6 vignettes
DynamicSprite* tempsprite2;
DynamicSprite* tempsprite3;
DynamicSprite* tempsprite4;
DynamicSprite* tempsprite5;
DynamicSprite* tempsprite6;
int modeLoadSave;            // 1 = charger / 2 = enregistrer
int SelPic;                  // N° de la vignette sélectionnée par le joueur

Passons aux fonctions associées aux boutons des GUI…

a) Le GUI "Option"
La fonction associée au bouton « Quitter le jeu »
Code:
function BtOptQuit_Click(GUIControl *control, MouseButton button) {
  gConfquit.Visible = true;  // on affiche le GUI de confirmation
}

La fonction associée au bouton « Reprendre »
Code:
function BtOptPlay_Click(GUIControl *control, MouseButton button) {
    gOptions.Visible = false;              // Le GUI d’Option disparaît
    gInterface.Clickable = true;            // Le GUI du jeu redevient actif
    if (IsGamePaused() == 1) UnPauseGame(); // On stop la mise en pause du jeu
}

La fonction associée au bouton « Charger »
Code:
function BtOptLoad_Click(GUIControl *control, MouseButton button) {
  modeLoadSave = 1;          // mode Charger
  BtAction.Text = "Charger"; // On change le text du bouton "Action"
  gOptions.Visible = false;  // On fait disparaître le GUI d’options
  gLoadsave.Visible = true;  // On affiche le GUI de Chargement/Sauvegarde
  SelPic = 0;                // Pas de vignette selectionnée
  spic1.NormalGraphic = 324; // tout les boutons qui servent au cadre sont remis en noir
  spic2.NormalGraphic = 324; // avec le sprite n°324 du sprite manager…
  spic3.NormalGraphic = 324; // (c'est juste un rectangle noir à la bonne taille)
  spic4.NormalGraphic = 324;
  spic5.NormalGraphic = 324;
  spic6.NormalGraphic = 324;

  if (Game.GetSaveSlotDescription(1) != null) {  // S’il existe une sauvegarde n°1
    // On créé un sprite dynamique à partir de cette sauvegarde. Le sprite est en même temps redimensionné
      tempsprite1 = DynamicSprite.CreateFromSaveGame(1,64,40); 
      if (tempsprite1 != null) {                  // Si la création du sprite a bien fonctionnée
        pic1.NormalGraphic = tempsprite1.Graphic;  // l’image du bouton 1 prend le sprite
        pic1.Clickable = true;                    // le bouton 1 devient actif
      }
  } else pic1.Clickable = false;                  // sinon, le bouton 1 passe inactif


  // Même chose pour les 5 autres boutons/vignettes

  if (Game.GetSaveSlotDescription(2) != null) {
      tempsprite2 = DynamicSprite.CreateFromSaveGame(2,64,40);
         if (tempsprite2 != null) {
        pic2.NormalGraphic = tempsprite2.Graphic;
        pic2.Clickable = true;
         }
  } else pic2.Clickable = false;

  if (Game.GetSaveSlotDescription(3) != null) {
      tempsprite3 = DynamicSprite.CreateFromSaveGame(3,64,40);
         if (tempsprite3 != null) {
        pic3.NormalGraphic = tempsprite3.Graphic;
        pic3.Clickable = true;
         }
  } else pic3.Clickable = false;

  if (Game.GetSaveSlotDescription(4) != null) {
      tempsprite4 = DynamicSprite.CreateFromSaveGame(4,64,40);
         if (tempsprite4 != null) {
        pic4.NormalGraphic = tempsprite4.Graphic;
        pic4.Clickable = true;
         }
  } else pic4.Clickable = false;

  if (Game.GetSaveSlotDescription(5) != null) {
      tempsprite5 = DynamicSprite.CreateFromSaveGame(5,64,40);
         if (tempsprite5 != null) {
        pic5.NormalGraphic = tempsprite5.Graphic;
        pic5.Clickable = true;
         }
  } else pic5.Clickable = false;

  if (Game.GetSaveSlotDescription(6) != null) {
      tempsprite6 = DynamicSprite.CreateFromSaveGame(6,64,40);
         if (tempsprite6 != null) {
        pic6.NormalGraphic = tempsprite6.Graphic;
        pic6.Clickable = true;
         }
  } else pic6.Clickable = false;

}


La fonction associée au bouton « Enregistrer »
Code:
function BtOptSave_Click(GUIControl *control, MouseButton button) {
  modeLoadSave = 2;              // mode Enregistrement
  BtAction.Text = "Enregistrer";  // On change le texte du bouton "Action"
  gOptions.Visible = false;      // Efface le GUI d’option
  gLoadsave.Visible = true;      // Affiche le GUI de chargement/enregistrement
  SelPic = 0;                    // Pas de vignette sélectionnée
  pic1.Clickable = true;          // tous les boutons sont actifs
  pic2.Clickable = true;
  pic3.Clickable = true;
  pic4.Clickable = true;
  pic5.Clickable = true;
  pic6.Clickable = true;
  spic1.NormalGraphic = 324;  // tous les boutons cadres sont en noir (rien de sélectionné)
  spic2.NormalGraphic = 324;  // (Sprite 324 = rectangle noir)
  spic3.NormalGraphic = 324;
  spic4.NormalGraphic = 324;
  spic5.NormalGraphic = 324;
  spic6.NormalGraphic = 324;

  // Même principe que pour le chargement, on affiche les vignettes des parties déjà sauvegardées
  if (Game.GetSaveSlotDescription(1) != null) {
    tempsprite1 = DynamicSprite.CreateFromSaveGame(1,64,40);
    if (tempsprite1 != null) {
      pic1.NormalGraphic = tempsprite1.Graphic;
    }
  }

  if (Game.GetSaveSlotDescription(2) != null) {
    tempsprite2 = DynamicSprite.CreateFromSaveGame(2,64,40);
    if (tempsprite2 != null) {
      pic2.NormalGraphic = tempsprite2.Graphic;
    }
  }

  if (Game.GetSaveSlotDescription(3) != null) {
    tempsprite3 = DynamicSprite.CreateFromSaveGame(3,64,40);
    if (tempsprite3 != null) {
      pic3.NormalGraphic = tempsprite3.Graphic;
    }
  }

  if (Game.GetSaveSlotDescription(4) != null) {
  tempsprite4 = DynamicSprite.CreateFromSaveGame(4,64,40);
    if (tempsprite4 != null) {
      pic4.NormalGraphic = tempsprite4.Graphic;
    }
  }

  if (Game.GetSaveSlotDescription(5) != null) {
    tempsprite5 = DynamicSprite.CreateFromSaveGame(5,64,40);
    if (tempsprite5 != null) {
      pic5.NormalGraphic = tempsprite5.Graphic;
    }
  }

  if (Game.GetSaveSlotDescription(6) != null) {
    tempsprite6 = DynamicSprite.CreateFromSaveGame(6,64,40);
    if (tempsprite6 != null) {
      pic6.NormalGraphic = tempsprite6.Graphic;
    }
  }
}


b) Le GUI "Charger/Enregistrer"

Les 6 fonctions associées aux boutons/vignettes :

Code:
function pic1_Click(GUIControl *control, MouseButton button) {
  SelPic = 1;                // vignette 1 sélectionnée
  spic1.NormalGraphic = 325;  // On encadre la vignette en jaune avec le sprite 325
  spic2.NormalGraphic = 324;  // Toutes les autres vignettes sont encadrées de noir
  spic3.NormalGraphic = 324;
  spic4.NormalGraphic = 324;
  spic5.NormalGraphic = 324;
  spic6.NormalGraphic = 324;
}

function pic2_Click(GUIControl *control, MouseButton button) {
  SelPic = 2;                // vignette 2 sélectionnée
  spic1.NormalGraphic = 324;
  spic2.NormalGraphic = 325;  // Vignette 2 encadré de jaune
  spic3.NormalGraphic = 324;
  spic4.NormalGraphic = 324;
  spic5.NormalGraphic = 324;
  spic6.NormalGraphic = 324;
}

etc... avec les 4 autres boutons


La fonction associée au bouton « Annuler »

Code:
function BtCancel_Click(GUIControl *control, MouseButton button) {
  // Si les sprites dynamiques existent, on les efface… Ca libère la mémoire
  if (tempsprite1 != null) tempsprite1.Delete();
  if (tempsprite2 != null) tempsprite2.Delete();
  if (tempsprite3 != null) tempsprite3.Delete();
  if (tempsprite4 != null) tempsprite4.Delete();
  if (tempsprite5 != null) tempsprite5.Delete();
  if (tempsprite6 != null) tempsprite6.Delete();
  gInterface.Clickable = true;            // GUI du jeu actif
  gLoadsave.Visible = false;              // On cache le GUI de Chargement
  if (IsGamePaused() == 1) UnPauseGame();  // on dé-Pause le jeu :)
}


La fonction associée au bouton « Action » (Charger/Enregistrer)

Code:
function BtAction_Click(GUIControl *control, MouseButton button) {
  if (SelPic != 0) {  // Il faut qu’une vignette soit sélectionner pour faire quelque chose
    if (modeLoadSave == 1) {  // Mode Charger
      if (tempsprite1 != null) tempsprite1.Delete();  // On libère la mémoire utilisée par les vignettes
      if (tempsprite2 != null) tempsprite2.Delete();
      if (tempsprite3 != null) tempsprite3.Delete();
      if (tempsprite4 != null) tempsprite4.Delete();
      if (tempsprite5 != null) tempsprite5.Delete();
      if (tempsprite6 != null) tempsprite6.Delete();
      gLoadsave.Visible = false;      // on cache le GUI
      gInterface.Clickable = true;    // le GUI du jeu redevient actif
      if (IsGamePaused() == 1) UnPauseGame();  // le jeu reprend vie
      RestoreGameSlot(SelPic);        // On charge la partie sélectionnée
    } else if (modeLoadSave == 2) {  // Mode sauvegarde
     
      if (Game.GetSaveSlotDescription(SelPic) != null) {  // S’il existe déjà une partie pour la vignette selectionnée
        gLoadsave.Clickable = false;  // desactive le GUI
        gConfirm.Visible = true;      // Affiche le GUI de confirmation pour ecraser la sauvegarde
       
      } else {                        // sinon, c’est que la vignette etait vide
        gLoadsave.Visible = false;    // On cache le GUI
        gInterface.Clickable = true;  // le GUI du jeu redevient actif
        if (IsGamePaused() == 1) UnPauseGame();        // le jeu n’est plus en pause
        Wait(10);  // petite pause pour être sûr que le GUI a disparu avant de sauvgarder
        if (tempsprite1 != null) tempsprite1.Delete();  // on libère la mémoire
        if (tempsprite2 != null) tempsprite2.Delete();
        if (tempsprite3 != null) tempsprite3.Delete();
        if (tempsprite4 != null) tempsprite4.Delete();
        if (tempsprite5 != null) tempsprite5.Delete();
        if (tempsprite6 != null) tempsprite6.Delete();
        SaveGameSlot(SelPic, "SAVE");                  // On enregistre le jeu
      }
    }
  }
}


c) Le GUI de Confirmation pour remplacer l'enregistrement

La fonction associée au bouton « OK »

Code:
function confOk_Click(GUIControl *control, MouseButton button) {
// même chose que pour la sauvegarde (voir plus haut)
  gConfirm.Visible = false;
  gLoadsave.Clickable = true;
  gLoadsave.Visible = false;
  gInterface.Clickable = true;
  if (IsGamePaused() == 1) UnPauseGame();
  Wait(10);
  if (tempsprite1 != null) tempsprite1.Delete();
  if (tempsprite2 != null) tempsprite2.Delete();
  if (tempsprite3 != null) tempsprite3.Delete();
  if (tempsprite4 != null) tempsprite4.Delete();
  if (tempsprite5 != null) tempsprite5.Delete();
  if (tempsprite6 != null) tempsprite6.Delete();
  SaveGameSlot(SelPic, "SAVE");
}

La fonction associée au bouton « Annuler

Code:
function confCancel_Click(GUIControl *control, MouseButton button) {
  gConfirm.Visible = false;    // le GUI de confirmation disparait
  gLoadsave.Clickable = true;  // on réactive le GUI de chargement/sauvegarde
}

d) Le GUI de confirmation pour Quitter le Jeu

La fonction associée au bouton "OUI"

Code:
function confQuitOk_Click(GUIControl *control, MouseButton button) {
  QuitGame(0);  // Quitte le jeu sauf confirmation par la fenêtre AGS
}

La fonction associée au bouton "NON"
Code:
function confQuitCancel_Click(GUIControl *control, MouseButton button) {
  gConfquit.Visible = false;  // on cache le GUI de confirmation
}

Et voilà ! C'est fini.
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 46

Localisation : Montpellier

Date d'inscription : 17/04/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMar 5 Déc 2006 - 16:11

C'est super !! Merci beaucoup ! :cheers:
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Kromagnon
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Kromagnon


Nombre de messages : 1015

Age : 40

Localisation : Finistère

Date d'inscription : 19/09/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMar 5 Déc 2006 - 16:42

Super bien joué! Merci mille fois d'avoir consacrer du temps a nous expliquer tout ca! :cheers: :cheers: :cheers:

_________________
Projet en cours: Cadaver Heart

Quelques photos de promenades insolites sur cette page
Revenir en haut Aller en bas
Dragonsquall
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
avatar


Nombre de messages : 22

Age : 44

Localisation : Paris

Date d'inscription : 02/12/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMer 6 Déc 2006 - 0:27

Merci, c'est un superbe tutorial très utile. sourire
Revenir en haut Aller en bas
http://www.relite.org
Jorkz
Cliqueur Emérite
Cliqueur Emérite
Jorkz


Nombre de messages : 666

Age : 40

Localisation : Montpellier

Date d'inscription : 16/07/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMer 6 Déc 2006 - 3:27

De la balle !

Merci à toi, je sais maintenant que je peux me ré-atteler à l'élaboration d'un GUI sans trop me prendre la tête.

Ca me donne un peu de courage, et c'est déja beaucoup grand sourire

_________________
L' est si forte à la course qu'elle en sort de la phrase.  autruche
Revenir en haut Aller en bas
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMer 6 Déc 2006 - 7:41

A votre service clin d'oeil
S'il y a des choses qui ne sont pas claires ou qui manquent, n'hesitez pas...
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Kromagnon
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Kromagnon


Nombre de messages : 1015

Age : 40

Localisation : Finistère

Date d'inscription : 19/09/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyJeu 8 Fév 2007 - 13:19

Ayè j'ai a peu près tout qui marche sauf......que j'ai pas d'images! :suspect:
pourrais-je avoir un peu d'aide please?

_________________
Projet en cours: Cadaver Heart

Quelques photos de promenades insolites sur cette page
Revenir en haut Aller en bas
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyJeu 8 Fév 2007 - 14:01

Les vignettes sont construites à partir des fichiers de sauvegarde... Verifie que les fichiers sont bien sauvegardés. Il sont dans le repertoire du jeu (avec le nom : agssave.001, agssave.002, agssave.003, etc...).

Ensuite, verifie ta fonction de chargement "Load"... c'est ce code là qui sert à créer et afficher les vignettes.

// code pour la vignette n°1... même chose à repeter pour les autres vignettes.
Code:
 if (Game.GetSaveSlotDescription(1) != null) {
      tempsprite1 = DynamicSprite.CreateFromSaveGame(1,64,40); 
      if (tempsprite1 != null) {
        pic1.NormalGraphic = tempsprite1.Graphic; 
        pic1.Clickable = true;                   
      }
  } else pic1.Clickable = false;                 

ligne 1 : S'il existe une sauvegarde n°1
ligne 2 : On créé un sprite dynamique de taille 64*40 à partir de la sauvegarde n°1
ligne 3 : Si la création du sprite à reussi
ligne 4 : On affecte au bouton 1, le sprite dynamique
ligne 5 : le bouton 1 est rendu actif
ligne 6 : }
ligne 7 : sinon, le bouton 1 est rendu inactif
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Kromagnon
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Kromagnon


Nombre de messages : 1015

Age : 40

Localisation : Finistère

Date d'inscription : 19/09/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyJeu 8 Fév 2007 - 14:35

mes sauvegardes se font et je peux aussi charger, le seul truc qui ne marche pas c'est qu'il ne me creer pas de vignettes....
est-ce que ca pourrait venir du code:
Code:
DynamicSprite* tempsprite1;  // Pointeurs des Sprites pour les 6 vignettes
DynamicSprite* tempsprite2;
DynamicSprite* tempsprite3;
DynamicSprite* tempsprite4;
DynamicSprite* tempsprite5;
DynamicSprite* tempsprite6;
int modeLoadSave;            // 1 = charger / 2 = enregistrer
int SelPic;                  // N° de la vignette sélectionnée par le joueur
Je l'ai placé tous en haut du global script, avant #sectionstart game_start.c'est là qu'il doit se trouver?

_________________
Projet en cours: Cadaver Heart

Quelques photos de promenades insolites sur cette page
Revenir en haut Aller en bas
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyJeu 8 Fév 2007 - 15:54

Le code est ok et bien placé...

Verifie dans les options générales du jeu si la case "Save screenshots in save games" est cochée... C'est la 11eme option à gauche dans "Général Setting".
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Kromagnon
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Kromagnon


Nombre de messages : 1015

Age : 40

Localisation : Finistère

Date d'inscription : 19/09/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyJeu 8 Fév 2007 - 16:02

:oops: :oops: :oops: :oops:
Beeen......merci beaucoup!^^
et dire que je me cassais le cul a chercher dans le script! :roll:
je vais essayer de voir si je peux pas rajouter la date ou un truc comme ca avec la sauvegarde histoire de l'identifier.
En tout cas merci encore pour le tuto et le coup de main! :cheers:

_________________
Projet en cours: Cadaver Heart

Quelques photos de promenades insolites sur cette page
Revenir en haut Aller en bas
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyJeu 8 Fév 2007 - 16:17

ah ben oui ! en voilà une idée qu'elle est bonne...
Au moment de sauvegarder par SaveGameSlot(SelPic, "SAVE");
il faudrait remplacer le "SAVE" qui sert à rien, par un timestamp, et l'afficher sous les vignettes.

Ou alors, faire comme dans Indy FoY, et faire une boite de saisie, pour que le joueur puisse mettre un petit texte, mais là, c'est + compliqué.
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Tsukasa57
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
Tsukasa57


Nombre de messages : 21

Date d'inscription : 13/08/2008


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyDim 17 Aoû 2008 - 12:35

Y aurait il une possibilité pour que le dynamicsprite affiché lorsqu'une partie est sauvegardé soit crée à partir d'un screen entier de la room ou le joueur est actuellement ?

Car moi, le screen pris par défaut est de la taille du cadre.

J'espère vous avoir compris moi, car c'est un peu brouillon ! :sourire:

_________________
Interface de chargement/enregistrement avec Vignette Signags
Revenir en haut Aller en bas
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyLun 18 Aoû 2008 - 7:45

Le screenshot (dans le fichier de sauvegarde) est automatiquement géré par AGS. Il faut avoir mis l'option "Save screenshots in save games" à True dans les "General Settings".
Et comme son nom l'indique, c'est une photo de l'ecran (ou fenêtre en mode fenêtre) à l'instant de la sauvegarde.
Donc pas possible de voir toute la room, mais tu dois pouvoir cacher ton GUI avant la sauvegarde et le faire réapparaitre après. :bricole:
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Tsukasa57
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
Tsukasa57


Nombre de messages : 21

Date d'inscription : 13/08/2008


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyLun 18 Aoû 2008 - 11:32

Asraroth a écrit:
Donc pas possible de voir toute la room, mais tu dois pouvoir cacher ton GUI avant la sauvegarde et le faire réapparaitre après

Que veux-tu dire par la ?
On peut cacher le GUI pour que le screenshot soit plus grand ?
ou c'est autre chose

_________________
Interface de chargement/enregistrement avec Vignette Signags
Revenir en haut Aller en bas
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyLun 18 Aoû 2008 - 12:33

Oui.. c'est ce que je voulais dire. Si ton GUI cache une partie de la room, on doit pouvoir le rendre invisible le temps de prendre le screenshot de sauvegarde.
Mais j'ai pas essayé... :^^:
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Tsukasa57
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
Tsukasa57


Nombre de messages : 21

Date d'inscription : 13/08/2008


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyLun 18 Aoû 2008 - 12:56

Code:
      if (Game.GetSaveSlotDescription(SelPic) != null) {  // S’il existe déjà une partie pour la vignette selectionnée
        gLoadsave.Clickable = false;  // desactive le GUI
        gConfirm.Visible = true;      // Affiche le GUI de confirmation pour ecraser la sauvegarde
     
      } else {                        // sinon, c’est que la vignette etait vide
        gLoadsave.Visible = false;    // On cache le GUI
        gInterface.Clickable = true;  // le GUI du jeu redevient actif
        if (IsGamePaused() == 1) UnPauseGame();        // le jeu n’est plus en pause
        Wait(10);  // petite pause pour être sûr que le GUI a disparu avant de sauvgarder
        if (tempsprite1 != null) tempsprite1.Delete();  // on libère la mémoire
        if (tempsprite2 != null) tempsprite2.Delete();
        if (tempsprite3 != null) tempsprite3.Delete();
        if (tempsprite4 != null) tempsprite4.Delete();
        if (tempsprite5 != null) tempsprite5.Delete();
        if (tempsprite6 != null) tempsprite6.Delete();
        SaveGameSlot(SelPic, "SAVE");                  // On enregistre le jeu
      }
    }
  }
}

je suppose que c'est dans cette partie du code qu'il faut modifier quelque chose, mais je ne vois pas quoi

_________________
Interface de chargement/enregistrement avec Vignette Signags
Revenir en haut Aller en bas
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1468

Age : 49

Date d'inscription : 20/10/2006


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMar 19 Aoû 2008 - 7:14

Juste avant le "SaveGameSlot(SelPic, "SAVE");", tu mets ton GUI en invisible :
gMoninterface.Visible = false;
Revenir en haut Aller en bas
https://gl0bul.itch.io/
Tsukasa57
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
Tsukasa57


Nombre de messages : 21

Date d'inscription : 13/08/2008


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMar 19 Aoû 2008 - 10:59

non j'ai déjà essayé ce code mais ça ne marche pas !
je ne vois pas ce que c'est :pleure:

sinon, ce ne serait pas plus simple de faire un code qui dit

que si le player est dans la room 1 par exemple, save avec un screen prédéfini dans les sprites.

_________________
Interface de chargement/enregistrement avec Vignette Signags
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


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptySam 10 Nov 2012 - 16:56

J'y ai passé mon après midi, mais c'est bon, j'ai maintenant un joli systéme de sauvegarde fonctionnelle. Asraroth, même si tu ne passes plus parmi nous, je tenais à te dire :


coeur Reconnaissance éternelle. coeur


Saviez-vous que :
AGS Help a écrit:
NOTE: if you specify one of the standard slots (1-50), then AGS will rearrange the other save games to make sure there is a sequence of slots from 1 upwards. Therefore, you will need to refresh any save game lists you have after calling this function.
Et que du coup j'ai du m'amuser à changer des 1, 2, 3 et 4 par des 101, 102, 103 et 104 un peu partout dans mon code ? Sans bien sur n'oublier aucune occurrence ?
langue

_________________
Mon petit DevBlog
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


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptySam 10 Nov 2012 - 19:07

Billbis a écrit:
Saviez-vous que :
AGS Help a écrit:
NOTE: if you specify one of the standard slots (1-50), then AGS will rearrange the other save games to make sure there is a sequence of slots from 1 upwards. Therefore, you will need to refresh any save game lists you have after calling this function.
Et que du coup j'ai du m'amuser à changer des 1, 2, 3 et 4 par des 101, 102, 103 et 104 un peu partout dans mon code ? Sans bien sur n'oublier aucune occurrence ?
langue
Tiens ça ne me dit rien ça. Tu tires ça de quelle section ? Je n'ai rien traduit de tel dans la description de la fonction SaveGameSlot.

EDIT : En fait j'ai retrouvé, c'était donc DeleteSaveSlot. Par contre je vois pas en quoi ce réarrangement te posait problème... Parce que les cases ne s'affichaient plus au même endroit qu'avant une fois que tu supprimais une partie ?

_________________
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
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


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptySam 10 Nov 2012 - 20:00

Exactement. La sauvegarde 2 devenait la sauvegarde 1. On ne s'y retrouvais plus. ^^
Mais le problème est réglé maintenant.

En parlant de l'aide d'AGS, elle est assez comique à propos des slots de sauvegarde :

DeleteSaveSlot a écrit:
NOTE : Si vous spécifiez un des emplacements standards (1 à 50), alors AGS réarrangera les autres sauvegardes de façon à former une suite d'emplacements complète. Vous devrez rafraîchir toute liste de sauvegardes après avoir appelé cette fonction.
SaveGameSlot a écrit:
La fonction SaveGameDialog utilise les emplacements numérotés de 1 à 20, donc si vous ne voulez pas pas interférer avec les sauvegardes du joueur, vous devriez utiliser des emplacements supérieurs à 100.
Que faut-il croire ? Quels sont les propriétés exactes des slots en fonctions de leurs catégorie ? Et combien y a t'il de catégories ? Les slots de 1 à 20, ceux de 21 à 50, ceux de 51 à 100 et ceux supérieur à 100 ?

zarb

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
minidoux56
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
minidoux56


Nombre de messages : 35

Age : 32

Localisation : Rennes

Date d'inscription : 22/10/2012


Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette EmptyMer 16 Jan 2013 - 10:17

merci

_________________
Le bouletausaure est de retour!!! sourire
Revenir en haut Aller en bas
Contenu sponsorisé





Interface de chargement/enregistrement avec Vignette Empty
MessageSujet: Re: Interface de chargement/enregistrement avec Vignette   Interface de chargement/enregistrement avec Vignette Empty

Revenir en haut Aller en bas
 
Interface de chargement/enregistrement avec Vignette
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Bug Global Script : enregistrement impossible !
» Jouer une animation à partir d'une frame/vignette déterminée
» [Tuto] Tetris
» Sauvegarde et Chargement : problème de sprite
» Utiliser une image pour le chargement du jeu

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Trucs & Astuces, Tutoriaux-
Sauter vers: