Accueil :: Cours scripting :: Liste des scripts :: Forum :: A propos
Menu
.
Publicité



Cours >> Partie III - Chapitre VII

Gestion des fichiers .ini

Bonjour à tous, et bienvenue dans cette troisième et dernière partie.
Autant vous dire, maintenant : ça va barder . Nous allons voir dans cette troisième partie comment fonctionnent des fonctions un peu plus compliquées mais très pratiques et parler de leur utilisation. Autant vous dire que vous allez morfler si vous ne connaissez pas les 2 premières parties par coeur ! ( en gros ).
Bon, bah, commençons .

A. Le fichier INI

questionC'est quoi un fichier ini, Dahevos sensei
Les fichiers ini sont de simples fichiers textes, où on peut écrire des données, et plus tard les récupérer. Par exemple, cela permet de garder des variables en mémoire en les écrivant dans un fichier ini. D’ailleurs pourquoi ça s'appelle « fichier ini » ?
Bah tout simplement parce que leur extension est en « .ini » au lieu d'être en « .txt » !
questionA quoi ça ressemble un fichier ini ( ou .ini ) ?
Un fichier ini ressemble à ça ( cliquez ici ).
Nous allons expliquer sa structure, alors gardez sous les yeux le fichier ini .
Un fichier ini est composé de :
- un header (entres crochets) qui permet de regrouper des :
- des variables
Dans l'exemple du "Client.ini" que vous avez ouvert précédemment, nous avons pu constater la présence de 2 headers : config et credit ([CONFIG] et [CREDIT]).
questionDoit t-on mettre obligatoirement des majuscules au header ?
Non, mais c'est conseillé pour que cela soit plus visible.
Retournons dans l'étude de la structure du fichier Client ini.
Nous pouvons voir, que le header "config" contient une variable : "WebSite".
Remarquez qu'une variable est suivi d'un signe, =, et d'une valeur, qui suit ( ici c'est WebSite=http://roonline.free.fr ).
Toujours dans le même fichier, vous pouvez voir que le deuxième header, "credit" a plusieurs variables associées.
Ainsi, vous devez retenir que le header sert juste à classer une ou plusieurs variables qui doivent être toujours égales à une valeur (par défaut, elle est nulle).
Vous pouvez rajouter plusieurs HEADER et variables à un fichier ini, voir créer un nouveau fichier ini...

B. Editer les fichiers ini manuellement

Comment éditer un fichier ini ?
Réveillez-vous un peu ! Ha la la, si vous aviez fait la guerre de 14-18, on aurait déjà perdu avec des flemmards comme vous .
Bon revenons à nos moutons ... Non ne vous endormez pas .
Pour éditer un fichier ini, il suffit de l'ouvrir dans ... dans ... dans ...

LE BLOC NOTE !!!!

Hé oui, incroyable mais vrai, tous les experts en info se sont penchés sur ce problème pendant des siècles, en passant par Paint, le lecteur Windows media, mais il s'est révélé que la façon la plus simple est le bloc note. Comme quoi il sert ce programme utilisé qu'une fois depuis que vous avez acheté votre PC (et encore, c'était pour ouvrir le fichier d'aide de Microsoft Word avant son installation ).
Enfin bon, après vous pouvez faire vos modifications, rajouter des header (entre [] vous vous en rappelez ) et des variables, avec un beau "=0" (ou =5, mais mettez une valeur ).
Après vous n'avez plus qu'à enregistrer le fichier et c'est joué . D’ailleurs vous pouvez créer de nouveaux fichier ini de la même manière (mais pensez quand vous enregistrez à cliquer sur "type du fichier" et à sélectionner la valeur "tous les types de fichiers", puis à écrire un beau .ini a la fin du nom de votre fichier).
tention <img src="/>Pensez à éviter de mettre des espaces dans le nom de votre fichier ! Mettez plutôt un underscore ("_") pour remplacer les espaces !

C. Stocker dans une variable la valeur d'une variable dans un fichier ini par une fonction.

Nous voilà enfin arrivés à la partie réellement intéressante de ce cours.
La fonction correspondante est :

mavariable = GetVar("chemin ou nomdufichier.ini", "nomduheader", "nomdelavariable")

EXPLICATION : On stocke dans mavariable la valeur obtenue par la fonction GetVar.
Mais GetVar doit être renseigné sur le chemin du fichier ini, c'est à dire où il se trouve PAR RAPPORT AU DOSSIER DU SERVER. C'est comme ça, on ne peut pas y changer grand chose . Il faut renseigner aussi le nom du header et le nom de la variable concernée .
Voilà, ce n'est pas si compliqué que cela. Nous allons voir un exemple pour récupérer une valeur de la variable Scripting du fichier Data.ini situé dans le dossier du serveur.
Pour cela, ouvrez dans le dossier Server le fichier Data.ini. Le script ressemblera à ça :

