/* AMX Mod script * * (c) 2002-2003, DynAstY translated by Adrix, upgraded by Hleb * This file is provided as is (no warranties). * Opis i instalacja na www.cs.bitmar.net * Players with immunity won't be checked */ #include new HIGHPING_MAX new HIGHPING_TIME new HIGHPING_TESTS new HIGHPING_ADMIN new HIGHPING_PUNISH new iNumTests[33] public plugin_init() { register_plugin("High Ping Kicker PL","2.0","Hleb") register_cvar("amx_hpk_max", "120") register_cvar("amx_hpk_time", "10") register_cvar("amx_hpk_tests", "3") register_cvar("amx_hpk_admin", "1") register_cvar("amx_hpk_punish", "0") HIGHPING_MAX = get_cvar_num("amx_hpk_max") // Maksymalny dopuszczalny ping u gracza. HIGHPING_TIME = get_cvar_num("amx_hpk_time") // Czas po którym osoba z wysokim pingiem jest wyrzucana. HIGHPING_TESTS = get_cvar_num("amx_hpk_tests") // Ilosc sprawdzen zanim cos zrobi. HIGHPING_ADMIN = get_cvar_num("amx_hpk_admin") // Czy sprawdzenie pingu dotyczy tez adminow z flagami ADMIN_IMMUNITY czy ADMIN_RESERVATION. HIGHPING_PUNISH = get_cvar_num("amx_hpk_punish") // Rodzaj kary za wysoki ping. 0 - kick, 1 - ban 1 min, 2 - ban 5 min. if (HIGHPING_TIME > 15) HIGHPING_TIME = 15 if (HIGHPING_TESTS > 4) HIGHPING_TESTS = 4 if (HIGHPING_MAX > 200) HIGHPING_MAX = 200 return PLUGIN_CONTINUE } public client_disconnect(id) { remove_task(id) return PLUGIN_CONTINUE } public client_putinserver(id) { iNumTests[id] = 0 if (!is_user_bot(id)) { new param[1] param[0] = id set_task(30.0, "showWarn", id, param, 1) } return PLUGIN_CONTINUE } punishPlayer(id) { new name[32] get_user_name(id, name, 31) new uID = get_user_userid(id) new IP[33] get_user_ip(id, IP, 32) if (HIGHPING_PUNISH == 0) { server_cmd("kick #%d", uID) client_cmd(id, "echo ^"[HPK] Przykro mi, masz zbyt wysoki ping. Sprobuj pozniej...^"; disconnect") client_print(0, print_chat, "[HPK] %s zostal rozlaczony za wysoki ping!", name) } if (HIGHPING_PUNISH == 1) { server_cmd("banid 1 #%d", IP) client_cmd(id, "echo ^"[HPK] Przykro mi, masz zbyt wysoki ping. Sprobuj pozniej...^"; disconnect") client_print(0, print_chat, "[HPK] %s zostal zbanowany na 1 minute za wysoki ping!", name) } if (HIGHPING_PUNISH == 2) { server_cmd("banid 5 #%d", IP) client_cmd(id, "echo ^"[HPK] Przykro mi, masz zbyt wysoki ping. Sprobuj pozniej...^"; disconnect") client_print(0, print_chat, "[HPK] %s zostal zbanowany na 5 minut za wysoki ping!", name) } return PLUGIN_CONTINUE } public checkPing(param[]) { new id = param[0] if (HIGHPING_ADMIN == 1) { if ((get_user_flags(id) & ADMIN_IMMUNITY) || (get_user_flags(id) & ADMIN_RESERVATION)) { remove_task(id) client_print(id, print_chat, "[HPK] Sprawdzanie pingu wylaczone, poniewaz masz immunitet...") return PLUGIN_CONTINUE } } else { new p, l get_user_ping(id, p, l) if (p > HIGHPING_MAX) ++iNumTests[id] else if (iNumTests[id] > 0) --iNumTests[id] if (iNumTests[id] > HIGHPING_TESTS) punishPlayer(id) } return PLUGIN_CONTINUE } public showWarn(param[]) { client_print(param[0], print_chat, "[HPK] Gracz z pingiem wyzszym niz %dms zostanie wyrzucony!!!", HIGHPING_MAX) set_task(float(HIGHPING_TIME), "checkPing", param[0], param, 1, "b") return PLUGIN_CONTINUE }