aha | Дата: Воскресенье, 05.10.2008, 00:06:57 | Сообщение # 1 |
Генерал-майор
Группа: Пользователи
Сообщений: 370
Статус: Не в сети
| И так имею код : Code #include <amxmodx> #include <amxmisc>
new g_Ping[33] new g_Samples[33]
public plugin_init() { register_plugin("High Ping Kicker (Steam)","0.16.2","OLO/shadow") register_concmd("amx_hpk","cmdHpk",ADMIN_KICK,"- configures high_ping_kicker plugin") register_cvar("amx_hpk_ping","200") register_cvar("amx_hpk_check","12") register_cvar("amx_hpk_tests","5") register_cvar("amx_hpk_delay","60") if ( get_cvar_num( "amx_hpk_check" ) < 5 ) set_cvar_num( "amx_hpk_check" , 5 ) if ( get_cvar_num( "amx_hpk_tests" ) < 3 ) set_cvar_num( "amx_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_cvar_num("amx_hpk_tests") != 0) { set_task( float(get_cvar_num("amx_hpk_delay")), "taskSetting", id, param , 1) } else { set_task( float(get_cvar_num( "amx_hpk_tests" )) , "checkPing" , id , param , 1 , "b" ) } } }
public showWarn(param[]) client_print( param[0] ,print_chat,"* Players with ping higher than %d will be kicked!", get_cvar_num( "amx_hpk_ping" ) )
public taskSetting(param[]) { new name[32] get_user_name(param[0],name,31) set_task( float(get_cvar_num( "amx_hpk_tests" )) , "checkPing" , param[0] , param , 1 , "b" ) }
kickPlayer( id ) { new name[32],authid[32] get_user_name(id,name,31) get_user_authid(id,authid,31) client_print(0,print_chat,"** Player %s disconnected due to high ping",name) server_cmd("kick #%d ^"Sorry but you have too high ping, try later...^"",get_user_userid(id)) log_amx("Highpingkick: ^"%s<%d><%s>^" was kicked due highping (Average Ping ^"%d^")", name,get_user_userid(id),authid,(g_Ping[id] / g_Samples[id])) }
public checkPing(param[]) { new id = param[ 0 ]
if ( get_user_flags(id) & ADMIN_IMMUNITY ) return
new p, l
get_user_ping( id , p , l )
g_Ping[ id ] += p ++g_Samples[ id ]
if ( (g_Samples[ id ] > get_cvar_num( "amx_hpk_tests" )) && (g_Ping[id] / g_Samples[id] > get_cvar_num( "amx_hpk_ping" )) ) kickPlayer(id) }
public cmdHpk(id,level,cid){ if (!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED new ping[5] new check_arr[5] new tests_arr[5] new delay_arr[5] read_argv(1,ping,4) read_argv(2,check_arr,4) read_argv(3,tests_arr,4) read_argv(4,delay_arr,4) new check = str_to_num(check_arr) new tests = str_to_num(tests_arr) new delay = str_to_num(delay_arr) if ( check < 5 ) check = 5 if ( tests < 3 ) tests = 3
if (read_argc() > 1){ set_cvar_string("amx_hpk_ping",ping) } if (read_argc() > 2) { set_cvar_num("amx_hpk_check",check) } if (read_argc() > 3) { set_cvar_num("amx_hpk_tests",tests) } if (read_argc() > 4) { set_cvar_num("amx_hpk_delay",delay) }
console_print(id,"Syntax: amx_hpk <ping to get kicked> <checks before kicks> <time between checks> <delay before first check in sec.>") console_print(id,"Current High_Ping_Kicker Settings:") console_print(id,"Maxping: %d Time between checks: %d Checkcount: %d Delay: %d",get_cvar_num("amx_hpk_ping"),get_cvar_num("amx_hpk_check"),get_cvar_num("amx_hpk_tests"),get_cvar_num("amx_hpk_delay")) return PLUGIN_HANDLED } Xочу сделать чтобы при пинге 80 был кик , при 100 бан 5 мин, и так добавил cvar'ы Code register_cvar("amx_hpb_ping","200") register_cvar("amx_hpb_check","12") register_cvar("amx_hpb_tests","5") register_cvar("amx_hpb_delay","60") в стандартном коде при пинге выше чем amx_hpk_ping делается kickPlayer(id) я сделал такойже но только banPlayer(id) (он не кикает а банит на 5 мин . Я не знаю как только сделать тут : Code public checkPing(param[]) { new id = param[ 0 ]
if ( get_user_flags(id) & ADMIN_IMMUNITY ) return
new p, l
get_user_ping( id , p , l )
g_Ping[ id ] += p ++g_Samples[ id ]
if ( (g_Samples[ id ] > get_cvar_num( "amx_hpk_tests" )) && (g_Ping[id] / g_Samples[id] > get_cvar_num( "amx_hpk_ping" )) ) kickPlayer(id) } пробывал делать так : Code if ( (g_Samples[ id ] > get_cvar_num( "amx_hpb_tests" )) && (g_Ping[id] / g_Samples[id] > get_cvar_num( "amx_hpb_ping" )) ) banPlayer(id)
if ( (g_Samples[ id ] > get_cvar_num( "amx_hpk_tests" )) && (g_Ping[id] / g_Samples[id] > get_cvar_num( "amx_hpk_ping" )) ) kickPlayer(id) Не вышло , работал только кик ...
|
|
| |
PomanoB | Дата: Воскресенье, 05.10.2008, 11:02:57 | Сообщение # 2 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| На мой взгляд тебе нужен только один новый cvar - register_cvar("amx_hpb_ping","200") Code if ( (g_Samples[ id ] > get_cvar_num( "amx_hpk_tests" )) && (g_Ping[id] / g_Samples[id] > get_cvar_num( "amx_hpb_ping" )) ) { banPlayer(id) return } if ( (g_Samples[ id ] > get_cvar_num( "amx_hpk_tests" )) && (g_Ping[id] / g_Samples[id] > get_cvar_num( "amx_hpk_ping" )) ) kickPlayer(id)
http://romanov4400.mybrute.com
|
|
| |
aha | Дата: Воскресенье, 05.10.2008, 15:24:38 | Сообщение # 3 |
Генерал-майор
Группа: Пользователи
Сообщений: 370
Статус: Не в сети
| Акей , спасибо за ответ !
|
|
| |