enum pInfo
{
TotalTime,
hours,
mins,
secs,
ConnectTime
};
new PlayerInfo[MAX_PLAYERS][pInfo];
// now this
TotalGameTime(playerid, &h=0, &m=0, &s=0)
{
PlayerInfo[playerid][TotalTime] = ( (gettime() - PlayerInfo[playerid][ConnectTime]) + (PlayerInfo[playerid][hours]*60*60) + (PlayerInfo[playerid][mins]*60) + (PlayerInfo[playerid][secs]) );
h = floatround(PlayerInfo[playerid][TotalTime] / 3600, floatround_floor);
m = floatround(PlayerInfo[playerid][TotalTime] / 60, floatround_floor) % 60;
s = floatround(PlayerInfo[playerid][TotalTime] % 60, floatround_floor);
return PlayerInfo[playerid][TotalTime];
}
TotalGameTime(playerid, h, m, s);
//now to preview it:
format(string, sizeof(string), "Total Time: %d hours %d minutes %d seconds", h, m, s);
SendClientMessage(playerid, -1, string);
PlayerInfo[playerid][ConnectTime] = gettime();
INI_WriteInt(File,"Hours",PlayerInfo[playerid][hours]);
INI_WriteInt(File,"Minutes",PlayerInfo[playerid][mins]);
INI_WriteInt(File,"Seconds",PlayerInfo[playerid][secs]);
INI_Int("Hours",PlayerInfo[playerid][hours]);
INI_Int("Minutes",PlayerInfo[playerid][mins]);
INI_Int("Seconds",PlayerInfo[playerid][secs]);
PlayerInfo[playerid][hours]++;
#include <a_samp>
static
Player_ConnectTime[MAX_PLAYERS],
Player_Time[MAX_PLAYERS];
main() {}
public OnPlayerConnect(playerid)
{
Player_ConnectTime[playerid] = gettime();
Player_Time[playerid] = 0;
// load the saved time in seconds and assign it to Player_Time[playerid]
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
Player_Time[playerid] += (gettime() - Player_ConnectTime[playerid]);
// save the time in seconds, it's stored to Player_Time[playerid]
return 1;
}
//...
// showing the game time in a command or whatever:
new
temp = (gettime() - Player_ConnectTime[playerid]) + Player_Time[playerid];
h, m, s;
ReturnGameTime(temp, h, m, s);
format(string, sizeof(string), "Total Time: %d hours %d minutes %d seconds", h, m, s);
SendClientMessage(playerid, -1, string);
//...
stock ReturnGameTime(seconds, &h, &m, &s)
{
h = seconds / 3600;
m = seconds / 60 % 60;
seconds = seconds % 60;
}
Some like that is definitely the best way, but what happens if it passes 12?
![]() |
stock ReturnGameTime2(seconds, &h, &m, &s)
{
h = seconds / 3600;
m = seconds / 60 % 60;
s = (seconds = seconds % 60);
}