Ping Checker

Ping Checker 26.0.1 RC1

Нет прав для скачивания
Сообщения
96
Реакции
120
Помог
1 раз(а)
Сообщения
2,717
Реакции
2,996
Помог
59 раз(а)
Плагин выпущен в релиз
 
Сообщения
35
Реакции
8
а чем он отличается от плагина неугомона версии ("Ping Control", "1.31", "neygomon")? (спрашиваю потому что не скриптер) хотелось бы экспертного мнения? если и отличается то какой лучше?
 
Сообщения
334
Реакции
75
Предупреждения
9
Помог
1 раз(а)
Плагин при заходе на сервер проверяет пинг только? или еще во время игры?
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
GALAXY, во время
Sekret, я неугомонамне видел, но думаю чо этоткак альтереатива
 
Сообщения
2,717
Реакции
2,996
Помог
59 раз(а)
h1k3 Я думаю так будет правильнее.

Код:
-enum {
+enum player_s {
    TESTS,
    PING,
    NONE
};

-new g_arPing[MAX_PLAYERS+1][NONE];
+new g_arPing[MAX_PLAYERS+1][player_s];
 
  • Нравится
Реакции: h1k3
Сообщения
35
Реакции
8
fantom,
Код:
#include <amxmodx>

#define ACCESS_LEVEL_IMMUNITY     (ADMIN_IMMUNITY)     // Уровень доступа позволяющий пропускать проверку на пинг.
#define MAX_ALLOWED_PING     90                 // Максимально допустимый пинг, превышение этого значения выкидывает игрока с сервера.
#define MAX_FLUX        30            // Максимальные скачки пинга, если привышение то выкидывает с сервера
#define MAX_ALLOWED_LOSS     30             // Максимально допустимая потеря пакетов loss, превышение этого значения выкидывает игрока с сервера.
#define MAX_WARNING_CHECK     2            // Количество предупреждений после которых последует наказание.
#define INTERVAL_CHECK         12.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)
                {                   
                    static name[32]; get_user_name(players[i], name, charsmax(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;   
        }
    }
}

stock ChatColor(const szMessage[], any:...)
{
    static pnum, players[32], szMsg[190], IdMsg;
    vformat(szMsg, charsmax(szMsg), szMessage, 2);
    
    if(!IdMsg) IdMsg = get_user_msgid("SayText");
    
    get_players(players, pnum, "ch");
    
    for(new i; i < pnum; i++)
    {
        message_begin(MSG_ONE, IdMsg, .player = players[i]);
        write_byte(players[i]);
        write_string(szMsg);
        message_end();
    }
}
вот фантом скину так
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
Sekret, здесь инной принцип работы. В даном же плагине алгоритм прост. Он считает средний пинг (не учитивая потерю пакетов. имхо если у игрока потеря то он в большей степени мешает сам себе, чем другим). и если среднее значение више заданого кикает. У неугомона же считает варны, и если количесто таковых више заданого, кикает. Какой из способов лучше сложно сказать, но плагин h1k3 проверен временем и работает стабильно. Это достигаеться как раз за счет среднего значения.
 

iOS

Сообщения
323
Реакции
100
Помог
5 раз(а)
Я так понимаю, если поставить: #define TESTS_COUNT 5
Быстрее будет кикать?
 

d3m37r4

111111
Сообщения
1,428
Реакции
1,169
Помог
10 раз(а)
iOS, вроде да, получается 5 проверок игрока с интервалом 5 секунд.
 

d3m37r4

111111
Сообщения
1,428
Реакции
1,169
Помог
10 раз(а)
Есть предложение, вынести в квары настройку кол-ва проверок (и еще может быть частоту проверок).
 
Сообщения
14
Реакции
2
I Have an idea about Lagger System. I mean Sometimes are people who play with ping 300 or 500 but players aren't lagging an server How much damage will a player do to a server i can't say But somes there is a player with 30-100 ping jumping and this player lagging a server. I think we need an update for this system And by this cvars we can add a kick for those kind of players so the cvars would be 1. maximum of players ping jumping would be 30-50 2. How much times should repeat until server will kick a person. I think actually This 2 puncts would be enough. Who consider me wrong & why? Should feel free to post
 

d3m37r4

111111
Сообщения
1,428
Реакции
1,169
Помог
10 раз(а)
В каком случае потребуется менять?
Понятное дело, чем больше проверок на наличие высокого пинга мы сделаем, тем более точно получим среднее значение, но такой вопрос 10 проверок с интервалом 5 секунд не много? :scratch_one-s_head:
 
Сообщения
2,717
Реакции
2,996
Помог
59 раз(а)
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
wopox1337, ну я вижу только 1 причину - горячая замена без рр и компила
 

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

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