scripting_etat = GetVar("Data.ini", "CONFIG", "Scripting")

tention <img src="/>Le header est écrit en majuscule, donc mettez des majuscules pour le nom du header dans le GetVar. De la même façon, si vous mettez des minuscules, il faudra inscrire le nom en minuscule.
La fonction précédente permet de stocker la valeur de la variable scripting du fichier Data.ini situé dans le dossier Server, dans le header CONFIG et de tout stocker donc dans une nouvelle variable, scripting_etat.
Si la variable scripting=0 dans le data.ini, alors la variable scripting_etat sera égale à 0. Et voila bon et si vous voulez ouvrir un fichier ini qui se situe dans le dossier Classes du dossier Server, il suffira de remplacer le chemin du fichier ini, exemple :

nom_classe1 = GetVar("Classes\class1.ini", "CLASS", "Name")

Et voila ouvrez le fichier Class1.ini du dossier Server\Classes et normalement vous comprendrez tout !
. questionEt si on veut récupérer une variable qui se trouve dans le dossier client, on fait comment ?
Hum, très bonne question Alfred ... eu Roger pardon (désolé à ceux qui s'appellent de même, j'ai juste pris les 2 noms qui me passaient par la tête ).
Hé bah j'en sais rien, mais je pense que j'ai ma petite idée sur la question. Il suffira de tester. Je pense qu'il faut rajouter un ..\ juste avant, exemple :

password_du_joueur = GetVar("..\Client\Config\Account.ini", "INFO", "password")

Si ça marche, alors merci de le dire sur le forum (de même si cela ne marche pas ).
questionEt comment faire pour récupérer une variable, quand le nom du fichier ini peut changer ?
Hé bah vous pouvez utiliser des fonctions, hé oui
Exemple :

joueur_classe = GetVar("accounts\" & GetPlayerLogin(index) & ".ini ", "CHAR" & GetPlayerCharNum(Index), "Class")

Ça commence à devenir compliqué hein ?
En fait, la variable joueur classe contiendra la valeur du fichier du joueur qui lance le script.ini dans le dossier account, au HEADER "CHAR numéro du perso du joueur" et à la variable Class.
Ne paniquez pas, relisez et vous comprendrez. En effet, le nom du fichier ini dans le dossier account est le nom du login du joueur. Donc nous devons mettre la fonction getplayerlogin(index) qui va en fait récupérer le login du joueur devant effectuer le script, pour le placer entre accounts\ et .ini. Ensuite il arrive que le header varie lui aussi. Ici c'est le numéro du joueur (en effet, on a CHAR1, CHAR2, CHAR3 pour les 3 personnages en tout).
Donc on relance une fonction et le tour est joué. Remarquez aussi comme les variables emploient le "&" pour séparer la fonction (qui constitue en elle-même ici une variable ).

D. Ecrire dans un fichier ini par fonction

Rassurez-vous, ce chapitre est bientôt fini !
Sur le même modèle que précédemment, voilà la fonction :
Call PutVar("chemin du fichier ini", "header", "variable", valeur) Voilà, pas la peine de vous réexpliquer, les 2 fonctions sont régies par les mêmes règles (concernant le dossier et le nom de fichier variant). Il suffit ici de rajouter une valeur, si c'est un chiffre ne mettez pas de "", si ce sont des lettres mettez des "".

tention <img src="/>Si vous voulez stocker dans un fichier ini une valeur qui est contenu dans une variable, il va falloir utiliser une conversion variable -> ce qu'elle contient. Pour cela, on utilise cette méthode : CStr(votre_variable), ce qui va donner :

Call PutVar("votrefichierini.ini", "CONFIG", "nbr_joueur", CStr(votre_variable))


Voilà, le septième chapitre est fini. Il est très compliqué, et si vous ne retenez pas tout, relisez le jusqu'a ce que les fonctions rentrent dans votre tête. Inutile de dire que cette fonction est la plus utilisée, alors faites des tests, beaucoup de tests pour apprendre et surtout retenir !
N'oubliez pas que ce cours ne bouge pas. Ainsi si vous avez un doute un jour, revenez pour copier coller les exemples de scripts, qui sont de vrais modèles pour vos scripts
Je rappelle aussi que l'annexe 1 qui liste toutes les fonctions est à vous .

Accédez au prochain chapitre .