This is cleaned up code.
Код:
public OnPlayerDisconnect(playerid, reason)
{
if(fexist(Path(playerid)))
{
CallLocalFunction("SaveUser","playerid");
return 1;
}
return 1;
}
It saves the data when I disconnect, but not when I crash. Oh and before you say that is my problem there, here is the old code I used.
Код:
public SaveUser(playerid)
{
GetPlayerName(playerid, pInfo[playerid][UserName], MAX_PLAYER_NAME);
GetPlayerPos(playerid, pInfo[playerid][PosX], pInfo[playerid][PosY], pInfo[playerid][PosZ]);
GetPlayerFacingAngle(playerid,pInfo[playerid][Angle]);
GetPlayerHealth(playerid, pInfo[playerid][Health]);
GetPlayerArmour(playerid, pInfo[playerid][Armour]);
new INI:file = INI_Open(Path(playerid));
INI_SetTag(file,"Player's Data");
//==General_Info================================================================
INI_WriteString(file,"UserName",pInfo[playerid][UserName]);
INI_WriteInt(file,"AdminLevel",pInfo[playerid][AdminLevel]);
INI_WriteInt(file,"VIPLevel",pInfo[playerid][VIPlevel]);
INI_WriteInt(file,"Level",GetPlayerScore(playerid));
INI_WriteInt(file,"Money",GetPlayerMoney(playerid));
INI_WriteInt(file,"Wallet",pInfo[playerid][Wallet]);
INI_WriteInt(file,"Bank",pInfo[playerid][Bank]);
INI_WriteInt(file,"Kills",pInfo[playerid][Kills]);
INI_WriteInt(file,"Deaths",pInfo[playerid][Deaths]);
INI_WriteInt(file,"Jailed",pInfo[playerid][Jailed]);
INI_WriteInt(file,"WantedLevel",pInfo[playerid][WantedLevel]);
INI_WriteInt(file,"FightingStyle",pInfo[playerid][FightingStyle]);
INI_WriteFloat(file,"Health",pInfo[playerid][Health]);
INI_WriteFloat(file,"Armour",pInfo[playerid][Armour]);
//==Position_Interior_VirtualWorld_Skin=========================================
INI_WriteInt(file,"Skin",GetPlayerSkin(playerid));
INI_WriteInt(file,"VirtualWorld",GetPlayerVirtualWorld(playerid));
INI_WriteInt(file,"Interior",GetPlayerInterior(playerid));
INI_WriteFloat(file,"PosX",pInfo[playerid][PosX]);
INI_WriteFloat(file,"PosY",pInfo[playerid][PosY]);
INI_WriteFloat(file,"PosZ",pInfo[playerid][PosZ]);
INI_WriteFloat(file,"Angle",pInfo[playerid][Angle]);
//==Items=======================================================================
INI_WriteInt(file,"Materials",pInfo[playerid][Materials]);
INI_WriteInt(file,"Marijuana",pInfo[playerid][Marijuana]);
INI_WriteInt(file,"Cocaine",pInfo[playerid][Cocaine]);
INI_Close(file);
SendClientMessage(playerid,COLOR_PURPLE,"Player Info Saved");
return 1;
}
PS: The code above is the code that was OnPlayerDisconnect, now I cleaned it up by putting it in a function as I am using it in a lot of places(to save the data when it changes).