пинг проверка всех

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
264
Реакции
80
Помог
1 раз(а)
Доброе утро! :yes3: Помогите пожалуйста разобраться..
Мне нужно что-бы пинг проверял всех, независимо от того админ или вип.
Код:
#include <amxmodx>

#define ACCESS_LEVEL_IMMUNITY     (ADMIN_MENU|ADMIN_LEVEL_H)     // Уровень доступа позволяющий пропускать проверку на пинг.
#define MAX_ALLOWED_PING     90                 // Максимально допустимый пинг, превышение этого значения выкидывает игрока с сервера.
#define MAX_FLUX        20            // Максимальные скачки пинга, если привышение то выкидывает с сервера
#define MAX_ALLOWED_LOSS     20             // Максимально допустимая потеря пакетов loss, превышение этого значения выкидывает игрока с сервера.
#define MAX_WARNING_CHECK     3            // Количество предупреждений после которых последует наказание.
#define INTERVAL_CHECK         10.0             // Интервал между проверками, чем меньше значение, тем больше нагрузка на сервер.
#define CHECK_COUNT         MAX_WARNING_CHECK + 3     // Количество проверок определенного игрока ( снижаем и без того маленькую нагрузку xD )

#define is_immunity(%0) ((get_user_flags(%0) & ACCESS_LEVEL_IMMUNITY) || is_user_bot(%0) || is_user_hltv(%0))

#define    get_bit(%1,%2)    (%1 & (1 << (%2 & 31)))
#define    set_bit(%1,%2)    %1 |= (1 << (%2 & 31))
#define    clr_bit(%1,%2)    %1 &= ~(1 << (%2 & 31))

new g_iWarning[33], g_iCountCheck[33], g_iLastPing[33], g_iBitValid;

public plugin_init()
{
    register_plugin("Ping Control", "1.31", "neygomon");
    set_task(INTERVAL_CHECK, "PingCheck", .flags = "b");
}

public client_putinserver(id)
{
    if(is_immunity(id)) return;
    set_bit(g_iBitValid, id);
    g_iWarning[id] = g_iCountCheck[id] = 0;
}

public client_disconnect(id)
    clr_bit(g_iBitValid, id);

public PingCheck()
{
    static i, iPing, iLoss, players[32], pcount;
    get_players(players, pcount, "ch")
    
    for(i=0; i < pcount; i++)
    {
        if(!get_bit(g_iBitValid, players[i])) continue;
        if(++g_iCountCheck[players[i]] < CHECK_COUNT)
        {
            get_user_ping(players[i], iPing, iLoss)
            
            if(iPing >= MAX_ALLOWED_PING || iLoss > MAX_ALLOWED_LOSS || abs(iPing - g_iLastPing[players[i]]) > MAX_FLUX)
            {
                if(++g_iWarning[players[i]] >= MAX_WARNING_CHECK)
                {
                    server_cmd("kick #%d ^"Вы были кикнуты из-за плохого соединения^"", get_user_userid(players[i]));
                }
            }
            else if(g_iWarning[players[i]]) g_iWarning[players[i]]--;
            g_iLastPing[players[i]] = iPing;   
        }
    }
}
Вот так правильно будет? :scratch_one-s_head:
Код:
#define ACCESS_LEVEL_IMMUNITY     ADMIN_ALL
 
Сообщения
47
Реакции
12
Помог
1 раз(а)
Попробуй закоментировать строку полностью
 
Сообщения
94
Реакции
64
Помог
5 раз(а)
REVO, если поставить ADMIN_ALL, то по логике оно всем выставит иммунитет от кика и никого кикать не будет) Попробуй сделать так:
C++:
#define is_immunity(%0) ((get_user_flags(%0) & ACCESS_LEVEL_IMMUNITY) || is_user_bot(%0) || is_user_hltv(%0))
->
Код:
#define is_immunity(%0) (is_user_bot(%0) || is_user_hltv(%0))
и удалить тогда строку:
Код:
#define ACCESS_LEVEL_IMMUNITY     (ADMIN_MENU|ADMIN_LEVEL_H)     // Уровень доступа позволяющий пропускать проверку на пинг.
 
Сообщения
1
Реакции
5
Помог
1 раз(а)
Таким образом всем будет выдан иммунитет, а не убран
 
  • Нравится
Реакции: REVO
Сообщения
47
Реакции
12
Помог
1 раз(а)
А что ADMIN_RCON не подойдет? ну или на любой другой незанятый флажок кинь.
 
Сообщения
264
Реакции
80
Помог
1 раз(а)
Dager, сПАСИБО! :thank_you: сделал, как проверю, отпишусь.
Primm, мне нет, не подаёдет. зачем мне флаг ставить? если убирать так убирать в корне)
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Primm, прекратите гадать! Человек пришел за конкретным решением, уж поверьте, разводить тут такое — не нужно. Гадалок хватает за просторами нашего форума.
4 Янв 2018
Код:
-#define is_immunity(%0) ((get_user_flags(%0) & ACCESS_LEVEL_IMMUNITY) || is_user_bot(%0) || is_user_hltv(%0))
+#define is_immunity(%0) (is_user_bot(%0) || is_user_hltv(%0))
 
Последнее редактирование:
Сообщения
264
Реакции
80
Помог
1 раз(а)
Благодарю всех. спасибо. :ok:Всё работает, всё хорошо! :yes3:
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу