GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Jawitt le 01 Avril 2010, 18:39:01
-
Bonjour,
Ayant créer mon système d'enregistrement, quand j'entre le mot de passe lors de la connexion, il me dis que ce n'es pas le bon mot de passe :
OnPlayerLogin :
public OnPlayerLogin(playerid,const string[])
{
new pname2[MAX_PLAYER_NAME];
new pname3[MAX_PLAYER_NAME];
new string2[64];
new string3[128];
GetPlayerName(playerid, pname2, sizeof(pname2));
format(string2, sizeof(string2), "comptes/%s.ini", pname2);
new File: UserFile = fopen(string2, io_read);
if (UserFile)
{
new valtmp[128];
fread(UserFile, valtmp);strmid(JoueurInfo[playerid][jMotDePasse], valtmp, 0, strlen(valtmp)-1, 255);
if ((strcmp(JoueurInfo[playerid][jMotDePasse], string, true, strlen(valtmp)-1) == 0))
{
new key[128],val[128];
new Data[128];
while(fread(UserFile,Data,sizeof(Data)))
{
key = ini_GetKey(Data);
if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); JoueurInfo[playerid][jLevel] = strval( val ); }
if( strcmp( key , "Respect" , true ) == 0 ) { val = ini_GetValue( Data ); JoueurInfo[playerid][jExp] = strval( val ); }
if( strcmp( key , "Argent" , true ) == 0 ) { val = ini_GetValue( Data ); JoueurInfo[playerid][jArgent] = strval( val ); }
if( strcmp( key , "LevelAdmin" , true ) == 0 ) { val = ini_GetValue( Data ); JoueurInfo[playerid][jAdmin] = strval( val ); }
GivePlayerMoney(playerid,JoueurInfo[playerid][jArgent]);
}
fclose(UserFile);
jEnLigne[playerid] = 1;
jCompte[playerid] = 1;
new score = JoueurInfo[playerid][jLevel];
SetPlayerScore(playerid, score);
GetPlayerName(playerid, pname3, sizeof(pname3));
format(string3, sizeof(string3), "Vous avez été correctement connecté !");
SendClientMessage(playerid, C_BLANC,string3);
}
else
{
SendClientMessage(playerid, C_BLANC, "Le mot de passe est invalide !!");
fclose(UserFile);
}
}
return 1;
}
Et mon /login
if (strcmp(cmd, "/login", true) ==0 )
{
if(IsPlayerConnected(playerid))
{
new tmppass[64];
if(jEnLigne[playerid] == 1)
{
SendClientMessage(playerid, C_GRIS, " Vous êtes déjà connecté.");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, C_GRIS, " UTILISATION: /login [mot de passe]");
return 1;
}
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
String(tmppass);
OnPlayerLogin(playerid,tmppass);
}
return 1;
}
Pouvez vous m'aidez s'il vous plait ? merci d'avance
-
J'ai pas trop compris le système, mais cela vient du mot de passe rechercher quand le joueur de logge, donc regarde de ce coté. J'ai eu un problème pareil aujourd'hui, on avait, avec FuSion, enfin, surtout FuSion, foiré le récupérage du mot de passe, et ca nous créé le même bug que toi.
Mais je na sais pas si cela va t'aider.
++
Barto
-
Salut, une fois ce bug m'étais arriver, enfin un bug, s'en n'étais pas vraiment un. En faites ce soucis venu de l'ouverture du .ini avec le bloc note le mot de passe n'a pas été charger car le mot de passe est crypté avec des caractères spéciales, donc j'avais l'info "key=" enfaite il ne fallais rien mettre pour me loguez et si je mettais un mot de passe c'étais différent de '' Ensemble vide " Donc il me le refusés, j'ai donc copier/coller un vieux mdp cryptés que j'avais sur un ancien compte et ensuite sa marchais :)
A+ tard dans l'placard,
Sam. :cheers
-
Regardes bien la ligne que j'ai extraite de ton code et essaies d'y trouver l'erreur (les autres peuvent jouer aussi :))
if ((strcmp(JoueurInfo[playerid][jMotDePasse], string, true, strlen(valtmp)-1) == 0))
NB : Ce n'est peut-être pas la seule erreur que contient ton script (j'ai pas regarder la suite) mais en tout cas, ton code n'ira pas plus loin que ce test.
++
Syg