Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -28%
-28% Machine à café avec broyeur ...
Voir le deal
229.99 €

 

 Module Fichiers Paramètres

Aller en bas 
4 participants
AuteurMessage
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


Module Fichiers Paramètres Empty
MessageSujet: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyVen 13 Jan 2012 - 18:48

Le module suivant a été conçu pour stocker et accéder simplement et rapidement à des données dans un fichier depuis AGS.

Installation : Faites un clic droit sur l'onglet "Scripts" de AGS et choisissez "Import script..". Sélectionnez alors le fichier téléchargé FichiersParametres.scm. C'est tout ! langue

Utilisation : Un exemple vaut mieux qu'un long discours.
Code:
FichierParam monfichier;
// Cette ligne va permettre de récupérer/définir des données dans "inventaire.txt"
// stockées sous le format suivant : Parametre->Valeur
monfichier.Open("inventaire.txt", "->");
// Nous stockons une valeur numérique
monfichier.SetInt("argent", 100);
// Nous stockons une valeur textuelle
monfichier.SetParam("livre","Moby Dick");
// Affichera : "J'ai 100 pièces d'or et Moby Dick de Melville dans mon sac"
Display("J'ai %d pièces d'or et %s de Melville dans mon sac", monfichier.GetInt("argent"), monfichier.GetParam("livre"));


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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptySam 14 Jan 2012 - 12:44

Pas mal, ça pourra servir!
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyVen 20 Sep 2013 - 13:46

Coucou,
je vais bientôt tester ce module pour voir si je ne pourrais pas l'utiliser dans mon jeu pour gérer ... mon fichier de paramètres ! grand sourire 
Du coup, j'aimerai savoir sous quel licence tu publies ton module ?
Genre, si un jour je décide de publier les sources de mon jeu sous CC0, est-ce que tu m'autorises à mettre ton module dans le tas (ce qui le passerai en CC0) ou préfère tu que je le distribue sous sa propre licence ?
Sinon à première vu, tu n'as pas prévu de gérer les booléens avec le module. Pas très grave vu qu'on peu passer par un int, mais c'est un peu moins propre... langue

D'ailleurs, saviez vous qu'on peut parfaitement lire les fichiers de module AGS avec un éditeur de texte ?

_________________
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyVen 20 Sep 2013 - 15:05

Billbis a écrit:
Coucou,
je vais bientôt tester ce module pour voir si je ne pourrais pas l'utiliser dans mon jeu pour gérer ... mon fichier de paramètres ! grand sourire 
Tu m'en vois ravi !

Billbis a écrit:
Du coup, j'aimerai savoir sous quel licence tu publies ton module ?
Genre, si un jour je décide de publier les sources de mon jeu sous CC0, est-ce que tu m'autorises à mettre ton module dans le tas (ce qui le passerai en CC0) ou préfère tu que je le distribue sous sa propre licence ?
Je n'ai en effet pas prévu de licence pour ce module, mais va pour la CC0, de toute façon la simplicité du code de ce module n'est pas très loin de la simplicité des formes géométriques qu'évoque le lien que tu as donné clin d'oeil

Billbis a écrit:
Sinon à première vu, tu n'as pas prévu de gérer les booléens avec le module. Pas très grave vu qu'on peu passer par un int, mais c'est un peu moins propre... langue
Du point de vue du format de stockage, ce module traite tout comme une chaîne de caractères. Après il est vraiment très aisé de rajouter des méthodes pour les booléens :
Code:
// FichiersParametres.ash
struct FichierParam {
  
  String fichier;
  protected String sep;
  
  import function Open(String fichier, String separateur = 0);
  import String GetParam(String param);
  import function SetParam(String param, String valeur);
  import int GetInt(String param);
  import function SetInt(String param, int valeur);
  import bool GetBool(String param);
  import function SetBool(String param, bool valeur);
  import String bonparam(String input, String param); // $AUTOCOMPLETEIGNORE$
  
};

// En bas du fichier FichiersParam.asc
bool FichierParam::GetBool(String param) {
  
  String rec = this.GetParam(param);
  if (rec == "V") return true;
  else return false;
  
}

