• 05 Juillet 2025, 17:21:53


Auteur Sujet: Comment enregistrer une variable en dini  (Lu 1885 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Comment enregistrer une variable en dini
« le: 05 Janvier 2011, 19:13:09 »
Slt

Est ce que quelqu'un pourrait m'expliquer comment enregistrer une variable en dini. J'ai tout essayé. :(
PS: J'utilise ce script pour mon système d'enregistrement: http://pbox.ca/17mtx


Merci d'avance pour votre aide,

A+ ;)

Hors ligne Tux

  • *
  • Tueur en série
  • GeChaud =3
  • Messages: 112
    • Voir le profil
    • Trace - Serveur Multi Modes
Re : Comment enregistrer une variable en dini
« Réponse #1 le: 05 Janvier 2011, 19:25:31 »
D'après moi, la fonction qui permet d'enregistrer une integer est: dini_SetInt(File[], Key[], int Value);

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Comment enregistrer une variable en dini
« Réponse #2 le: 05 Janvier 2011, 19:37:40 »
C'est déjà la fonction que j'utilise mais elle ne sauvegarde rien:

new str[150];
dini_IntSet(str,"Kills",pkills[playerid]);

Hors ligne Tux

  • *
  • Tueur en série
  • GeChaud =3
  • Messages: 112
    • Voir le profil
    • Trace - Serveur Multi Modes
Re : Comment enregistrer une variable en dini
« Réponse #3 le: 05 Janvier 2011, 19:44:31 »
Il faudrait formatter ta chaîne de charactère avant de sauvegarder quoique ce soit dessus.
Exemple:
Code: (pawn) [Sélectionner]
new str[MAX_PLAYER_NAME+4]; // Longueur du nom d'un joueur + l'extension du fichier
new name[MAX_PLAYER_NAME]; // Nom du joueur
GetPlayerName(playerid,  name, MAX_PLAYER_NAME);
format(str, MAX_PLAYER_NAME+4, "%s.ini", name);
dini_IntSet(str, "Kills", pkills[playerid]);


;)

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Comment enregistrer une variable en dini
« Réponse #4 le: 05 Janvier 2011, 19:46:49 »
Pour les strings, c'est dini_Set( fichier[], tag[], string[])

Spiirou
++

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Re : Comment enregistrer une variable en dini
« Réponse #5 le: 05 Janvier 2011, 19:48:20 »
C'est déjà la fonction que j'utilise mais elle ne sauvegarde rien:

new str[150];
dini_IntSet(str,"Kills",pkills[playerid]);
Voila l'erreure que je redoutter mais tu es partit de msn

pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Comment enregistrer une variable en dini
« Réponse #6 le: 05 Janvier 2011, 20:10:47 »
Je viens de tester avec ton code Tux, il sauvegarde très bien.
Mais une question que je me pose c'est pourquoi mon ancien code était faux alors qu'il reprenait les même données que toi ( mon ancien code = le script de départ de Rambo que je modifie à ma sauce )
stock CompteJoueur(playerid)
{
new str2[MAX_PLAYER_NAME+20];//avant c'était +5
format(str2,sizeof(str2),"%s.data",nom(playerid));
return str2;
}
Et mon enregistrement dans onplayerdisconnect:
        dini_IntSet(CompteJoueur(playerid),"Kills",pkills[playerid]);

