#include <a_samp>
forward SyncVirtualTime();
public OnFilterScriptInit() {
new h,m;
CalculateVirtualTime(h,m);
printf("\nVirtual Time: %02d:%02d\n", h,m);
SetTimer("SyncVirtualTime",120000,1);
}
public OnPlayerSpawn(playerid) {
// since OnPlayerDeath is setting the time also, let's set it back
new h,m;
TogglePlayerClock(playerid, 1);
CalculateVirtualTime(h,m);
SetPlayerTime(playerid, h, m);
}
public SyncVirtualTime() {
// Even if there's no "big" differences, we remove them every 2 minutes
// (see timer above)
new h,m;
CalculateVirtualTime(h,m);
for(new i = 0; i < MAX_PLAYERS; i++) {
if(IsPlayerConnected(i)) {
SetPlayerTime(i,h,m);
}
}
}
CalculateVirtualTime(&hour,&minute) {
// This is just for Creating "a" time that is based on the Server's time,
// so it'll calculate all the time FINE for everyone, no matter when he
// joins, it'll be the same
new h,i,s;
gettime(h,i,s);
new time = (h * 24 * 60) + i * 60 + s;
time = time % (24 * 60);
minute = time % 60;
hour = (time - minute) / 60;
}