Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

High Ping Kicker

, Кикает админа без флага А
Статус пользователя KidoO
сообщение 23.10.2009, 22:17
Сообщение #1
Стаж: 16 лет

Сообщений: 3
Благодарностей: 1
Полезность: 0

День добрый, Уважаемые.
Ни как не могу разобраться, мб Вы поможите.
Собственно есть плагин High Ping Kicker. И есть куча админов. Так вот тех у кого флаг А(иммунитет) не стоит, кикает с серва.
Что надо поправить в файле чтобы иммунитет давался админу с флагом допустим b (ADMIN_RESERVATION)

Код
/* AMX Mod X скрипт.
*
*================================
* Название:  HPK
* Версия перевода: 1.0.0
* Автор перевода: MastaMan
* Источник: amx-server.blogspot.com
*================================
*
Команды:
amx_hpk <макс пинг> <кол-во проверок> <время между проверками> <время перед проверкой>

Переменные:
amx_hpk_ping - Максимальный пинг перед тем, как кто то будет кикнут. По умолчанию 200.
amx_hpk_check - Интервал в секундах, для проверки пинга. По умолчанию 12 секунд.
amx_hpk_tests - Количество проверок, перед тем как игрок с большим пингом будет кикнут. По умолчанию 5.
amx_hpk_delay - Время задержки, после подключения игрока на сервер для проверки пинга. По умолчанию 60 секунд.
amx_hpk_immunity - ВКЛ/ВЫКЛ иммунитет
*****************************************************************************
*/

#include <amxmodx>
#include <amxmisc>

new const PLUGIN[]  = "High Ping Kicker"
new const VERSION[] = "1.0"
new const AUTHOR[]  = "Shadow/Bo0m!"

// Feel free to change this flag
#define HPK_IMMUNE ADMIN_IMMUNITY
// PCvars
new hpk_ping, hpk_check, hpk_tests, hpk_delay, hpk_immunity

new g_Ping[33]
new g_Samples[33]

public plugin_init() {

    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_concmd("amx_hpk","cmdHpk",ADMIN_CVAR,"- configures high ping kicker")

    hpk_ping = register_cvar("amx_hpk_ping","200")
    hpk_check = register_cvar("amx_hpk_check","12")
    hpk_tests = register_cvar("amx_hpk_tests","5")
    hpk_delay = register_cvar("amx_hpk_delay","60")
    hpk_immunity = register_cvar("amx_hpk_immunity","1")

    if (get_pcvar_num(hpk_check) < 5) set_pcvar_num(hpk_check,5)
    if (get_pcvar_num(hpk_tests) < 3) set_pcvar_num(hpk_tests,3)
}

public client_disconnect(id)
    remove_task(id)

public client_putinserver(id) {    
    g_Ping[id] = 0
    g_Samples[id] = 0

    if ( !is_user_bot(id) )
    {
        new param[1]
        param[0] = id
        set_task( 15.0 , "showWarn" , id , param , 1 )
    
        if (get_pcvar_num(hpk_delay) != 0) {
            set_task( float(get_pcvar_num(hpk_delay)), "taskSetting", id, param , 1)
        }
        else {        
            set_task( float(get_pcvar_num(hpk_check)) , "checkPing" , id , param , 1 , "b" )
        }
    }
}

public showWarn(param[])
    client_print( param[0] ,print_chat,"Игроки с пингом больше чем %d, будут кикнуты!", get_cvar_num( "amx_hpk_ping" ) )

public taskSetting(param[]) {
    new name[32]
    get_user_name(param[0],name,31)
    set_task( float(get_pcvar_num(hpk_check)) , "checkPing" , param[0] , param , 1 , "b" )
}

kickPlayer(id) {
    new name[32],authid[36]
    get_user_name(id,name,31)
    get_user_authid(id,authid,35)
    client_print(0,print_chat,"Игрок %s кикнут из за высокого пинга",name)
    server_cmd("kick #%d ^"Извините, но ваш пинг слишком высокий, повторите попытку позже...^"",get_user_userid(id))
    log_amx("^"%s<%d><%s>^" кикнут из за высокого пинга (Средний пинг ^"%d^")", name,get_user_userid(id),authid,(g_Ping[id] / g_Samples[id]))
}

