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

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

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

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

High Ping Kicker(измененный)

, Баним лаггеров
Статус пользователя pike
сообщение 21.5.2009, 21:18
Сообщение #1


Стаж: 18 лет

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

Изменил плагин High Ping Kicker оригинал http://forums.alliedmods.net
Кикает за высокий пинг, указанный в amxx.cfg
Код
amx_hpk_ping

Банит по IP на 60 минут лаггеров(потери(loss) более 11),измените кому как нужно.
Код
/* AMX Mod X script.
*****************************************************************************
* Original plugin: http://forums.alliedmods.net
*
* Modified plugin:
* Pike  pike@warclan.dn.ua
*/

#include <amxmodx>
#include <amxmisc>

// Feel free to change this flag
#define HPK_IMMUNE ADMIN_RESERVATION

// PCvars
new hpk_ping, hpk_check, hpk_tests, hpk_delay

new g_Ping[33]
new g_Samples[33]

public plugin_init() {

    register_plugin("High Ping Kicker","0.1","Shadow/Bo0m!/Pike")

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

    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( 10.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,"* Максимальный пинг %dms", 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], ip[32]
    new ping, loss
    
    get_user_name(id,name,31)
    get_user_ip(id, ip, 31, 1)
    get_user_authid(id,authid,35)
    get_user_ping(id, ping, loss)
    
    if(((ping > 200) && (loss > 11)) || (loss > 11))
    {
    server_cmd("amx_banip 60 %s Lagger: ping %d loss %d", ip, ping, loss)
    log_amx("HPK: ^"%s<%d>^" was banned due high ping (Average Ping ^"%d^" Loss ^"%d^")", name, get_user_userid(id), ping, loss)
    }
    else
    {
    client_print(0,print_chat,"* %s отключен за высокий пинг. (ping %d)", name, ping)
    server_cmd("kick #%d ^"Извините, Ваш пинг слишком высок...^"",get_user_userid(id))
    log_amx("HPK: ^"%s<%d><%s>^" was kicked due high ping (Average Ping ^"%d^")", name,get_user_userid(id), ping, loss)
}
    return PLUGIN_CONTINUE
}

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 ) {
        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() < 5) {
        console_print(id,"Usage: amx_hpk <max ping> <total ping checks> <time between checks> <delay before starting checks>")
        console_print(id,"Current High Ping Kicker Settings:")
        console_print(id,"Max Ping: %d | Ping Checks: %d | Check Frequency: %d | Start Delay: %d",get_pcvar_num(hpk_ping),get_pcvar_num(hpk_tests),get_pcvar_num(hpk_check),get_pcvar_num(hpk_delay))
        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]
    read_argv(1,ping_arg,4)
    read_argv(2,tests_arg,4)
    read_argv(3,check_arg,4)
    read_argv(4,delay_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)

    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)

    console_print(id,"The following HPK Settings have been set:")
    console_print(id,"Max Ping: %d | Ping Checks: %d | Check Frequency: %d | Start Delay: %d",get_pcvar_num(hpk_ping),get_pcvar_num(hpk_tests),get_pcvar_num(hpk_check),get_pcvar_num(hpk_delay))
    log_amx("HPK: ^"%s<%d><%s>^" has configured the HPK - Max Ping: %d | Ping Checks: %d | Check Frequency: %d | Start Delay: %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))

    return PLUGIN_HANDLED    
}


Отредактировал: pike z, - 21.5.2009, 21:20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: