1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108. | /* 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 <amxmodx>
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
} |