forward database(playerid);
public OnGameModeInit()
{
SetTimer("database", 60000, false);
return 1;
}
public database(playerid)
{
for(new v = 0; v < MAX_PLAYERS; ++v)
{
dini_IntSet(file, "Score", GetPlayerScore(v));
dini_IntSet(file, "Money", GetPlayerMoney(v));
dini_IntSet(file, "level", PlayerInfo[v][Level]);
dini_IntSet(file, "Cold", PlayerInfo[v][Cold]);
dini_IntSet(file, "Hot", PlayerInfo[v][Hot]);
SendClientMessageToAll(AZUL, "Database: all player stats were saved");
printf("Database: all player stats were saved");
SetTimer("database", 60000, true);
}
return 1;
}
endClientMessageToAll(AZUL, "Database: all player stats were saved"); endClientMessageToAll(AZUL, "Database: all player stats were saved"); endClientMessageToAll(AZUL, "Database: all player stats were saved"); endClientMessageToAll(AZUL, "Database: all player stats were saved"); endClientMessageToAll(AZUL, "Database: all player stats were saved");
stock SavePlayerStats(playerid)
{
dini_IntSet(file, "Score", GetPlayerScore(playerid));
dini_IntSet(file, "Money", GetPlayerMoney(playerid));
dini_IntSet(file, "level", PlayerInfo[playerid][Level]);
dini_IntSet(file, "Cold", PlayerInfo[playerid][Cold]);
dini_IntSet(file, "Hot", PlayerInfo[playerid][Hot]);
printf("Player id %d has his files saved", playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SavePlayerStats(playerid);
return 1;
}
Password=143852150 level=0 Money=0 Score=0 Cold=0 Hot=0
dcmd_setlevel(playerid,params[]) {
if(PlayerInfo[playerid][LoggedIn] == 1) {
if(PlayerInfo[playerid][Level] >= 5 || IsPlayerAdmin(playerid)) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, red, "USAGE: /setlevel [playerid] [level]");
new player1, level, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
player1 = strval(tmp);
if(!strlen(tmp2)) return SendClientMessage(playerid, red, "USAGE: /setlevel [playerid] [level]");
level = strval(tmp2);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) {
if(PlayerInfo[player1][LoggedIn] == 1) {
if(level > ServerInfo[MaxAdminLevel] ) return SendClientMessage(playerid,red,"ERROR: Incorrect Level");
if(level == PlayerInfo[player1][Level]) return SendClientMessage(playerid,red,"ERROR: Player is already this level");
CMDMessageToAdmins(playerid,"SETLEVEL");
GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
new year,month,day; getdate(year, month, day); new hour,minute,second; gettime(hour,minute,second);
if(level > 0) format(string,sizeof(string),"Administrator %s has set you to Administrator Status [level %d]",adminname, level);
else format(string,sizeof(string),"Administrator %s has set you to Player Status [level %d]",adminname, level);
SendClientMessage(player1,blue,string);
if(level > PlayerInfo[player1][Level]) GameTextForPlayer(player1,"Promoted", 2000, 3);
else GameTextForPlayer(player1,"Demoted", 2000, 3);
format(string,sizeof(string),"You have made %s Level %d on %d/%d/%d at %d:%d:%d", playername, level, day, month, year, hour, minute, second); SendClientMessage(playerid,blue,string);
format(string,sizeof(string),"Administrator %s has made %s Level %d on %d/%d/%d at %d:%d:%d",adminname, playername, level, day, month, year, hour, minute, second);
SaveToFile("AdminLog",string);
dUserSetINT(PlayerName2(player1)).("level",(level));
PlayerInfo[player1][Level] = level;
return PlayerPlaySound(player1,1057,0.0,0.0,0.0);
} else return SendClientMessage(playerid,red,"ERROR: Player must be registered and logged in to be admin");
} else return SendClientMessage(playerid, red, "Player is not connected");
} else return SendClientMessage(playerid,red,"ERROR: You are not a high enough level to use this command");
} else return SendClientMessage(playerid,red,"ERROR: You must be logged in to use this commands");
}
for(new v = 0; v < MAX_PLAYERS; ++v)
{
...
}
for(new v = 0; v < MAX_PLAYERS; ++v)
{
if ( !IsPlayerConnected( v ) ) continue;
...
}
|
I read somewhere recently (on here) that not all things can be saved in OnPlayerDisconnect, if thats true or not i don't know, i havn't tested.
|
|
I have score, rank, money, and etc under OnPlayerDisconnect and works fine.
That's why I said that is enough if you save you player stats when they disconnect, why a timer? |
|
Server crashes, etc.
What if a player has played for like an hour, then the server crashes. All the progress will be gone. |