Salut,
personnellement, je n'.aime pas trop cette façon de procéder.. ça me semble un peu pèle mêle et compliqué pour rien.
déjà, si en partant tu ne vérifie qu'à la première ligne si la « key » est « password », il ne te sert à rien de la vérifier....
mes questions:
new PassData[256];
new keytmp[256], valtmp[256];//beaucoup de variables....
fread( UserFile , PassData , sizeof( PassData ) );//ici tu récupère de ton fichier, ca va
keytmp = ini_GetKey( PassData );//ici tu récupère la key, ca va, parcontre ces deux ligne (fread et ini_getkey devraient être dans une loop jusqu'à trouver la bonne ligne
if( strcmp( keytmp , "Password" , true ) == 0 )//vérification si c'est le bon key, ca va
{
valtmp = ini_GetValue( PassData );//récupération du string
strmid(InfoJoueur[playerid][aPassword], valtmp, 0, strlen(valtmp)-1, 255);//pourquoi strmid? un format aurait fait un bon boulot (tu récupère le string entier.....)
}
if(strcmp(InfoJoueur[playerid][aPassword],password, true ) == 0 )//pourquoi ne pas avoir testé directement le valtmp?
{
for(new p = 0; p < strlen(InfoJoueur[playerid][aPassword]); p++)
{
password[p] = '?';//pourquoi placer des ? PARTOUT
}
bref, je te recommande un code du genre:
new PassData[256];
do
{
fread( UserFile , PassData , sizeof( PassData ) );//ici tu récupère de ton fichier, ca va
}
while(strcmp( keytmp , "Password" , true, 8));//vérification si c'est le bon key, ca va
PassData = ini_GetValue( PassData );//pourquoi utiliser une autre variable alors que l'on a plus besoin de cette "vieille" variable?
if(strcmp(PassData,password, true ) == 0 )//pourquoi ne pas avoir testé directement le valtmp?
{
format(InfoJoueur[playerid][aPassword], 128 /*je crois*/, "%s",valtmp);
.....
}
else//s'il ne s'agit pas du bon mot de passe
{
.....
}
voilà
en espérant que tu arrive à quelque chose avec ce code...
PS. Il est fort probable que je me soit complètement gouré, le code que tu as posté est plutôt incomplet...
++Sim++