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

Partagez | 
 

 Module Fichiers Paramètres

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2553

Date d'inscription : 01/08/2006


MessageSujet: Module Fichiers Paramètres   Ven 13 Jan 2012 - 19: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
Voir le profil de l'utilisateur 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
avatar

Nombre de messages : 5529

Age : 39

Localisation : Montpellier

Date d'inscription : 17/04/2006


MessageSujet: Re: Module Fichiers Paramètres   Sam 14 Jan 2012 - 13:44

Pas mal, ça pourra servir!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://marionpoinsot.fr/video
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: Module Fichiers Paramètres   Ven 20 Sep 2013 - 15: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
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2553

Date d'inscription : 01/08/2006


MessageSujet: Re: Module Fichiers Paramètres   Ven 20 Sep 2013 - 17: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
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: Module Fichiers Paramètres   Ven 20 Sep 2013 - 21:12

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

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: Module Fichiers Paramètres   Jeu 3 Oct 2013 - 22: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 :

triste
J'ai compté, il y a pile 183 caractères à gauche et à droite.
Merci. ^^

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

Nombre de messages : 2553

Date d'inscription : 01/08/2006


MessageSujet: Re: Module Fichiers Paramètres   Ven 4 Oct 2013 - 15: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
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: Module Fichiers Paramètres   Ven 4 Oct 2013 - 21: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
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2553

Date d'inscription : 01/08/2006


MessageSujet: Re: Module Fichiers Paramètres   Ven 4 Oct 2013 - 23: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
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: Module Fichiers Paramètres   Sam 5 Oct 2013 - 15: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
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Contenu sponsorisé




MessageSujet: Re: Module Fichiers Paramètres   

Revenir en haut Aller en bas
 
Module Fichiers Paramètres
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Changer la destination d'enregistrement des fichiers de sauvegardes [Résolu]
» problème flux rss "paramètres non vide"
» Module "pluie / neige"
» CoH : Nouveau Module VASSAL, Orage d'acier/Prix de l'Honneur
» [GP] Calcul des paramètres de tir

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: