GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Xx_Men_xX le 02 Novembre 2013, 11:07:16
-
Bonjour,
J'ai un problème avec mon système de Register/Login
Je veux que lorsque l'on entre 4 fois un mot de passe incorrect, le joueur soit kické, donc j'ai fais ça :
Code : http://pastebin.com/0NZf6iy8 (http://pastebin.com/0NZf6iy8)
Le problème c'est que In Game, si je rentre un mot de passe incorrect sa me kick à la 1ère tentative alors que normalement, j'ai le droit à 4 tentatives ?
Je ne vois pas ce qui vas pas dans mon code.
Pouvez-vous m'aider SVP ?
Merci d'avance.
-
Tu as créé une boucle infinie qui incrémente la variable et déconnecte donc le joueur après 4 tentatives (mais une seule pour le joueur). Pour résoudre ça, transforme ta boucle en condition et nettoies un peu ton code. Voilà ton code modifié et fonctionnel (pas compilé, j'ai codé ça sur le forum) :
new incorrect_password = 0;
case DIALOG_LOGGER:
{
if(response)
{
if(udb_hash(inputtext) != PlayerInfo[playerid][pPasse])
{
incorrect_password++;
if(incorrect_password >= 4)
Kick(playerid);
ShowPlayerDialog(playerid, DIALOG_LOGGER, DIALOG_STYLE_INPUT, "Connexion", "Mot de passe incorrect. Réessayez:", "Connexion", "Quitter");
}
else if(udb_hash(inputtext) == PlayerInfo[playerid][pPasse])
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pArgent]);
EstLogger[playerid] = true;
ShowPlayerDialog(playerid, 500, DIALOG_STYLE_MSGBOX, "Connexion", "Vous êtes maintenant connecté à votre compte.", "Ok", "");
}
}
else
Kick(playerid);
return true;
}