Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Простейшая система AFK

Статус
В этой теме нельзя размещать новые ответы.

Mike Fisher

Ученик
В марте месяце прошлого года, я реализовал проверку "свёрнуто ли у игрока окно", а на данный форум, смотрю, она ещё не попала. В общем, я нашёл решение, с чем можно связать много чего, что сделает игру интереснее и важнее для задротов. Например, не выдавать игрокам зарплату при свёрнутом окне с игрой.

Как вы уже знаете, OnPlayerUpdate не вызывается при свёрнутой игре.
Если значение определённой переменной неравно нулю, то присваиваем ноль:

PHP:
public OnPlayerUpdate(playerid)
{
    if(ESC[playerid] > 0) ESC[playerid] = 0;
    return 1;
}
Теперь, в колбэк, который вызывается ежесекундно, добавим:

PHP:
switch(ESC[i])
{
    case 0: ESC[i] ++;
    default: SetPlayerChatBubble(i, "AFK", -1, 10.0, 1000);
}
То есть, каждую секунду, если значение переменной равно нулю, присвоим ей единицу, иначе покажем, что игрок в AFK.

Таким образом, когда игрок свернёт окно игры, переменная "ESC" перестанет приравниваться к нулю, а в колбэке, который вызывается каждую секунду, переменная станет равна единице, после чего, над игроком появится текст информирующий о том, что он в AFK.

PHP:
new ESC[MAX_PLAYERS];

public OnPlayerUpdate(playerid)
{
    if(ESC[playerid] > 0) ESC[playerid] = 0;
    return 1;
}

public Second()
{
    for(new i; i < GetMaxPlayers(); i ++) 
    {
        switch(ESC[i])
        {
            case 0: ESC[i] ++;
            default: SetPlayerChatBubble(i, "AFK", -1, 10.0, 1000);
        }
    }
    return 1;
}

Автор: Nikifor
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу