1. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.171
    Пол:
    Мужской
    Не секрет, что игрок с высоким пингом может всем портить игру, ведь средний пинг на сервере складывается из среднего пинга всех игроков. Зайдёт кто-нибудь с другого конца света с пингом 1000 - и играть станет попросту невозможно.
    Ping Control - приватная финальная версия плагина, который может кикать игроков как за высокий пинг, так и за нестабильное соединение. Принцип работы подразумевает максимальную производительность при минимальных затратах ресурсов. В обычных кикерах типа high ping kicker игрок проверяется постоянно по несколько раз в минуту, в итоге мы лишний раз нагружаем сервер бессмысленной работой. Ведь если игрок проверен и пинг у него хороший, зачем его проверять снова раз за разом?

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

    Вложения:

    Последнее редактирование модератором: 31.05.15
    samoyloff, Sonikplus, imaximaxi и 24 другим нравится это.
  2. Fenix VIP user

    Регистрация:
    27.02.15
    Сообщения:
    645
    Симпатии:
    115
    Пол:
    Мужской
    Плагин не Компилируется:
    Ping_Control.sma(52) : error 035: argument type mismatch (argument 1)

    1 Error.
    Could not locate output file Ping_Control.amx (compile failed).
     
    bmw123789, kot и NyvzNyvz нравится это.
  3. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.171
    Пол:
    Мужской
    Fenix, перезалил)))
     
    bmw123789 и KilleR нравится это.
  4. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.516
    Симпатии:
    1.107
    Пол:
    Мужской
    Плагин лёгкий, да.
    Минус один: если у игрока после CHECK_COUNT проверок ВНЕЗАПНО вырастет пинг. то игрок доиграет до конца раунда.
     
    bmw123789 нравится это.
  5. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.171
    Пол:
    Мужской
    Gudaus, такого игрока можно и самому выкинуть.
    А вообще, такое случается крайне редко. Лично я не встречал, чтоб играл с пингом 10, потом бац, 150)))
     
    bmw123789 и KilleR нравится это.
  6. Fenix VIP user

    Регистрация:
    27.02.15
    Сообщения:
    645
    Симпатии:
    115
    Пол:
    Мужской
    Согласен с тобой, я бы сам выкинул такого Игрока))
     
  7. l3x1s Пользователь

    Регистрация:
    28.02.15
    Сообщения:
    555
    Симпатии:
    129
    Пол:
    Мужской
    neygomon, У меня вот эта версия стоит, стоит ли ставить, что в первом посте?
    Код:
    #include <amxmodx>
    #if AMXX_VERSION_NUM < 183
        #include <colorchat>
    #endif
    
    #define ACCESS_LEVEL_IMMUNITY     (ADMIN_MENU|ADMIN_LEVEL_F)     // Уровень доступа позволяющий пропускать проверку на пинг.
    #define MAX_ALLOWED_PING     125                 // Максимально допустимый пинг, превышение этого значения выкидывает игрока с сервера.
    #define MAX_FLUX        30            // Максимальные скачки пинга, если привышение то выкидывает с сервера
    #define MAX_ALLOWED_LOSS     20             // Максимально допустимая потеря пакетов loss, превышение этого значения выкидывает игрока с сервера.
    #define MAX_WARNING_CHECK     3            // Количество предупреждений после которых последует наказание.
    #define INTERVAL_CHECK         30.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", "0.3", "Freedo.m | 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)
                    {                   
                        static name[32];
                        get_user_name(players[i], name, charsmax(name));
                        client_print_color(0, 0, "^1[^4Сервер^1] ^3%s ^1был кикнут из-за высокого пинга!", name);
                        server_cmd("kick #%d ^"Вы были кикнуты из-за высокого пинга!^"", get_user_userid(players[i]));
                    }
                }
                else if(g_iWarning[players[i]]) g_iWarning[players[i]]--;
                g_iLastPing[players[i]] = iPing;   
            }
        }
    }    
     
    bmw123789 нравится это.
  8. ex3m777 Пользователь

    Регистрация:
    27.02.15
    Сообщения:
    761
    Симпатии:
    334
    Пол:
    Мужской
    VKcom:
    ex3m777
    Skype:
    ex3m777
    по твоему его просто так обновили?
     
    bmw123789 и KilleR нравится это.
  9. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.171
    Пол:
    Мужской
    l3x1s, тут из обновы только более легкий color chat
     
    bmw123789, KilleR и l3x1s нравится это.
  10. Templar Пользователь

    Регистрация:
    02.03.15
    Сообщения:
    34
    Симпатии:
    12
    Ставлю на csdm, отчет идет но как убивают он сбрасывается.
    Со спектаторов нечего не происходит, как висишь там так и висишь.
    Кто то ставил на csdm может?
     
    bmw123789 нравится это.
  11. msmrbtsk Пользователь

    Регистрация:
    29.03.15
    Сообщения:
    342
    Симпатии:
    89
    Пол:
    Мужской
    На мой взгляд, на данный момент это лучший плагин для отсеивания игроков с высоким пингом. Работает отлично.
     
    bmw123789 нравится это.
  12. taulalan Пользователь

    Регистрация:
    27.02.15
    Сообщения:
    68
    Симпатии:
    14
    Skype:
    taulalan
    Скиньте оптимальные настройки на 32 слота
     
    bmw123789 нравится это.
  13. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.171
    Пол:
    Мужской
    taulalan, у меня такие же как в первом посту:)
     
    bmw123789 и taulalan нравится это.
  14. asc Пользователь

    Регистрация:
    14.03.15
    Сообщения:
    81
    Симпатии:
    15
    Пол:
    Мужской
    киньте инклюд к этому плагину
     
    bmw123789 нравится это.
  15. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.516
    Симпатии:
    1.107
    Пол:
    Мужской
    Какой инклюд?
     
    bmw123789 нравится это.
  16. asc Пользователь

    Регистрация:
    14.03.15
    Сообщения:
    81
    Симпатии:
    15
    Пол:
    Мужской
    Gudaus, колорчат
    чет не компилится
     
    bmw123789 нравится это.
  17. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.516
    Симпатии:
    1.107
    Пол:
    Мужской
    Нет там инклюдов. Возможно, у тебя amxx1.8.3
     
    bmw123789 нравится это.
  18. asc Пользователь

    Регистрация:
    14.03.15
    Сообщения:
    81
    Симпатии:
    15
    Пол:
    Мужской
    у меня 1.8.2
     
    bmw123789 нравится это.
  19. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.516
    Симпатии:
    1.107
    Пол:
    Мужской
    Только что проверил, всё компилится.
     
    bmw123789 нравится это.
  20. BaJIepbI4 Пользователь

    Регистрация:
    12.05.15
    Сообщения:
    1.071
    Симпатии:
    211
    Пол:
    Мужской
    Skype:
    BaJIepbI4_sky
    В плагине один инклюд #include <amxmodx>
    Какая ошибка при компмиляции?
     
    bmw123789 нравится это.