function FichierParam::SetBool(String param, bool valeur) {
  
  if (valeur) this.SetParam(param, "V");
  else this.SetParam(param, "F");
  
}
Billbis a écrit:
D'ailleurs, saviez vous qu'on peut parfaitement lire les fichiers de module AGS avec un éditeur de texte ?
Eh oui, on peut même ouvrir les .scm pour avoir un aperçu de ce qu'il y a dedans (seuls quelques caractères y restent obscures).

_________________
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyVen 20 Sep 2013 - 19:12

Super ! Merci pour la licence et pour le code du Get/SetBool. sourire 

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyJeu 3 Oct 2013 - 20:23

Coucou,
Peut-on lire de longues chaines de caractères avec ce module ?
Il me semble qu'il coupe tout seul après 183 caractères...
Où alors mon problème viens d'ailleurs ?
J'ai ce petit fichier :
https://dl.dropboxusercontent.com/u/78928210/content.dat
(juste un fichier texte). J'essaye de le lire comme cela :
Code:
void Annecdote(){
  int i = lNoteBookSummary.SelectedIndex;
  if (i == -1) {
    return;
  }
  lNoteBookSummary.Visible = false;
  lNoteBookTitle.Text = lNoteBookSummary.Items[i];
  bNoteBookRead.Visible = false;
  String lText;
  String rText;
  FichierParam Content;
  Content.Open("content.dat","=");
  if (lNoteBookTitle.Text == "The Lost Knight") {
    lText=Content.GetParam("EngLostKnhightL");
    rText=Content.GetParam("EngLostKnhightR");
  }
  lNoteBookLeftPage.Text=lText;
  lNoteBookRightPage.Text=rText;
  lNoteBookLeftPage.Visible = true;
  lNoteBookRightPage.Visible = true;
}
Mais le résultats est décevant :
Module Fichiers Paramètres 1380831716-bugtexte
triste
J'ai compté, il y a pile 183 caractères à gauche et à droite.
Merci. ^^

_________________
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyVen 4 Oct 2013 - 13:10

Billbis a écrit:
Peut-on lire de longues chaines de caractères avec ce module ?
Il me semble qu'il coupe tout seul après 183 caractères...
Billbis a écrit:
J'ai compté, il y a pile 183 caractères à gauche et à droite.
Si on rajoute le nom du paramètre et le caractère de séparation, on arrive à 199 caractères. J'ai rencontré ce problème de limite de 199 (200?) caractères retournés par ReadRawLineBack lors d'un développement d'un autre module ultérieur.

La solution à laquelle je pense pour l'instant c'est de réviser le format de stockage des données de façon à les "entourer" du nom du paramètre, de sorte qu'on puisse détecter quand on est arrivé à la fin.
On obtiendrait un code qui ressemble à ça dans le .asc (non testé) :

Code:
function FichierParam::Open(String fichier, String separateur) {
  if (!File.Exists(fichier)) {
    File* tmp = File.Open(fichier, eFileWrite);
    if (tmp.Error) return false;
    tmp.Close();
  }
  this.fichier = fichier;
  this.sep = separateur;
  if (String.IsNullOrEmpty(separateur)) this.sep = ":";
  return true;
}

String FichierParam::GetParam(String param) {

  if (String.IsNullOrEmpty(param) || String.IsNullOrEmpty(this.sep)) return "";

  File* fich = File.Open(this.fichier, eFileRead);
  String debut = param.Append(this.sep), fin = this.sep.Append(param);

  while (!fich.EOF && !fich.Error) {
    String ret = fich.ReadRawLineBack();
    if (ret != null && ret.StartsWith(debut, true)) {
      while (!fich.EOF && !ret.EndsWith(fin, true) && !fich.Error)
        ret = ret.Append(fich.ReadRawLineBack());
      fich.Close();
      return ret.Substring(debut.Length, ret.Length - 2*fin.Length);
    }
  }
  fich.Close();
  return "";
  
}

int FichierParam::GetInt(String param) {
  
  String rec = this.GetParam(param);
  return rec.AsInt;
  
}

function FichierParam::SetParam(String param, String valeur) {
  
  if (String.IsNullOrEmpty(param) || String.IsNullOrEmpty(this.sep)) return false;
  File* fich = File.Open(this.fichier, eFileRead);
  String tmp_name = "tmp";
  while (File.Exists(tmp_name)) {
    tmp_name = tmp_name.Append("_tmp");
  }
  File* tmp = File.Open(tmp_name, eFileWrite);
  while (!fich.EOF) {
    if (fich.Error) return false;
    tmp.WriteRawLine(fich.ReadRawLineBack());
  }
  tmp.Close();
  fich.Close();
  fich = File.Open(this.fichier, eFileWrite);
  tmp = File.Open(tmp_name, eFileRead);
  String line, debut = param.Append(this.sep), fin = this.sep.Append(param);
  bool ecrit;
  while (!tmp.EOF) {
    line = tmp.ReadRawLineBack();
    if (tmp.Error) return false;
    if (line != null && line.StartsWith(debut, true)) {
      while (!tmp.EOF && !line.EndsWith(fin, true) && !tmp.Error)
        line = line.Append(tmp.ReadRawLineBack());
      fich.WriteRawLine(String.Format("%s%s%s", debut, valeur, fin));
      ecrit = true;
    }
    else fich.WriteRawLine(line);
  }
  if (!ecrit) fich.WriteRawLine(String.Format("%s%s%s", debut, valeur, fin));
  tmp.Close();
  fich.Close();
  File.Delete(tmp_name);
  return true;
}

function FichierParam::SetInt(String param, int valeur) {
  
  this.SetParam(param, String.Format("%d", valeur));
  
}

bool FichierParam::GetBool(String param) {
  
  String rec = this.GetParam(param);
  if (rec == "V") return true;
  else return false;
  
}
 
function FichierParam::SetBool(String param, bool valeur) {
  
  if (valeur) this.SetParam(param, "V");
  else this.SetParam(param, "F");

}

_________________
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyVen 4 Oct 2013 - 19:48

Merci pour ce poste Kitai !
Malheureusement, tout l’intérêt du truc c'était d'écrire le long texte dans un éditeur de texte classique, et de l'importer ensuite dans AGS. S'il faut le pré-formater en l'encadrant du nom du paramètre tout les 200 caractères, ça va pas le faire (je me sert que de la lecture dans ce cas là). Autant copier/coller le texte direct dans AGS.

_________________
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyVen 4 Oct 2013 - 21:19

