В общем, можно сделать как-то так и не страдать
PHP код:
new afk_time[MAX_PLAYERS];
public OnGameModeInit()
{
SetTimer("CheckAFK", 1000, 1);
return 1;
}
public OnPlayerUpdate(playerid)
{
afk_time[playerid] = -1;
return 1;
}
forward CheckAFK();
public CheckAFK()
{
new string[18];
for(new i = GetMaxPlayers() - 1; i != -1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
if(++afk_time[i] > 0)
{
ConvertAfkSeconds(afk_time[i], string[0], string[1], string[2])
if(string[0]) format(string, sizeof(string), "На паузе %d:%02d:%02d", string[0], string[1], string[2]);
else if(string[1]) format(string, sizeof(string), "На паузе %d:%02d", string[1], string[2]);
else format(string, sizeof(string), "На паузе %d сек.", string[2]);
SetPlayerChatBubble(i, string, 0xFF0000FF, 10.0, 1000);
}
}
return 1;
}
stock ConvertAfkSeconds(conv_time, &conv_hour, &conv_minute, &conv_second)
{
if(conv_time <= 60) conv_hour = 0, conv_minute = 0, conv_second = conv_time;
else if(conv_time > 60 && conv_time < 3600)
{
conv_hour = 0;
conv_minute = conv_time / 60;
conv_second = floatround(conv_time % 60, floatround_tozero);
}
else if(conv_time == 3600) conv_hour = 1, conv_minute = 0, conv_second = 0;
else if(conv_time > 3600)
{
new conv_minute_int;
conv_hour = conv_time / 3600;
minutes_int = floatround(conv_time % 3600, floatround_tozero);
conv_minute = conv_minute_int / 60;
conv_second = floatround(conv_minute_int % 60, floatround_tozero);
}
return 1;
}
И stock потом использовать для других случаев, когда нужно конвертировать время из секунд (название ему и сами дать можете)