Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

проблема в системе AFK

Авг
37
6
Пользователь
Доброй ночи, форумчане.
Вопрос такой, каким образом можно выводить игроку инфу о том сколько он простоял в АФК, во время того, как он выйдет с него.
Типа, прикол в чем, игрок выходит с АФК - срабатывает OnPlayerUpdate, и получается, что если выводить, сколько игрок в афк, то это сообщение спамится будет.

Снимок экрана 2025-02-01 044045.pngСнимок экрана 2025-02-01 044001.png
 
Дек
331
182
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
Там запись не туда, надо playerid
 
Авг
37
6
Пользователь
@gemfwrk, думал, ты и делаешь акцент, что подобный код у меня как ошибка идет.
сейчас так сделал, работает, но с правильностью отображения что-то не то, тут думаю разберусь.

еще, хотел спросить, во время авторизации/регистрации сразу регает афк, а после спавна пишет якобы с афк вышел.
тут как лучше стоит сделать? обзавестить новым таймером, который будет активировать афк счетчик, или, лучше будет пвару значение определенное присвоить после авторизации/регистрации, и потом проверку делать, то ли значение в пваре
 
𝚖𝚎𝚖𝚎𝚗𝚝𝚘 𝚖𝚘𝚛𝚒.
Мар
1,189
12,613
Команда форума
Администратор
Проверка на АФК сама по себе некорректная.

Решение, что дал тебе @gemfwrk - это вообще полнейший бред.
В OnPlayerUpdate надо постоянно обнулять переменную PlayerAFK, если статус игрока меняется.
Самый легкий вариант сделать корректную систему АФК:

Pawn:
// переменные
new PlayerAFK[MAX_PLAYERS];

// ежесекундный таймер
forward SecondTimer(); // тут уже с playerid или без - индивидуально
public SecondTimer() {
    foreach(new i: Player) { // или же через цикл при помощи функции GetPlayerPoolSize
        PlayerAFK[i] ++;
        if(PlayerAFK[i] >= 3) {
            // SetPlayerChatBubble и т.д.
        }
    }
    return true;
}

// паблик, отвечающий за обновление статуса игрока
public OnPlayerUpdate(playerid) {
    if(IsPlayerConnected(playerid)) // проверяем, подключен ли игрок (необязательно)
        if(PlayerAFK[playerid]) PlayerAFK[playerid] = 0; // обновляем переменную, если статус игрока меняется
  
    return true;
}

Есть вариант еще сделать при помощи pvar'ов, но это уже лишний гемор.
 
Сверху