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;
}