01.02.2015, 23:56
Hello, basically, what happens is I use y_ini to save data. I have my code below, and what is happening is sometimes it will save data twice.
If you look at that, you notice the positions are not properly saving. I have a hunch it has something to do with that as before I put in that feature the problem wasnt there.
Here are my enums:
Functions, Stocks and Forwards.
Registering/Logging in:
Account Loading:
Account Saving:
The below is included because weapons are also not saving.
Any help would be greatly appreciated.
P.S. This is my first GM guys, if it has any major issues please don't say it sucks or blah blah blah, just let me know and I'll try to fix it!
P.S.S. I apologize if the forum fucks up my indentation, I can assure you it is correct in the actual editor :P
Код:
[Player_Data] Password = redacted AdminLevel = 5 VIPLevel = 5 Money = 100000 Scores = 0 Kills = 0 Deaths = 0 Color = 0 Skin = 250 GodEnabled = 0 isAFK = 0 Muted = 0 Logged = 0 CustomSlot0 = 0 CustomSlot0a = 0 CustomSlot1 = 0 CustomSlot1a = 0 CustomSlot2 = 0 CustomSlot2a = 0 CustomSlot3 = 0 CustomSlot3a = 0 CustomSlot4 = 0 CustomSlot4a = 0 CustomSlot5 = 0 CustomSlot5a = 0 CustomSlot6 = 0 CustomSlot6a = 0 CustomSlot7 = 0 CustomSlot7a = 0 CustomSlot8 = 0 CustomSlot8a = 0 CustomSlot9 = 0 CustomSlot9a = 0 CustomSlot10 = 0 CustomSlot10a = 0 CustomSlot11 = 0 CustomSlot11a = 0 POS_X = § POS_Y = POS_Z = [Player_Data] AdminLevel = 5 VIPLevel = 5 Money = 100000 Scores = 0 Kills = 0 Deaths = 0 Logged = 0 Color = 0 Skin = 250 CustomSlot0 = 0 CustomSlot0a = 0 CustomSlot1 = 0 CustomSlot1a = 0 CustomSlot2 = 0 CustomSlot2a = 0 CustomSlot3 = 0 CustomSlot3a = 0 CustomSlot4 = 0 CustomSlot4a = 0 CustomSlot5 = 0 CustomSlot5a = 0 CustomSlot6 = 0 CustomSlot6a = 0 CustomSlot7 = 0 CustomSlot7a = 0 CustomSlot8 = 0 CustomSlot8a = 0 CustomSlot9 = 0 CustomSlot9a = 0 CustomSlot10 = 0 CustomSlot10a = 0 CustomSlot11 = 0 CustomSlot11a = 0 POS_X = Ё POS_Y = POS_Z =
Here are my enums:
pawn Код:
enum PlayerInfo
{
Pass[129],
Adminlevel,
VIPlevel,
Money,
Scores,
Kills,
Deaths,
Logged,
Color,
Skin,
GodEnabled,
CustomSlot0,
CustomSlot1,
CustomSlot2,
CustomSlot3,
CustomSlot4,
CustomSlot5,
CustomSlot6,
CustomSlot7,
CustomSlot8,
CustomSlot9,
CustomSlot10,
CustomSlot11,
CustomSlot0a,
CustomSlot1a,
CustomSlot2a,
CustomSlot3a,
CustomSlot4a,
CustomSlot5a,
CustomSlot6a,
CustomSlot7a,
CustomSlot8a,
CustomSlot9a,
CustomSlot10a,
CustomSlot11a,
isAFK,
Muted,
POS_X,
POS_Y,
POS_Z
}
new pInfo[MAX_PLAYERS][PlayerInfo];
pawn Код:
stock Path(playerid)
{
new str[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(str,sizeof(str),UserPath,name);
return str;
}
pawn Код:
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(fexist(Path(playerid)))
{
INI_ParseFile(Path(playerid), "loadaccount_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid,dlogin,DIALOG_STYLE_INPUT,"Login","Welcome back. This account is registered. \nInsert your password to login to your account","Login","Quit");
}
else
{
ShowPlayerDialog(playerid,dregister,DIALOG_STYLE_INPUT,"Register","Welcome! This account is not registered.\nEnter your own password to create a new account.","Register","Quit");
}
return 1;
}
pawn Код:
forward loadaccount_user(playerid, name[], value[]);
public loadaccount_user(playerid, name[], value[])
{
INI_String("Password", pInfo[playerid][Pass],129);
INI_Int("AdminLevel",pInfo[playerid][Adminlevel]);
INI_Int("VIPLevel",pInfo[playerid][VIPlevel]);
INI_Int("Money",pInfo[playerid][Money]);
INI_Int("Scores",pInfo[playerid][Scores]);
INI_Int("Kills",pInfo[playerid][Kills]);
INI_Int("Deaths",pInfo[playerid][Deaths]);
INI_Int("Color",pInfo[playerid][Color]);
INI_Int("Skin",pInfo[playerid][Skin]);
INI_Int("GodEnabled",pInfo[playerid][GodEnabled]);
INI_Int("CustomSlot0",pInfo[playerid][CustomSlot0]);
INI_Int("CustomSlot1",pInfo[playerid][CustomSlot1]);
INI_Int("CustomSlot2",pInfo[playerid][CustomSlot2]);
INI_Int("CustomSlot3",pInfo[playerid][CustomSlot3]);
INI_Int("CustomSlot4",pInfo[playerid][CustomSlot4]);
INI_Int("CustomSlot5",pInfo[playerid][CustomSlot5]);
INI_Int("CustomSlot6",pInfo[playerid][CustomSlot6]);
INI_Int("CustomSlot7",pInfo[playerid][CustomSlot7]);
INI_Int("CustomSlot8",pInfo[playerid][CustomSlot8]);
INI_Int("CustomSlot9",pInfo[playerid][CustomSlot9]);
INI_Int("CustomSlot10",pInfo[playerid][CustomSlot10]);
INI_Int("CustomSlot11",pInfo[playerid][CustomSlot11]);
INI_Int("CustomSlot0a",pInfo[playerid][CustomSlot0a]);
INI_Int("CustomSlot1a",pInfo[playerid][CustomSlot1a]);
INI_Int("CustomSlot2a",pInfo[playerid][CustomSlot2a]);
INI_Int("CustomSlot3a",pInfo[playerid][CustomSlot3a]);
INI_Int("CustomSlot4a",pInfo[playerid][CustomSlot4a]);
INI_Int("CustomSlot5a",pInfo[playerid][CustomSlot5a]);
INI_Int("CustomSlot6a",pInfo[playerid][CustomSlot6a]);
INI_Int("CustomSlot7a",pInfo[playerid][CustomSlot7a]);
INI_Int("CustomSlot8a",pInfo[playerid][CustomSlot8a]);
INI_Int("CustomSlot9a",pInfo[playerid][CustomSlot9a]);
INI_Int("CustomSlot10a",pInfo[playerid][CustomSlot10a]);
INI_Int("CustomSlot11a",pInfo[playerid][CustomSlot11a]);
INI_Int("isAFK",pInfo[playerid][isAFK]);
INI_Int("Muted",pInfo[playerid][Muted]);
INI_String("POS_X",pInfo[playerid][POS_X]);
INI_String("POS_Y",pInfo[playerid][POS_Y]);
INI_String("POS_Z",pInfo[playerid][POS_Z]);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == dregister)
{
if(!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,dregister,DIALOG_STYLE_INPUT,"Register","Welcome! This account is not registered.\nEnter your own password to create a new account.\nPlease enter the password!","Register","Quit");
return 1;
}
new hashpass[129];
WP_Hash(hashpass,sizeof(hashpass),inputtext);
new INI:file = INI_Open(Path(playerid));
INI_SetTag(file,"Player_Data");
INI_WriteString(file,"Password",hashpass);
INI_WriteInt(file,"AdminLevel",0);
INI_WriteInt(file,"VIPLevel",0);
INI_WriteInt(file,"Money",0);
INI_WriteInt(file,"Scores",0);
INI_WriteInt(file,"Kills",0);
INI_WriteInt(file,"Deaths",0);
INI_WriteInt(file,"Color",COLOR_WHITE);
INI_WriteInt(file,"Skin",162);
INI_WriteInt(file,"GodEnabled",0);
INI_WriteInt(file,"isAFK",0);
INI_WriteInt(file,"Muted",0);
INI_Close(file);
return 1;
}
}
if(dialogid == dlogin)
{
if(!response) return Kick(playerid);
if(response)
{
new hashpass[129];
WP_Hash(hashpass,sizeof(hashpass),inputtext);
if(!strcmp(hashpass, pInfo[playerid][Pass], false))
{
INI_ParseFile(Path(playerid),"loadaccount_%s",.bExtra = true, .extra = playerid);
SpawnPlayer(playerid);
}
else
{
ShowPlayerDialog(playerid,dlogin,DIALOG_STYLE_INPUT,"Login","Welcome back. This account is registered. \nInsert your password to login to your account.\nIncorrect password!","Login","Quit");//We will tell to them that they've entered an incorrect password
return 1;
}
}
}
return 1;
}
public OnPlayerSpawn(playerid)
{
pInfo[playerid][Logged] = 1;
SetPlayerPos(playerid, 2506.0935, -1672.0536, 13.3714);
SetPlayerSkin(playerid, pInfo[playerid][Skin]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot0], pInfo[playerid][CustomSlot0a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot1], pInfo[playerid][CustomSlot1a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot2], pInfo[playerid][CustomSlot2a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot3], pInfo[playerid][CustomSlot3a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot4], pInfo[playerid][CustomSlot4a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot5], pInfo[playerid][CustomSlot5a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot6], pInfo[playerid][CustomSlot6a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot7], pInfo[playerid][CustomSlot7a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot8], pInfo[playerid][CustomSlot8a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot9], pInfo[playerid][CustomSlot9a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot10], pInfo[playerid][CustomSlot10a]);
GivePlayerWeapon(playerid, pInfo[playerid][CustomSlot11], pInfo[playerid][CustomSlot11a]);
}
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
pInfo[playerid][Logged] = 0;
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
pInfo[playerid][POS_X] = Float:x;
pInfo[playerid][POS_Y] = Float:y;
pInfo[playerid][POS_Z] = Float:z;
new INI:file = INI_Open(Path(playerid));
INI_SetTag(file,"Player_Data");
INI_WriteInt(file,"AdminLevel",pInfo[playerid][Adminlevel]);
INI_WriteInt(file,"VIPLevel",pInfo[playerid][VIPlevel]);
INI_WriteInt(file,"Money",GetPlayerMoney(playerid));
INI_WriteInt(file,"Scores",GetPlayerScore(playerid));
INI_WriteInt(file,"Kills",pInfo[playerid][Kills]);
INI_WriteInt(file,"Deaths",pInfo[playerid][Deaths]);
INI_WriteInt(file,"Logged",pInfo[playerid][Logged]);
INI_WriteInt(file,"Color",pInfo[playerid][Color]);
INI_WriteInt(file,"Skin",pInfo[playerid][Skin]);
INI_WriteInt(file,"CustomSlot0",pInfo[playerid][CustomSlot0]);
INI_WriteInt(file,"CustomSlot0a",pInfo[playerid][CustomSlot0a]);
INI_WriteInt(file,"CustomSlot1",pInfo[playerid][CustomSlot1]);
INI_WriteInt(file,"CustomSlot1a",pInfo[playerid][CustomSlot1a]);
INI_WriteInt(file,"CustomSlot2",pInfo[playerid][CustomSlot2]);
INI_WriteInt(file,"CustomSlot2a",pInfo[playerid][CustomSlot2a]);
INI_WriteInt(file,"CustomSlot3",pInfo[playerid][CustomSlot3]);
INI_WriteInt(file,"CustomSlot3a",pInfo[playerid][CustomSlot3a]);
INI_WriteInt(file,"CustomSlot4",pInfo[playerid][CustomSlot4]);
INI_WriteInt(file,"CustomSlot4a",pInfo[playerid][CustomSlot4a]);
INI_WriteInt(file,"CustomSlot5",pInfo[playerid][CustomSlot5]);
INI_WriteInt(file,"CustomSlot5a",pInfo[playerid][CustomSlot5a]);
INI_WriteInt(file,"CustomSlot6",pInfo[playerid][CustomSlot6]);
INI_WriteInt(file,"CustomSlot6a",pInfo[playerid][CustomSlot6a]);
INI_WriteInt(file,"CustomSlot7",pInfo[playerid][CustomSlot7]);
INI_WriteInt(file,"CustomSlot7a",pInfo[playerid][CustomSlot7a]);
INI_WriteInt(file,"CustomSlot8",pInfo[playerid][CustomSlot8]);
INI_WriteInt(file,"CustomSlot8a",pInfo[playerid][CustomSlot8a]);
INI_WriteInt(file,"CustomSlot9",pInfo[playerid][CustomSlot9]);
INI_WriteInt(file,"CustomSlot9a",pInfo[playerid][CustomSlot9a]);
INI_WriteInt(file,"CustomSlot10",pInfo[playerid][CustomSlot10]);
INI_WriteInt(file,"CustomSlot10a",pInfo[playerid][CustomSlot10a]);
INI_WriteInt(file,"CustomSlot11",pInfo[playerid][CustomSlot11]);
INI_WriteInt(file,"CustomSlot11a",pInfo[playerid][CustomSlot11a]);
INI_WriteString(file,"POS_X",pInfo[playerid][POS_X]);
INI_WriteString(file,"POS_Y",pInfo[playerid][POS_Y]);
INI_WriteString(file,"POS_Z",pInfo[playerid][POS_Z]);
INI_Close(file);
return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==WEAP_DIALOG)
{
if(response)
{
switch(listitem)
{
case 0:
{
SellWeapon(playerid,0,43,1);
pInfo[playerid][CustomSlot9] == 43;
pInfo[playerid][CustomSlot9a] == 1;
}
case 1:
{
SellWeapon(playerid,0,22,1000);
pInfo[playerid][CustomSlot2] == 22;
pInfo[playerid][CustomSlot2a] == 1000;
}
case 2:
{
SellWeapon(playerid,0,23,1000);
pInfo[playerid][CustomSlot2] == 23;
pInfo[playerid][CustomSlot2a] == 1000;
}
case 3:
{
SellWeapon(playerid,0,24,1000);
pInfo[playerid][CustomSlot2] == 24;
pInfo[playerid][CustomSlot3a] == 1000;
}
case 4:
{
SellWeapon(playerid,0,32,1000);
pInfo[playerid][CustomSlot4] == 32;
pInfo[playerid][CustomSlot4a] == 1000;
}
case 5:
{
SellWeapon(playerid,0,28,1000);
pInfo[playerid][CustomSlot4] == 28;
pInfo[playerid][CustomSlot4a] == 1000;
}
case 6:
{
SellWeapon(playerid,0,29,1000);
pInfo[playerid][CustomSlot4] == 29;
pInfo[playerid][CustomSlot4a] == 1000;
}
case 7:
{
SellWeapon(playerid,0,26,1000);
pInfo[playerid][CustomSlot3] == 26;
pInfo[playerid][CustomSlot3a] == 1000;
}
case 8:
{
SellWeapon(playerid,0,25,1000);
pInfo[playerid][CustomSlot3] == 25;
pInfo[playerid][CustomSlot3a] == 1000;
}
case 9:
{
SellWeapon(playerid,0,27,1000);
pInfo[playerid][CustomSlot3] == 27;
pInfo[playerid][CustomSlot3a] == 1000;
}
case 10:
{
SellWeapon(playerid,0,30,1000);
pInfo[playerid][CustomSlot5] == 30;
pInfo[playerid][CustomSlot5a] == 1000;
}
case 11:
{
SellWeapon(playerid,0,31,1000);
pInfo[playerid][CustomSlot5] == 31;
pInfo[playerid][CustomSlot5a] == 1000;
}
case 12:
{
SellWeapon(playerid,0,35,25);
pInfo[playerid][CustomSlot7] == 35;
pInfo[playerid][CustomSlot7a] == 25;
}
case 13:
{
SellWeapon(playerid,0,37,1);
pInfo[playerid][CustomSlot7] == 37;
pInfo[playerid][CustomSlot7a] == 1;
}
case 14:
{
SellWeapon(playerid,0,33,1000);
pInfo[playerid][CustomSlot6] == 33;
pInfo[playerid][CustomSlot6a] == 1000;
}
case 15:
{
SellWeapon(playerid,0,34,1000);
pInfo[playerid][CustomSlot6] == 34;
pInfo[playerid][CustomSlot6a] == 1000;
}
case 16:
{
SellWeapon(playerid,0,16,5);
pInfo[playerid][CustomSlot8] == 16;
pInfo[playerid][CustomSlot8a] == 5;
}
case 17:
{
SellWeapon(playerid,0,46,1);
pInfo[playerid][CustomSlot11] == 46;
pInfo[playerid][CustomSlot11a] == 1;
}
case 18:
{
SellWeapon(playerid,0,39,1);
pInfo[playerid][CustomSlot8] == 39;
pInfo[playerid][CustomSlot8a] == 1;
}
case 19:
{
SellWeapon(playerid,0,17,1);
pInfo[playerid][CustomSlot8] == 17;
pInfo[playerid][CustomSlot8a] == 1;
}
case 20:
{
SellWeapon(playerid,0,18,10);
pInfo[playerid][CustomSlot8] == 18;
pInfo[playerid][CustomSlot8a] == 10;
}
case 21:
{
SellWeapon(playerid,0,1,1);
pInfo[playerid][CustomSlot0] == 1;
pInfo[playerid][CustomSlot0a] == 1;
}
case 22:
{
SellWeapon(playerid,0,2,1);
pInfo[playerid][CustomSlot1] == 2;
pInfo[playerid][CustomSlot1a] == 1;
}
case 23:
{
SellWeapon(playerid,0,3,1);
pInfo[playerid][CustomSlot1] == 3;
pInfo[playerid][CustomSlot1a] == 1;
}
case 24:
{
SellWeapon(playerid,0,4,1);
pInfo[playerid][CustomSlot1] == 4;
pInfo[playerid][CustomSlot1a] == 1;
}
case 25:
{
SellWeapon(playerid,0,5,1);
pInfo[playerid][CustomSlot1] == 5;
pInfo[playerid][CustomSlot1a] == 1;
}
case 26:
{
SellWeapon(playerid,0,6,1);
pInfo[playerid][CustomSlot1] == 6;
pInfo[playerid][CustomSlot1a] == 1;
}
case 27:
{
SellWeapon(playerid,0,7,1);
pInfo[playerid][CustomSlot1] == 7;
pInfo[playerid][CustomSlot1a] == 1;
}
case 28:
{
SellWeapon(playerid,0,8,1);
pInfo[playerid][CustomSlot1] == 8;
pInfo[playerid][CustomSlot1a] == 1;
}
case 29:
{
SellWeapon(playerid,0,9,1);
pInfo[playerid][CustomSlot1] == 9;
pInfo[playerid][CustomSlot1a] == 1;
}
case 30:
{
SellWeapon(playerid,0,10,1);
pInfo[playerid][CustomSlot10] == 10;
pInfo[playerid][CustomSlot10a] == 1;
}
case 31:
{
SellWeapon(playerid,0,11,1);
pInfo[playerid][CustomSlot10] == 11;
pInfo[playerid][CustomSlot10a] == 1;
}
case 32:
{
SellWeapon(playerid,0,12,1);
pInfo[playerid][CustomSlot10] == 12;
pInfo[playerid][CustomSlot10a] == 1;
}
case 33:
{
SellWeapon(playerid,0,13,1);
pInfo[playerid][CustomSlot10] == 13;
pInfo[playerid][CustomSlot10a] == 1;
}
case 34:
{
SellWeapon(playerid,0,14,1);
pInfo[playerid][CustomSlot10] == 14;
pInfo[playerid][CustomSlot10a] == 1;
}
case 35:
{
SellWeapon(playerid,0,15,1);
pInfo[playerid][CustomSlot10] == 15;
pInfo[playerid][CustomSlot10a] == 1;
}
case 36:
{
SellWeapon(playerid,0,41,1);
pInfo[playerid][CustomSlot9] == 41;
pInfo[playerid][CustomSlot9a] == 1;
}
case 37:
{
SellWeapon(playerid,0,42,1);
pInfo[playerid][CustomSlot9] == 42;
pInfo[playerid][CustomSlot9a] == 1;
}
}
}
}
P.S. This is my first GM guys, if it has any major issues please don't say it sucks or blah blah blah, just let me know and I'll try to fix it!
P.S.S. I apologize if the forum fucks up my indentation, I can assure you it is correct in the actual editor :P