| Interface de chargement/enregistrement avec Vignette | |
|
+5Jorkz Dragonsquall Kromagnon Shai-la Asraroth 9 participants |
|
Auteur | Message |
---|
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Interface de chargement/enregistrement avec Vignette Mar 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 GUIle 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. 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 » 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: Je reviens maintenant plus en détail sur le 2ème GUI. Voilà comment il est construit… 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 :
Dernière édition par le Jeu 18 Jan 2007 - 13:17, édité 1 fois |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mar 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: |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mar 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'enregistrementLa 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 JeuLa 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. |
|
| |
Shai-la Ouvrière en Chef de la Grande Tasse Bleue
Nombre de messages : 6018
Age : 46
Localisation : Montpellier
Date d'inscription : 17/04/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mar 5 Déc 2006 - 16:11 | |
| C'est super !! Merci beaucoup ! :cheers: |
|
| |
Kromagnon Disciple de la Grande Tasse Bleue
Nombre de messages : 1015
Age : 40
Localisation : Finistère
Date d'inscription : 19/09/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mar 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: |
|
| |
Dragonsquall C'est quoi la Tasse Bleue ?
Nombre de messages : 22
Age : 44
Localisation : Paris
Date d'inscription : 02/12/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mer 6 Déc 2006 - 0:27 | |
| Merci, c'est un superbe tutorial très utile. |
|
| |
Jorkz Cliqueur Emérite
Nombre de messages : 666
Age : 40
Localisation : Montpellier
Date d'inscription : 16/07/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mer 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 _________________ L' est si forte à la course qu'elle en sort de la phrase. autruche
|
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mer 6 Déc 2006 - 7:41 | |
| A votre service S'il y a des choses qui ne sont pas claires ou qui manquent, n'hesitez pas... |
|
| |
Kromagnon Disciple de la Grande Tasse Bleue
Nombre de messages : 1015
Age : 40
Localisation : Finistère
Date d'inscription : 19/09/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Jeu 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? |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Jeu 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 |
|
| |
Kromagnon Disciple de la Grande Tasse Bleue
Nombre de messages : 1015
Age : 40
Localisation : Finistère
Date d'inscription : 19/09/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Jeu 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? |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Jeu 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". |
|
| |
Kromagnon Disciple de la Grande Tasse Bleue
Nombre de messages : 1015
Age : 40
Localisation : Finistère
Date d'inscription : 19/09/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Jeu 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: |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Jeu 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é. |
|
| |
Tsukasa57 C'est quoi la Tasse Bleue ?
Nombre de messages : 21
Date d'inscription : 13/08/2008
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Dim 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: _________________ |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Lun 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: |
|
| |
Tsukasa57 C'est quoi la Tasse Bleue ?
Nombre de messages : 21
Date d'inscription : 13/08/2008
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Lun 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 _________________ |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Lun 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é... : : |
|
| |
Tsukasa57 C'est quoi la Tasse Bleue ?
Nombre de messages : 21
Date d'inscription : 13/08/2008
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Lun 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 _________________ |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mar 19 Aoû 2008 - 7:14 | |
| Juste avant le "SaveGameSlot(SelPic, "SAVE");", tu mets ton GUI en invisible : gMoninterface.Visible = false; |
|
| |
Tsukasa57 C'est quoi la Tasse Bleue ?
Nombre de messages : 21
Date d'inscription : 13/08/2008
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mar 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. _________________ |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Sam 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 : Reconnaissance éternelle. 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 ? |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Sam 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 ? 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 ! |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Sam 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 ? |
|
| |
minidoux56 C'est quoi la Tasse Bleue ?
Nombre de messages : 35
Age : 32
Localisation : Rennes
Date d'inscription : 22/10/2012
| Sujet: Re: Interface de chargement/enregistrement avec Vignette Mer 16 Jan 2013 - 10:17 | |
| merci _________________ Le bouletausaure est de retour!!! |
|
| |
Contenu sponsorisé
| Sujet: Re: Interface de chargement/enregistrement avec Vignette | |
| |
|
| |
| Interface de chargement/enregistrement avec Vignette | |
|