Здравствуйте, подскажите AFK систему возможно она сделана плагином, но чтобы была на сворачивание окна.
Буду благодарен.
Вид для печати
Здравствуйте, подскажите AFK систему возможно она сделана плагином, но чтобы была на сворачивание окна.
Буду благодарен.
После include
В public OnPlayerUpdate(playerid)PHP код:
#define AFK_WINDOW_TIME 1200// 1200 мс - время последнего обновления статуса с сервером.
new AFK_window[MAX_PLAYERS];
И сама проверкаPHP код:
AFK_window[playerid] = GetTickCount();
И удобный макрос для использования:PHP код:
if(GetTickCount() - AFK_window[playerid] > AFK_WINDOW_TIME)
{
SendClientMessage(playerid, -1, "AFK");
}
Пример использования:PHP код:
#define AFK(%0) (GetTickCount() - AFK_window[%0] > AFK_WINDOW_TIME)
PHP код:
if(AFK(playerid))
{
SendClientMessage(playerid, -1, "AFK");
}
Это же не на сворачивание, а просто, на обновление что игрок ничего не выполняет...
Но так же и если игрок стоит на месте, он тоже не будет обновляться...
Будет, но не очень часто, как при движении. Система не будет считать, что игрок находится в AFK.
А если юзнуть поиск то можно получить не плохой код от DeimoS:
ТЫК
начало мода
ongamemodeinitPHP код:
#define GivePVarInt(%0,%1,%2) \
SetPVarInt(%0,%1,(GetPVarInt(%0,%1) + %2))
#define MAX_AFK 500 // секунд до кика
forward afk_system();
onplayerupdatePHP код:
SetTimer("afk_system", 1000, 1); //Создаем таймер
конец модаPHP код:
SetPVarInt(playerid, "afk_time", -2); // если игрок не в AFK переменная будет ровняться -2
PHP код:
public afk_system()
{
for(new i; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(GetPVarInt(i, "afk_time") == -1 || GetPVarInt(i, "afk_time") == -2) GivePVarInt(i, "afk_time", 1);
if(GetPVarInt(i, "afk_time") >= 0)
{
GivePVarInt(i, "afk_time", 1);
new str[32];
format(str,32,"[AFK]: %d сек.",GetPVarInt(i, "afk_time"));
SetPlayerChatBubble(i,str,0x06A500FF,10.0,3000);
if(GetPVarInt(i, "afk_time") > MAX_AFK)
{
SendClientMessage(i, -1, "Вы были кикнуты за AFK (" #MAX_AFK " секунд)");
Kick(i);
}
}
}
}
return 1;
}