-
afk system
Смотрите какая проблема. Писал афк систему и не могу понять в чем ошибка. Значит если игрок свернулся над головой у него горит текст (AFK blalalala) все прекрасно все показывает, но работа таймера меня пугает, секунды летят, в прямом смысле слова ЛЕТЯТ, одна за две и отображается это все над головой, допустим простоял человек в афк 10 секунд, над головой пишет 50:03 как будто он уже 50 минут стоит... Прошу помощи у бородатых скриптеров...
Собственно сам функционал афк системы, система работает в секундном таймере....
PHP код:
foreach(new i: Player)
{
if(PlayerAFK[i] == 0) PlayerAFK[i] = -1;
else if(PlayerAFK[i] == -1)
{
PlayerAFK[i] = 1;
f("AFK: {FFFFFF}[%s]", Convert(PlayerAFK[i]));
SetPlayerChatBubble(i, string, COLOR_GREEN, 20.0, 1200);
}
else if(PlayerAFK[i] > 0)
{
PlayerAFK[i]+=1;
f("AFK: {FFFFFF}[%s]", Convert(PlayerAFK[i]));
SetPlayerChatBubble(i, string, COLOR_GREEN, 20.0, 1200);
if(PlayerAFK[i] > 6000)
{
if(Pl[i][pAdmin] == 0)
{
SCM(i, COLOR_RED, "Âû ñëèøêîì äîëãî ïðîñòîÿëè â AFK!");
SetTimerEx("kick", 50, false, "i", i);
}
}
}
}
Связано ли это с моим кодом или проблема в чем то другом? up help me
---------- Post added at 15:12 ---------- Previous post was at 15:08 ----------
Небольшое вложение, это буквально спустя минуты 3.
http://rghost.ru/6qlnCCkjp/image.png
Вы скажите, что кидай суда свой конвертер, скажу сразу дело не в нем... Но если это кому то поможет - пожалуйста!
PHP код:
Convert(number)
{
new hours = 0, mins = 0, secs = 0, string[100];
hours = floatround(number / 3600);
mins = floatround((number / 60) - (hours * 60));
secs = floatround(number - ((hours * 3600) + (mins * 60)));
if(hours > 0) { format(string, 100, "%i:%02d?:%02d?", hours, mins, secs); }
else { format(string, 100, "%i:%02d", mins, secs); }
return string;
}
-
Достойная система - AFK.
А, если поискать то можно найти и конвертор времени
http://i.imgur.com/fG26btg.png
PHP код:
main()
{
new result[18];
ConvertTimeForAFK(86000, result);
}
PHP код:
stock ConvertTimeForAFK(number, output[] = EOS, length = sizeof(output))
{
new string[18];
if(number > 3599) format(string, sizeof(string), "На паузе %d:%02d:%02d", number / 3600, number % 3600/60, number % 3600 % 60);
else if(number > 59) format(string, sizeof(string), "На паузе %d:%02d", number / 60, number % 60);
else format(string, sizeof(string), "На паузе %d сек.", number);
strins(output, string, 0, length);
}
-
PHP код:
new afk_time[MAX_PLAYERS];
PHP код:
afk_time[playerid] = -1;
PHP код:
for(new i = GetMaxPlayers() - 1; i != -1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
if(++afk_time[i] > 0)
{
new string[18];
if(afk_time[i] > 3599) format(string, sizeof(string), "На паузе %d:%02d:%02d", afk_time[i] / 3600, afk_time[i] % 3600/60, afk_time[i] % 3600 % 60);
else if(afk_time[i] > 59) format(string, sizeof(string), "На паузе %d:%02d", afk_time[i] / 60, afk_time[i] % 60);
else format(string, sizeof(string), "На паузе %d сек.", afk_time[i]);
SetPlayerChatBubble(i, string, 0xFF0000FF, 10.0, 1500);
}
}