28/03/2023 21:44
(28/03/2023 18:32)RodrigoMSR Escreveu: Na prática esse código na OnPlayerUpdate não deveria causar grandes impactos na performance. De qualquer forma, use a função GetTickCount, ela é muito mais rápida que gettime. Será necessário adaptar algumas coisas no código, já que ela retorna milissegundos, e cuidado com o overflow que acontece com o servidor ligado por muitos dias (veja na wiki).
Troquei pra GetTickCount como você sugeriu, ta funcionando agora eu to preocupado com o overflow, não entendi direito, o que eu devo adaptar no codigo pra não ter problema com isso?
Código:
public OnPlayerUpdate(playerid)
{
AFKTime[playerid] = GetTickCount();
}
Código:
// ongamemodeinit
SetTimerEx("PlayerOneSec", 1000, true, "i", playerid);
Código:
public PlayerOneSec(i) {
// check paused
if(paused[i] == false) {
// 3 segundos sem resposta.
if(GetTickCount() - AFKTime[i] > 3000) { OnPlayerPause(i); }
}
if(paused[i] == true) {
if(GetTickCount() - AFKTime[i] < 3000) { OnPlayerUnpause(i); }
}