new hour,minute,second; // TOP new time[MAX_PLAYERS]; OnPlayerConnect: gettime(hour,minute,second); OnPlayerDisconnect: new ho,min,sec; gettime(ho,min,sec); time[playerid]= ho-hour && minute-min && second-sec;
I think you could do gettime() on OnPlayerConnect, store values into variable and when you need to get the time, you just call it again and calulate the time between connect and and the moment you called gettime again.
|
Get the current server time, which will be stored in the variables &hour, &minute and &second. |
// at top of your code
new hour[MAX_PLAYERS];
new minute[MAX_PLAYERS];
new second[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
gettime(hour[playerid], minute[playerid], second[playerid]);
printf("%d,%d,%d",hour[playerid],minute[playerid],second[playerid]);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new hour2,minute2,second2,onlinehours,onlineminutes,onlineseconds;
gettime(hour2,minute2,second2);
if(hour2 >= hour[playerid]) onlinehours = hour2-hour[playerid];
else onlinehours = 24-hour[playerid]+hour2;
if(minute2 >= minute[playerid]) onlineminutes = minute2-minute[playerid];
else
{
onlineminutes = 60-minute[playerid]+minute2;
onlinehours --;
}
if(second2 >= second[playerid]) onlineseconds = second2-second[playerid];
else
{
onlineseconds = 60-second[playerid]+second2;
onlineminutes--;
}
printf("Player was olnline %d hours, %d minutes, %d seconds",onlinehours,onlineminutes,onlineseconds);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.datei",pname);
if(fexist(accFormat) && Player[playerid][loggedin])
{
dini_IntSet(accFormat,"Kills",kills[playerid]);
dini_IntSet(accFormat,"Deaths",deaths[playerid]);
dini_IntSet(accFormat,"Money",GetPlayerMoney(playerid));
dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));
//this is how the score ect. is displayed
// onplayercommandtext:
if(strcmp(cmdtext,"/stats",true)==0)
{
SendClientMessage(playerid, 0xFFFF00AA, "/////////////////////////////////////////////////////////");
new Float:ratio=floatdiv(kills[playerid], kills[playerid]);
new s[50];
format(s,sizeof(s),"Kills: %d | Deaths: %d | Ratio: %0.2f",kills[playerid],kills[playerid],ratio);
SendClientMessage(playerid,0xFFFF00AA,s);
new r[50];
format(r,sizeof(r),"Score: %d | Money: %d$",GetPlayerScore(playerid),GetPlayerMoney(playerid));
SendClientMessage(playerid,0xFFFF00AA,r);
SendClientMessage(playerid, 0xFFFF00AA, "/////////////////////////////////////////////////////////");
new PlayerOnlineTime[MAX_PLAYERS];
stock PlayedTimeToString(seconds)
{
new
Played = gettime()-seconds;
Time[4],
Result[45];
Time[0] = Played % 60; // Seconds
Played /= 60;
Time[1] = Played % 60; // Minutes
Played /= 60;
Time[2] = Played % 24; // Hours
Played /= 24;
Time[3] = Played; // Days
if(Time[3])
format(Result, 45, "%d days, %d hours, %d minutes and %d seconds", Time[3], Time[2], Time[1], Time[0]);
else if(Time[2])
format(Result, 45, "%d hours, %d minutes and %d seconds", Time[2], Time[1], Time[0]);
else if(Time[1])
format(Result, 45, "%d minutes and %d seconds", Time[1], Time[0]);
else
format(Result, 45, "%d seconds", Time[0]);
return Result;
}
PlayerOnlineTime[playerid] = gettime();
new
string[75];
format(string, 75, "You have been online for %s.", PlayedTimeToString(PlayerOnlineTime[playerid])
SendClientMessage(playerid, COLOR_HERE, string);