Bonjour à tous,
J'ai un problème, je créer un système de register/login à l'aide de ce tuto:
http://forum.sa-mp.com/showthread.php?t=273088 . Il marchais bien jusqu'a présent et depuis que j'ai mis les positions X, Y, Z et l'angle A à sauvegarder lors de la déconnection, sa fait n'importe quoi, je comprend pas ce qui ne vas pas. Ce qui ce passe c'est que, les positions dans le fichier .ini sont réécrites les unes à la suite des autres, à chaque déconnexion elle "s'entasse" comme ceci:
Fichier .ini aprés plusieurs déconnexion
[data]
Password = 236847831
Cash = 500
Sex = 1
Age = 20
Admin = 0
Skin = 30
InteriorID = 0
X position = -1964.857055
Y position = 139.000274
Z position = 27.694049
A angle = 38.540363
X position = -1972.422485
Y position = 138.947311
Z position = 27.687500
A angle = 52.327156
X position = 132.000000
Y position = -67.291633
Z position = 1.578125
A angle = 0.000000
Normalement il faudrait juste que ça fasse:
[data]
Password = 236847831
Cash = 500
Sex = 1
Age = 20
Admin = 0
Skin = 30
InteriorID = 0
X position = -1964.857055
Y position = 139.000274
Z position = 27.694049
A angle = 38.540363
Défois je spawn au coordonnées X=0, Y=0,Z=0 sous la map dans un champs.
Voici le code:
public OnPlayerDisconnect(playerid, reason) // Quand le joueur se déconnecte
{
new name[MAX_PLAYER_NAME], str[MAX_STRING];
GetPlayerName(playerid, name, sizeof(name));
format(str, sizeof(str), "%s a quitté le serveur", name);
SendClientMessageToAll(COLOR_GREY, str);
if(register_complete == true)
{
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
PlayerInfo[playerid][pSkin] = GetPlayerSkin(playerid);
GetPlayerPos(playerid, PlayerInfo[playerid][pXpos], PlayerInfo[playerid][pYpos], PlayerInfo[playerid][pZpos]);
GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pAangle]);
PlayerInfo[playerid][pInteriorID] = GetPlayerInterior(playerid);
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Password",PlayerInfo[playerid][pPass]);
INI_WriteInt(File,"Cash",PlayerInfo[playerid][pCash]);
INI_WriteInt(File,"Sex",PlayerInfo[playerid][pSex]);
INI_WriteInt(File,"Age",PlayerInfo[playerid][pAge]);
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Skin",PlayerInfo[playerid][pSkin]);
INI_WriteInt(File,"InteriorID",PlayerInfo[playerid][pInteriorID]);
INI_WriteFloat(File,"X position",PlayerInfo[playerid][pXpos]);
INI_WriteFloat(File,"Y position",PlayerInfo[playerid][pYpos]);
INI_WriteFloat(File,"Z position",PlayerInfo[playerid][pZpos]);
INI_WriteFloat(File,"A angle",PlayerInfo[playerid][pAangle]);
INI_Close(File);
}
else
{
}
return 1;
}
public OnPlayerSpawn(playerid)
{
TogglePlayerSpectating(playerid, 0);
StopAudioStreamForPlayer(playerid);
if(first_spawn == true)
{
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid,-1964.1395,138.2326,27.6940);
SetPlayerFacingAngle(playerid,90.1103);
SetPlayerInterior(playerid, 0);
}
else
{
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, PlayerInfo[playerid][pXpos],PlayerInfo[playerid][pYpos], PlayerInfo[playerid][pZpos]);
SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pAangle]);
SetPlayerInterior(playerid, PlayerInfo[playerid][pInteriorID]);
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
PlayerInfo[playerid][pCash] = 500; // Register
GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
PlayerInfo[playerid][pXpos] = 0.0;
PlayerInfo[playerid][pYpos] = 0.0;
PlayerInfo[playerid][pZpos] = 0.0;
first_spawn = true;
register_complete = true;
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Password",PlayerInfo[playerid][pPass]);
INI_WriteInt(File,"Cash",PlayerInfo[playerid][pCash]);
INI_WriteInt(File,"Sex",PlayerInfo[playerid][pSex]);
INI_WriteInt(File,"Age",PlayerInfo[playerid][pAge]);
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Skin",PlayerInfo[playerid][pSkin]);
INI_WriteInt(File,"InteriorID",PlayerInfo[playerid][pInteriorID]);
INI_Close(File);
}
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Sex",PlayerInfo[playerid][pSex]);
INI_Int("Age",PlayerInfo[playerid][pAge]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Skin",PlayerInfo[playerid][pSkin]);
INI_Float("X position",PlayerInfo[playerid][pXpos]);
INI_Float("Y position",PlayerInfo[playerid][pYpos]);
INI_Float("Z position",PlayerInfo[playerid][pZpos]);
INI_Float("A angle",PlayerInfo[playerid][pAangle]);
INI_Int("InteriorID",PlayerInfo[playerid][pInteriorID]);
return 1;
}
Si il manque des paranthèses ou autre dans certain bout de code, c'est normal, j'ai mis juste le nécessaire vite fait.
Merci d'avance pour votre aide.