Well on disconnect and gmx I make it do the same thing, calls a function for Saving data. I will post it though.
pawn Code:
stock SavePlayerData(playerid)
{
new File[200],pName[24],Float:armour,weap[13],ammo[13];
GetPlayerArmour(playerid,armour);
GetPlayerName(playerid,pName,24);
format(File,200,"FreeRoam/Users/%s.sav",pName);
//if(!IsPlayerConnected(playerid)) return false;
for (new i = 0; i < 13; i++)
{
GetPlayerWeaponData(playerid, i, weap[i], ammo[i]);
}
if(dini_Exists(File))
{
dini_IntSet(File,"Score",GetPlayerScore(playerid));
dini_IntSet(File,"Money",GetPlayerMoney(playerid));
dini_IntSet(File,"Skin",PlayerInfo[playerid][skin]);
dini_IntSet(File,"Spawn",PlayerInfo[playerid][spawn]);
dini_FloatSet(File,"Armour",armour);
dini_IntSet(File,"First Spawn",FirstSpawn[playerid]);
dini_IntSet(File,"Weap0",weap[0]); dini_IntSet(File,"Ammo0",ammo[0]);
dini_IntSet(File,"Weap1",weap[1]); dini_IntSet(File,"Ammo1",ammo[1]);
dini_IntSet(File,"Weap2",weap[2]); dini_IntSet(File,"Ammo2",ammo[2]);
dini_IntSet(File,"Weap3",weap[3]); dini_IntSet(File,"Ammo3",ammo[3]);
dini_IntSet(File,"Weap4",weap[4]); dini_IntSet(File,"Ammo4",ammo[4]);
dini_IntSet(File,"Weap5",weap[5]); dini_IntSet(File,"Ammo5",ammo[5]);
dini_IntSet(File,"Weap6",weap[6]); dini_IntSet(File,"Ammo6",ammo[6]);
dini_IntSet(File,"Weap7",weap[7]); dini_IntSet(File,"Ammo7",ammo[7]);
dini_IntSet(File,"Weap8",weap[8]); dini_IntSet(File,"Ammo8",ammo[8]);
dini_IntSet(File,"Weap9",weap[9]); dini_IntSet(File,"Ammo9",ammo[9]);
dini_IntSet(File,"Weap10",weap[10]); dini_IntSet(File,"Ammo10",ammo[10]);
dini_IntSet(File,"Weap11",weap[11]); dini_IntSet(File,"Ammo11",ammo[11]);
dini_IntSet(File,"Weap12",weap[12]); dini_IntSet(File,"Ammo12",ammo[12]);
SendClientMessage(playerid,lightblue,"Player Data Has Been Automatically Saved");
}
return 1;
}