Le plus important c'est que ça marche. L'autre problème maintenant, c'est que lors du login, c'est comme si la sauvegarde était détruite. En effet, toutes mes variables retournent à 0.
Voici mon code pour sauvegarder les variables dans onplayerdisconnect:
dini_Set(CompteJoueur(playerid), "Kills", pkills[playerid]);

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Comment enregistrer une variable en dini
« Réponse #7 le: 05 Janvier 2011, 20:13:27 »
dini_Exists(filename[]) // Si le fichier existe
dini_Remove(filename[]) // Supprimer le fichier
dini_Create(filename[]) // Creer le fichier
dini_Get(filename[],key[]) // Lire un string dans un fichier
dini_Set(filename[],key[],value[]) // Mettre un string dans un fichier
dini_IntSet(filename[],key[],value// Mettre un nombre dans un fichier
dini_Int(filename[],key[]) // Lire un nombre dans un fichier
dini_FloatSet(filename[],key[],Float:value// Ecrire un Float: dans un fichier
Float:dini_Float(filename[],key[]) // Lire un Float: dans un fichier
dini_BoolSet(filename[],key[],value// Ecrire un booleen dans un fichier
dini_Bool(filename[],key[]) // Lire un booleen dans un fichier
dini_Unset(filename[],key[]) // Enlever la variable
dini_Isset(filename[],key[]) // Si la variable existe
DINI_StripNewLine(string[]) // Ecrire une nouvelle ligne
DINI_fcopytextfile(oldname[],newname[]) // Copier le fichier vers un autre




J'espere ne pas dire de bêtises,

Spiirou
++
« Modifié: 05 Janvier 2011, 20:23:03 par spiirou »

Hors ligne Tux

  • *
  • Tueur en série
  • GeChaud =3
  • Messages: 112
    • Voir le profil
    • Trace - Serveur Multi Modes
Re : Comment enregistrer une variable en dini
« Réponse #8 le: 05 Janvier 2011, 20:15:15 »
De plus

Code: (pawn) [Sélectionner]
stock CompteJoueur(playerid)
{
new str2[MAX_PLAYER_NAME+20];//avant c'était +5
format(str2,sizeof(str2),"%s.data",nom(playerid));
return str2;
}

Et la fonction nom() est-elle correcte ?

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Comment enregistrer une variable en dini
« Réponse #9 le: 05 Janvier 2011, 20:21:01 »
Merci spiroo ça devrait m'aider ça :)

Voici la fonction name:
stock nom(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Comment enregistrer une variable en dini
« Réponse #10 le: 05 Janvier 2011, 20:23:43 »
Mise a jour de mon post ;)
Tu as tout comme ça.

Spiirou
++

Hors ligne Tux

  • *
  • Tueur en série
  • GeChaud =3
  • Messages: 112
    • Voir le profil
    • Trace - Serveur Multi Modes
Re : Re : Comment enregistrer une variable en dini
« Réponse #11 le: 05 Janvier 2011, 20:25:55 »
Merci spiroo ça devrait m'aider ça :)

Voici la fonction name:
stock nom(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}

Le code semble correct... C'est étrange... Enfin bon, ça peut aussi venir du fait que le code est assez compressé ^^.

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Comment enregistrer une variable en dini
« Réponse #12 le: 05 Janvier 2011, 20:30:04 »
Et pour le login vous avez des idées, car j'ai essayé avec les indications de spiroo, j'ai donc utilisé dini_int car je veux lire la variable au moment de se loguer.
J'ai donc mis:
new str[MAX_PLAYER_NAME+4];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,  name, MAX_PLAYER_NAME);
format(str, MAX_PLAYER_NAME+4, "%s.data", name);
dini_Int(str,"Kills",pkills[playerid]);
Mais je reçois comme erreur:
C:\Users\Utilisateur\Desktop\samp 0.3c\gamemodes\01_01_11d.pwn(7307) : warning 202: number of arguments does not match definition

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Comment enregistrer une variable en dini
« Réponse #13 le: 05 Janvier 2011, 20:53:35 »
je pense que je vais creer un tuto pour Dini sa serviras a tous je pense ^^
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Comment enregistrer une variable en dini
« Réponse #14 le: 05 Janvier 2011, 21:03:32 »
Merci beaucoup à tous le monde, tous mes problèmes sur dini sont résolus pour le moment.
je donne quand même la réponse que m'a donné rambo car je n'aime pas les topic sans réponses:

pdeaths[playerid] = dini_Int(CompteJoueur(playerid),"Deaths");

Bonne soirée,

A+ ;)