public checkPing(param[]) {

    if (get_pcvar_num(hpk_tests) < 3)
        set_pcvar_num(hpk_tests,3)

    new id = param[ 0 ]

    if ( get_user_flags(id) & HPK_IMMUNE && get_pcvar_num(hpk_immunity) == 1 ) {
        remove_task(id)
        client_print(id, print_chat, "Проверка пинга отключена благодаря иммунитету...")
        return PLUGIN_CONTINUE
    }

    new ping, loss

    get_user_ping(id,ping,loss)

    g_Ping[ id ] += ping
    ++g_Samples[ id ]

    if ( (g_Samples[ id ] > get_pcvar_num(hpk_tests)) && (g_Ping[id] / g_Samples[id] > get_pcvar_num(hpk_ping))  )    
        kickPlayer(id)

    return PLUGIN_CONTINUE
}

  
public cmdHpk(id,level,cid) {
    if (!cmd_access(id,level,cid,1))
        return PLUGIN_HANDLED

    if (read_argc() < 6) {
        console_print(id,"Использование: amx_hpk <макс пинг> <кол-во проверок> <время между проверками> <время перед проверкой> <1 для включения иммунитета|0 для отключения")
        console_print(id,"Текущие настройки:")
        console_print(id,"Макс. пинг: %d | Проверок пинга: %d | Частота проверок: %d | Начальная задерка: %d | Иммунитет: %d",get_pcvar_num(hpk_ping),get_pcvar_num(hpk_tests),get_pcvar_num(hpk_check),get_pcvar_num(hpk_delay),get_pcvar_num(hpk_immunity))
        return PLUGIN_HANDLED
    }

    new name[32], authid[36]
    get_user_name(id,name,31)
    get_user_authid(id,authid,35)

    new ping_arg[5], check_arg[5], tests_arg[5], delay_arg[5], immune_arg[5]
    read_argv(1,ping_arg,4)
    read_argv(2,tests_arg,4)
    read_argv(3,check_arg,4)
    read_argv(4,delay_arg,4)
    read_argv(5,immune_arg,4)
  
    new ping = str_to_num(ping_arg)
    new tests = str_to_num(tests_arg)
    new check = str_to_num(check_arg)
    new delay = str_to_num(delay_arg)
    new immune = str_to_num(immune_arg)

    if ( check < 5 ) check = 5
    if ( tests < 3 ) tests = 3

    set_pcvar_num(hpk_ping,ping)
    set_pcvar_num(hpk_tests,tests)
    set_pcvar_num(hpk_check,check)
    set_pcvar_num(hpk_delay,delay)
    set_pcvar_num(hpk_immunity,immune)

    console_print(id,"Следующие параметры для НРК были установлены:")
    console_print(id,"Макс. пинг: %d | Проверок пинга: %d | Частота проверок: %d | Начальная задержка: %d | Иммунитет: %d",get_pcvar_num(hpk_ping),get_pcvar_num(hpk_tests),get_pcvar_num(hpk_check),get_pcvar_num(hpk_delay),get_pcvar_num(hpk_immunity))
    log_amx("^"%s<%d><%s>^" применил параметры - Макс. пинг: %d | Проверок пинга: %d | Частота проверок: %d | Начальная задержка: %d | Иммунитет: %d", name,get_user_userid(id),authid,get_pcvar_num(hpk_ping),get_pcvar_num(hpk_tests),get_pcvar_num(hpk_check),get_pcvar_num(hpk_delay),get_pcvar_num(hpk_immunity))

    return PLUGIN_HANDLED    
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя pike
сообщение 23.10.2009, 22:29
Сообщение #2


Стаж: 18 лет

Сообщений: 956
Благодарности: выкл.

Строка
Код
// Feel free to change this flag
#define HPK_IMMUNE ADMIN_IMMUNITY

Меняй ADMIN_IMMUNITY на свое
Код
ADMIN_ALL         // everyone
ADMIN_IMMUNITY    // flag "a"
ADMIN_RESERVATION // flag "b"
ADMIN_KICK        // flag "c"
ADMIN_BAN         // flag "d"
ADMIN_SLAY        // flag "e"
ADMIN_MAP         // flag "f"
ADMIN_CVAR        // flag "g"
ADMIN_CFG         // flag "h"
ADMIN_CHAT        // flag "i"
ADMIN_VOTE        // flag "j"
ADMIN_PASSWORD    // flag "k"
ADMIN_RCON        // flag "l"
ADMIN_LEVEL_A     // flag "m"
ADMIN_LEVEL_B     // flag "n"
ADMIN_LEVEL_C     // flag "o"
ADMIN_LEVEL_D     // flag "p"
ADMIN_LEVEL_E     // flag "q"
ADMIN_LEVEL_F     // flag "r"
ADMIN_LEVEL_G     // flag "s"
ADMIN_LEVEL_H     // flag "t"
ADMIN_MENU        // flag "u"
ADMIN_ADMIN       // flag "y"
ADMIN_USER        // flag "z"


Отредактировал: pike z, - 23.10.2009, 22:30
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя KidoO
сообщение 23.10.2009, 23:16
Сообщение #3
Стаж: 16 лет

Сообщений: 3
Благодарностей: 1
Полезность: 0

Не поверишь, менял.... не катит..... у меня стоят все флаги, убираю себе флаг А, и о чудо...меня кикает.
Если было все так просто,я бы не обращался к Вам.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя pike
сообщение 24.10.2009, 1:26
Сообщение #4


Стаж: 18 лет

Сообщений: 956
Благодарности: выкл.

Код
#define HPK_IMMUNE ADMIN_RESERVATION

Плагин заменял перекомпилированным ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя KidoO
сообщение 24.10.2009, 8:39
Сообщение #5
Стаж: 16 лет

Сообщений: 3
Благодарностей: 1
Полезность: 0

Если честно то я думал достаточно поменять перменную...
Со всем остальным еще пока не дружу. Поможешь?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя pike
сообщение 24.10.2009, 10:28
Сообщение #6


Стаж: 18 лет

Сообщений: 956
Благодарности: выкл.

Цитата(KidoO @ 24.10.2009, 9:39) *
Если честно то я думал достаточно поменять перменную...
Поможешь?

Сделал изменения в исходнике, перекомпилируй и замени плагин.
Что не получается ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: