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
5
Пользователь
Доброй ночи, форумчане.
Вопрос такой, каким образом можно выводить игроку инфу о том сколько он простоял в АФК, во время того, как он выйдет с него.
Типа, прикол в чем, игрок выходит с АФК - срабатывает OnPlayerUpdate, и получается, что если выводить, сколько игрок в афк, то это сообщение спамится будет.

Снимок экрана 2025-02-01 044045.pngСнимок экрана 2025-02-01 044001.png
 
Авг
37
5
Пользователь
@gemfwrk, думал, ты и делаешь акцент, что подобный код у меня как ошибка идет.
сейчас так сделал, работает, но с правильностью отображения что-то не то, тут думаю разберусь.

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

Решение, что дал тебе @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'ов, но это уже лишний гемор.
 
Сверху