Billbis a écrit:
S'il faut le pré-formater en l'encadrant du nom du paramètre tout les 200 caractères, ça va pas le faire
Non, ça ne marche pas comme ça. Le format est le suivant :
Code:
EngLostKnhightL=   Once upon a time, through a strange country, there rode some goodly knights, and their path lay by a deep wood, where tangled briars grew very thick and strong, and tore the flesh of them that lost their way therein. And the leaves of the trees that grew in the wood were very dark and thick, so that no ray of light came through the branches to lighten the gloom and sadness.[   And, as they passed by that dark wood, one knight of those that rode, missing his comrades, wandered far away, and returned to them no more; and they, sorely grieving, rode on without him, mourning him as one dead.[   Now, when they reached the fair castle towards which they had been journeying, they stayed there many days, and made merry; and one night, as they sat in cheerful ease around the logs that burned in the great hall, and drank a loving measure, there came the comrade they had lost, and greeted them. His clothes were ragged, like a beggar's, and many sad wounds were on his sweet flesh, but upon his face there shone a great radiance of deep joy.[   And they questioned him, asking him what had befallen him: and he told them how in the dark wood he had lost his way, and had wandered many days and nights, =EngLostKnhightL

EngLostKnhightR=till, torn and bleeding, he had lain him down to die.[   Then, when he was nigh unto death, lo! through the savage gloom there came to him a stately maiden, and took him by the hand and led him on through devious paths, unknown to any man, until upon the darkness of the wood there dawned a light such as the light of day was unto but as a little lamp unto the sun; and, in that wondrous light, our way-worn knight saw as in a dream a vision, and so glorious, so fair the vision seemed,  that of his bleeding wounds he thought no more, but stood as one entranced, whose joy is deep as is the sea, whereof no man can tell the depth.[   And the vision faded, and the knight, kneeling upon the ground, thanked the good saint who into that sad wood had strayed his steps, so he had seen the vision that lay there hid.[   And the name of the dark forest was Sorrow; but of the vision that the good knight saw therein we may not speak nor tell.=ELostKnhightR
Si le code fonctionne comme je le pense, tu peux même retourner à la ligne après les [ si tu veux, histoire que le fichier .dat soit plus lisible.

En passant, c'est volontaire l'orthographe Knhight ?

_________________
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptySam 5 Oct 2013 - 13:43

Youpi ! Ça marche nickel !
Merci beaucoup. grand sourire 
Pour un code non testé, il est sacrément efficace : même pas une coquille !
Seul petit défaut, je ne peux plus trop m'ammuser à bidouiller le acsetup.cfg avec ces commandes, mais ça c'est pas trop grave.
En revanche, ça ne règle pas mon problème de traduction, mais je vais plutôt vous exposer ce problème ailleurs.
Kitai a écrit:
En passant, c'est volontaire l'orthographe Knhight ?
Bien sur ! Tu penses bien. C'est pour troubler les petits curieux qui irai lire ce fichier. langue
EDIT : en fait, je ne vous parlerai pas de mon bug de traduction. Comme je n'arrivai pas ni à le résoudre, ni à l'identifier, j'ai changé de méthode. Je vais passer par une image pour les longs pavés de texte. En plus il sera justifié comme ça ! En tout cas, merci Kitai pour ton aide précieuse !

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
Baguettator
Cliqueur Amateur
Cliqueur Amateur
Baguettator


Nombre de messages : 232

Date d'inscription : 21/05/2020


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptySam 28 Nov 2020 - 16:56

Salut Kitai !

J'utilise ton module, qui est super, mais je me pose une question :

- si le fichier (que j'appelle "config.txt") n'existe pas, AGS le crée ?

- où le crée-t-il ?

- ou devons-nous le créer et le placeer à un endroit précis ?

EDIT : car dans ce fichier config, je veux enregistrer les valeurs des volumes de musiques et sons (que le joueur ait pas à les modifier à chaque relance du jeu), ainsi que la langue choisie. Le problème est que lorsque je lance le jeu pour la première fois, "config.txt" n'existe pas (ou alors il est vide ?), du coup le jeu se lance dans la langue originale et avec les volumes à 0.

Dans l'idée, j'aurais bien fait un fichier config.txt avec des valeurs par défaut que j'aurais écrit dedans (avec quelle syntaxe ? du genre "volumeson -> 100" ?), comme ça au premier lancement, le jeu a des musiques et des sons ! sourire
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyDim 29 Nov 2020 - 1:26

Oui, le module crée le fichier s'il n'existe pas. Typiquement ça se passe dans le fichier de sauvegarde, mais ça dépend : plus d'infos ici.

Le meilleur moyen pour créer ton fichier config par défaut : lance ton jeu, fais les réglages que tu souhaites utiliser par défaut, et conserve une copie du fichier config ainsi généré que tu distribueras avec la version finale de ton jeu

_________________
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
Baguettator
Cliqueur Amateur
Cliqueur Amateur
Baguettator


Nombre de messages : 232

Date d'inscription : 21/05/2020


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyDim 29 Nov 2020 - 8:41

Merci Kitai !

Dommage qu'on puisse pas créer le fichier config dans le dossier d'installation du jeu, c'est toujours plus simple à retrouver. Mais je vais utiliser le dossier de sauvegarde !
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyLun 30 Nov 2020 - 17:40

Sinon tu fais juste un truc comme ça :
Code:
function game_start() {
  if (!File.Exists("config.txt")) {
    FichierParam monfichier;
    monfichier.Open("config.txt", "->");
    monfichier.SetInt("volume", 100);
  }
}

_________________
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
Baguettator
Cliqueur Amateur
Cliqueur Amateur
Baguettator


Nombre de messages : 232

Date d'inscription : 21/05/2020


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyJeu 3 Déc 2020 - 21:42

Alors j'ai fait cela, mais ça ne marche pas. Disons que dans mon game start function j'ai ça :

Code:
if (!File.Exists("$SAVEGAMEDIR$/config.txt"))
  {
    FichierParam monfichier;
    monfichier.Open("config.txt", "->");
    monfichier.SetInt("Volumemusique", 100);
    monfichier.SetInt("Volumesons", 100);
    monfichier.SetParam("Langue", "");
  }
 
  config.Open("$SAVEGAMEDIR$/config.txt", "->");
  Game.ChangeTranslation(config.GetParam("Langue"));
  Game.SetAudioTypeVolume(eAudioTypeMusic, config.GetInt("Volumemusique"), eVolSetFutureDefault);
  Volumemusique.Value=config.GetInt("Volumemusique");
  Game.SetAudioTypeVolume(eAudioTypeSound, config.GetInt("Volumesons"), eVolSetFutureDefault);
  Volumesons.Value=config.GetInt("Volumesons");

Quand je supprime config.txt et que je redémarre le jeu (en ayant préalablement mis les volumes à 0 lors de ma session de jeu précédente), le jeu a toujours les volumes à 0. Et le config.txt est bien créé quand je quitte le jeu, mais pas quand je démarre le jeu alors qu'il n'existe pas.

Il faudrait peut-être que je mette le "if (!File.Exist)" ailleurs ? Genre dans le game start de la room 1, s'il se résout avant le game start du global script ?
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyJeu 3 Déc 2020 - 23:14

Tu ouvres probablement pas les mêmes fichiers avec monfichier.Open("config.txt", "->"); et config.Open("$SAVEGAMEDIR$/config.txt", "->");

Tu dois être consistent dans ton utilisation ou non-utilisation de $SAVEGAMEDIR$ : soit tu le mets partout, soit tu le mets nulle part

_________________
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
Baguettator
Cliqueur Amateur
Cliqueur Amateur
Baguettator


Nombre de messages : 232

Date d'inscription : 21/05/2020


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyLun 7 Déc 2020 - 12:14

Aie aie aie, effectivement, tout marche mieux maintenant...

Merci Kitai !

Autre chose que je me demandais : j'aimerai stocker dans ce fichier des données d'un même type (genre un tableau). En lien avec mon autre sujet concernant les playlists, j'aimerai que quand le jeu quitte, le jeu sauvegarde dans "config.txt" les playlists créées par le joueur.

ça impliquerait de scanner les items de mes listbox (qui représentent les playlist) et de les lister sous forme de "param" dans config.txt

Seulement, je me demande si c'est possible, lorsque le jeu démarre, d'ouvrir config.txt, et de faire une boucle de ce genre :

Code:

for (int i=0 ; i<TOTALmusiques ; i++) // TOTALmusiques peut être une variable qu'on a définie au lancement et avant cette fonction, pour compter le nombre de musiques présentes dans le jeu et ajoutées par le joueur dans le dossier d'installation
{
if (GetParam("Playlist1", musique[i]) != null) Playlist1.Additem(musique[i]); // musique[] étant un tableau de string qui référence le nom des musiques présentes qu'on a comptées pour TOTALmusiques.
}

Bon le code est un peu grossier là, mais c'est quelque chose du genre qu'il faudrait pouvoir faire. Kitai, c'est possible tu penses ?
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyLun 7 Déc 2020 - 16:03

L'idée de ce module c'est de stocker de l'information sous forme "clé : valeur". Dans le cas des playlists, je pense pas que y'ait beaucoup de sens à avoir des clés : c'est juste des valeurs les unes à la suite des autres. Du coup je partirais plus sur un simple fichier brut :
Code:
function sauvegarde_playlist() {
  File* fichier_playlist = File.Open("playlist.txt", eFileWrite);
  for (int i=0; i<PlayList.ItemCount;i++){
    fichier_playlist.WriteRawLine(PlayList.Item[i]);
  }
  fichier_playlist.Close();
}
function charge_playlist() {
  PlayList.Clear()
  File* fichier_playlist = File.Open("playlist.txt", eFileRead);
  while (!fichier_playlist.EOF){
    PlayList.AddItem(fichier_playlist.ReadRawLineBack());
  }
  fichier_playlist.Close();
}

_________________
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
Baguettator
Cliqueur Amateur
Cliqueur Amateur
Baguettator


Nombre de messages : 232

Date d'inscription : 21/05/2020


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyLun 7 Déc 2020 - 17:35

OK Kitai, je vais essayer d'agrémenter ton code en mettant des "sécurités", au cas où le joueur ait enlevé des musiques que le jeu ne pourrait plus trouver après les avoir sauvegardées... sourire
Revenir en haut Aller en bas
Baguettator
Cliqueur Amateur
Cliqueur Amateur
Baguettator


Nombre de messages : 232

Date d'inscription : 21/05/2020


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyVen 22 Oct 2021 - 20:19

Salut @Kitai !

Je reviens sur ce sujet, car je me souviens avoir lu quelque part une histoire de limite de caractères...

J'ai vu plus haut que tu parles d'une limite de 199 pour la fonction RawLineBack. Et je me heurte de plein fouet à cette limite dans un script que j'essaye de développer !!

Aurais-tu trouvé un moyen de contourner ce problème ?
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyLun 25 Oct 2021 - 15:11

Haha, j'ai cherché "RawLineBack 199" sur le forum anglophone, et j'ai trouvé un message qui renvoie à une solution à ce lien... avant de me rendre compte que c'était @Billbis qu renvoie à un message précisément sur ce thread sourire

Je pense que je suis jamais revenu à ce problème après ce message. Est-ce que y'a un problème avec cette solution-là ? Sinon tu peux toujours essayer d'utiliser WriteString/ReadStringBack, peut-être que y'a pas la limite de 200 caractères

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


Dernière édition par Kitai le Lun 25 Oct 2021 - 17:06, édité 1 fois
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Baguettator
Cliqueur Amateur
Cliqueur Amateur
Baguettator


Nombre de messages : 232

Date d'inscription : 21/05/2020


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyLun 25 Oct 2021 - 16:05

Alors, je suis allé demander sur le forum anglais du coup, et il se trouve qu'ils vont enlever probablement la limite dans AGS 3.6 ! Ils ont déjà enlevé la limite de longueur dans les scripts, ce qui est déjà pas mal clin d'oeil

Pour le problème de la limite de 199, Crimson Wizard m'a suggéré ceci qui marche à merveille :

Code:
String fullstring = "";
do {
    String s = file.ReadRawStringBack();
    fullstring = fullstring.Append(s);
} while (s.Length == 199);
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


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyLun 25 Oct 2021 - 17:10

Ah, tu utilisais déjà la version "String" de ces commandes et pas "Line", et donc ça répond à la question : ces commandes là aussi ont la limite de 199

La solution de Crimson Wizard marche tant que ce que tu n'essayes pas de lire une unique ligne qui fait exactement 199 caractères : si tu as une telle ligne, alors ce code va aussi lire la ligne suivante et l'accoller comme s'il s'agissait d'une seule et même ligne. C'est pour ça que dans mon code plus haut je suggérais d'entourer chaque ligne de marqueurs, afin d'expliciter et donc détecter à coup sûr la fin d'un ligne, et ainsi éviter ce genre de situation

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


Dernière édition par Kitai le Lun 25 Oct 2021 - 17:10, édité 1 fois
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Baguettator
Cliqueur Amateur
Cliqueur Amateur
Baguettator


Nombre de messages : 232

Date d'inscription : 21/05/2020


Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres EmptyLun 25 Oct 2021 - 17:12

Non, j'utilisais ReadRawLine ! Crimson Wizard a mis String, mais j'utilisais bien rawline !

C'est sûr qu'il y a une possible chance (bien qu'infime) que ça marche pas comme voulu. Mais pour ce que j'essayais de faire, c'est bien mieux que d'entourer les textes avec des balises (trop de lignes concernées : des milliers à faire manuellement !)
Revenir en haut Aller en bas
Contenu sponsorisé





Module Fichiers Paramètres Empty
MessageSujet: Re: Module Fichiers Paramètres   Module Fichiers Paramètres Empty

Revenir en haut Aller en bas
 
Module Fichiers Paramètres
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 :: Modules et plugins-
Sauter vers: