Помощь по изменению плагина Ping_Control

Статус
В этой теме нельзя размещать новые ответы.

sonyx

Заблокированные
Регистрация
8 Июн 2017
Сообщения
473
Симпатии
235
sonyx, тоже самое, что и после. Просто не будет уведомлять админов.
как это тоже самое Оо?
в 1 случае при наличии имунитета вызывается return и прекращается выполнение кода в функции, не успев дойти до таска
во 2 случае таск вызывается ДО условия с return, соответственно всегда будет выполнен
 

StockX

Скриптер
Регистрация
8 Июн 2017
Сообщения
168
Симпатии
132
Пол
Мужской
sonyx, Ну и правильно, зачем игроку с иммунитетом показывать уведомление, если у него иммунитет?
 

sonyx

Заблокированные
Регистрация
8 Июн 2017
Сообщения
473
Симпатии
235
StockX, ну дык вроде топикстартер хотел всем показывать сообщения, исходя из исходных данных и беру логику работы)
 

Molodoi

Команда форума
Модератор
Регистрация
14 Июн 2017
Сообщения
606
Симпатии
126

sonyx

Заблокированные
Регистрация
8 Июн 2017
Сообщения
473
Симпатии
235
Molodoi,
client_print_color (id, print_team_default, "^1[^4PingControl^1] Игроки с пингом выше ^3%d ^1и потерями выше ^3%d ^1будут кикнуты с сервера!", MAX_ALLOWED_PING, MAX_ALLOWED_LOSS)
 

Molodoi

Команда форума
Модератор
Регистрация
14 Июн 2017
Сообщения
606
Симпатии
126
sonyx, и так не работает (
[doublepost=1498674241][/doublepost]Модераторы закройте тему етот вопрос походу не решим CloseTema
 

shram47

Пользователь
Регистрация
22 Июн 2017
Сообщения
131
Симпатии
34
Пол
Мужской
Molodoi, о_О чего это неработает? Отключи иммунитет вобще, и тестани ...
P.S.: Чего ты так быстро сдаёшься? StanislavX01
 

Molodoi

Команда форума
Модератор
Регистрация
14 Июн 2017
Сообщения
606
Симпатии
126
shram47, отключил и проверял 100 раз но не как не выводит желаемые циферки просто сообщение со словами ия думал что ето только у меня но спросил у игроков и тот же ответ.
[doublepost=1498678043][/doublepost]Спасибо вам уважаемые за старание но луче закрыть тему и не паять себе голову. P.S извините что потривожыл.
 

StockX

Скриптер
Регистрация
8 Июн 2017
Сообщения
168
Симпатии
132
Пол
Мужской
Molodoi, убери в сообщении ^3 и %s замени на %d и будет тебе счастье -_-
 

shram47

Пользователь
Регистрация
22 Июн 2017
Сообщения
131
Симпатии
34
Пол
Мужской
PHP:
#include <amxmodx>

#define    PREFIX_CHAT                "Ping Control"                //Префикс в чате
#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)

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

#if AMXX_VERSION_NUM < 183                                                                                         
    #include <colorchat>
#endif

#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)
{
    set_task(7.0, "print_msg", id);
    if(is_immunity(id)) return;
    set_bit(g_iBitValid, id);
    g_iWarning[id] = g_iCountCheck[id] = 0;
}

public print_msg(id)
{
    if(!is_user_connected(id)) return;
    client_print_color (id, print_team_red, "^1[^4%d^1] Игроки с пингом выше ^4 %d ^1и потерями выше ^4 %d ^1будут кикнуты с сервера!", PREFIX_CHAT, MAX_ALLOWED_PING, MAX_ALLOWED_LOSS)
}

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, print_team_red, "^1[^4%d^1] ^4 %d ^1был удален с сервера за плохое соединение!", PREFIX_CHAT, 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;   
        }
    }
}
[doublepost=1498678659][/doublepost]StockX, почему бы их не заменить на ^4 ? хотя стоп... используется же print_team_****, тогда по сути не нужны ^4, ^3, только если нейтральный ^1...
[doublepost=1498678744][/doublepost]Molodoi, Убери ^4
PHP:
client_print_color (id, print_team_red, "^1[%d^1] Игроки с пингом выше %d ^1и потерями выше %d ^1будут кикнуты с сервера!", PREFIX_CHAT, MAX_ALLOWED_PING, MAX_ALLOWED_LOSS)
PHP:
client_print_color (0, print_team_red, "^1[%d^1]  %d ^1был удален с сервера за плохое соединение!", PREFIX_CHAT, name);
[doublepost=1498678819][/doublepost]
Всё...я запутался ... 27 часов не спал.. Сорри за флуд. Ябаеньки...
 

StockX

Скриптер
Регистрация
8 Июн 2017
Сообщения
168
Симпатии
132
Пол
Мужской
PHP:
#include <amxmodx>

#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)

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

#if AMXX_VERSION_NUM < 183                                                                                         
    #include <colorchat>
#endif

#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;
    set_task(5.0, "uvedomlenie", id);
}

public uvedomlenie(id)
{
    if(!is_user_connected(id)) return;
    client_print_color (id, print_team_default, "^1[^4PingControl^1] Игроки с пингом выше %d и потерями выше %d будут кикнуты с сервера!", MAX_ALLOWED_PING, MAX_ALLOWED_LOSS)
}

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, print_team_default, "^1[^4PingControl^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;   
        }
    }
}
 

Molodoi

Команда форума
Модератор
Регистрация
14 Июн 2017
Сообщения
606
Симпатии
126
StockX, УУУУУУУУУУУУУУУУУУУУУУУУУРРРРРРРРРРРРРРРРРРРААААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!! Краааассссава!!!!!! и shram47, тож Красаааава!
Спаааааасибо! Всё работает всем спасибо большое очень большое за старания можете закривать тему :) :) :)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу