GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: mehdi-jumper le 26 Février 2012, 18:29:44
-
Salut à tous,
Ajourd'hui je viens vers vous car je rencontre un problème dans mon système d'enregistrement de données à la connexion/déconnexion.
Lorsque je vais dans mon fichiers d'utilisateur je vois ceci:
[Données]
Mot de passe = salut
Argent = 0
Admin = 0
Nombre de tues = 0
Mort = 0
Nombre de tues = 0
Voici mon code d'enregistrement:
enum pInfo
{
pMdp,
pArgent,
pAdmin,
pTues,
pMort
}
new PlayerInfo[MAX_PLAYERS][pInfo];
forward ChargementJoueur_Donnees(playerid,name[],value[]);
public ChargementJoueur_Donnees(playerid,name[],value[])
{
INI_Int("Mot de passe:",PlayerInfo[playerid][pMdp]);
INI_Int("Argent:",PlayerInfo[playerid][pArgent]);
INI_Int("Admin:",PlayerInfo[playerid][pAdmin]);
INI_Int("Nombre de tues:",PlayerInfo[playerid][pTues]);
INI_Int("Mort:",PlayerInfo[playerid][pMort]);
return 1;
}
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "ChargementJoueur_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Tape ton mot de passe pour te connecter.","Login","Quit");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Enregistrement...",""COL_WHITE"Choisi un mot de passe.","Enregistrer","Quit");
}
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"Données");
INI_WriteInt(File,"Argent",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Nombre de tues",PlayerInfo[playerid][pTues]);
INI_WriteInt(File,"Mort",PlayerInfo[playerid][pMort]);
INI_Close(File);
return 1;
}
Comment faire pour n'avoir que 1 seule fois leNombre de tues =
?
Indice qui pourrait vous aider, à chaque fois que je me connecte et me déconnecte, une nouvelle ligne Nombre de tues = apparait
Merci beaucoup!
-
Il doit y avoir deux insertions de données.
Cherche "Nombre de tues:" dans ton code.
-
Oui je sais qu'il doit en avoir 2 mais j'en vois que une.
Voilà tout les codes ou Nombre de tues:
apparait:
public ChargementJoueur_Donnees(playerid,name[],value[])
{
INI_Int("Mot de passe:",PlayerInfo[playerid][pMdp]);
INI_Int("Argent:",PlayerInfo[playerid][pArgent]);
INI_Int("Admin:",PlayerInfo[playerid][pAdmin]);
INI_Int("Nombre de tues:",PlayerInfo[playerid][pTues]);
INI_Int("Mort:",PlayerInfo[playerid][pMort]);
INI_Int("Ban:",PlayerInfo[playerid][pBan]);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"Données");
INI_WriteInt(File,"Argent",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Nombre de tues",PlayerInfo[playerid][pTues]);
INI_WriteInt(File,"Mort",PlayerInfo[playerid][pMort]);
INI_WriteInt(File,"Ban",PlayerInfo[playerid][pBan]);
INI_Close(File);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
{
case DIALOG_REGISTER:
{
if (!response) return Kick(playerid);
if(response)
{
strmid(tmppass, inputtext, 0, strlen(inputtext), 255);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Enregistrement...",""COL_RED"Votre mot de passe est incorrect.\n"COL_WHITE"Tape ton mot de passe pour t'enregistrer.","Enregistrer","Quitter");
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"Données");
INI_WriteString(File,"Mot de passe",tmppass);
INI_WriteInt(File,"Argent",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Nombre de tues",0);
INI_WriteInt(File,"Mort",0);
INI_Close(File);
SpawnPlayer(playerid);
ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Félicitation!",""COL_GREEN"Bien, Tu viens de t'inscrire! Bienvenue sur","Ok","");
}
}
case DIALOG_LOGIN:
{
if (!response) return Kick (playerid);
if(response)
{
if(strlen(tmppass) == PlayerInfo[playerid][pMdp])
{
INI_ParseFile(UserPath(playerid), "ChargementJoueur_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pArgent]);
PlayerInfo[playerid][pBan] = 0;
ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Félicitation!",""COL_GREEN"Bienvenue Sur /n Nouveautés:","Ok","");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"Vous avez entré un mot de passe invalide.\n"COL_WHITE"Retape ton mot de passe.","Login","Quitter");
}
return 1;
}
}
}
return 1;
}
Et j'ai aussi un autre problème c'est que si on met pas de mot de passe on arrive a se connecter mais si on en mais un on y arrive pas. Cela viens d'ici:
if(strlen(tmppass) == PlayerInfo[playerid][pMdp])
la structure est mauvaise? j'utilise pas ce qu'il faut? Merci de m'aider je galère pour ceci
Voilà
-
Si tu veux comparer deux chaînes, utiliser strcmp.