GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: LePtitClown le 10 Juin 2012, 16:15:21

Titre: Changer le nom d'un fichier dini
Posté par: LePtitClown le 10 Juin 2012, 16:15:21
Slt

Est il possible de changer le nom d'un fichier dini directement dans le jeu tout en gardant les variables qu'il contient

Merci d'avance

A+ ;)
Titre: Re : Changer le nom d'un fichier dini
Posté par: spiirou le 10 Juin 2012, 16:47:43
Regarde du coté de DINI_fcopytextfile(oldname[],newname[]);, ca risque de t'interesser ;)
Titre: Re : Changer le nom d'un fichier dini
Posté par: LePtitClown le 10 Juin 2012, 17:57:42
ça a l'air de correspondre, merci. Plus qu'à décrypter tout ça

Résultat des comptes, tout n'est pas copié. Je m'explique, il y a juste le nom des variables qui est copié mais en aucun cas leur contenu. Voici mon code:

dcmd_asetname(playerid,params[])
{
    if(leveladmin[playerid] >1 || IsPlayerAdmin(playerid))
    {
if(dini_Exists(CompteJoueur(playerid)))
{
new pid,idx, tmp[256], tmpp[256];
tmpp = strtok(params, idx);
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_ADMINCMD, "USAGE: /asetname [playerid] [nouveau pseudo pour compte]");
return 1;
}
pid = strval(tmpp);
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_ADMINCMD, "Ce joueur n'est pas connecté!");
return 1;
}
   if(PI[pid][car] != -1)
{
   ERRORMSG("Vous ne pouvez pas renommer ce joueur car il a un véhicule (risque de bug)");
}
new ancienpseudo[MAX_PLAYER_NAME];
GetPlayerName(pid,ancienpseudo,sizeof(ancienpseudo));

new str3[MAX_PLAYER_NAME+20];//avant c'était +5
format(str3,sizeof(str3),"%s.data",ancienpseudo);

tmp = strtok(params, idx);
SetPlayerName(pid,tmp);
new nouveaupseudo[MAX_PLAYER_NAME];
GetPlayerName(pid,nouveaupseudo,sizeof(nouveaupseudo));
GetPlayerName(pid, initialname[pid], 100);

new str4[MAX_PLAYER_NAME+20];
format(str4,sizeof(str4),"%s.data",nouveaupseudo);
DINI_fcopytextfile(str3,str4);

login(pid);
format(string2, sizeof(string2), "[ADMIN] On a changé le pseudo lié à ton compte en %s. Tu devras donc déormais utilisé ce pseudo pour ton compte ", nouveaupseudo);
SendClientMessage(pid,COLOR_INFO, string2);
}
}
else
{
   SystemMsg(playerid,"Vous n'avez pas le niveau requis pour utiliser cette commande");//rajoutertest
}
return 1;
}
Titre: Re : Changer le nom d'un fichier dini
Posté par: cristab le 10 Juin 2012, 21:46:30
bizard je n'ai jamais eu ce soucis
Titre: Re : Changer le nom d'un fichier dini
Posté par: LePtitClown le 11 Juin 2012, 11:51:56
Le fait que tu n'es jamais eu ce soucis m'a fait réfléchir. J'ai donc regardé ce que j'avais de différent.
Voici la bête noire: login(pid);

Cette fonction stock qui me permet normalement de loguer les différentes variables du compte. Comme elle n'est pas vraiment utile à cette endroit vu qu'il s'agit juste d'un changement de pseudo, je l'ai viré et ça marche nickel:

Un grand merci à vous deux :)

A+ ;)