58 |
new g_coloredMenus |
new g_coloredMenus |
59 |
new g_cstrike = 0 |
new g_cstrike = 0 |
60 |
|
|
61 |
|
new Array:g_bantimes; |
62 |
|
new Array:g_slapsettings; |
63 |
|
|
64 |
|
new g_CSTeamNames[3][] = { |
65 |
|
"TERRORIST", |
66 |
|
"CT", |
67 |
|
"SPECTATOR" |
68 |
|
} |
69 |
|
new g_CSTeamNumbers[3][] = { |
70 |
|
"1", |
71 |
|
"2", |
72 |
|
"6" |
73 |
|
} |
74 |
|
new g_CSTeamiNumbers[3] = { |
75 |
|
1, |
76 |
|
2, |
77 |
|
6 |
78 |
|
} |
79 |
|
|
80 |
|
|
81 |
public plugin_natives() |
public plugin_natives() |
82 |
{ |
{ |
83 |
set_module_filter("module_filter") |
set_module_filter("module_filter") |
103 |
register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu") |
register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu") |
104 |
register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu") |
register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu") |
105 |
|
|
106 |
|
|
107 |
|
g_bantimes = ArrayCreate(); |
108 |
|
// Load up the old default values |
109 |
|
ArrayPushCell(g_bantimes, 0); |
110 |
|
ArrayPushCell(g_bantimes, 5); |
111 |
|
ArrayPushCell(g_bantimes, 10); |
112 |
|
ArrayPushCell(g_bantimes, 15); |
113 |
|
ArrayPushCell(g_bantimes, 30); |
114 |
|
ArrayPushCell(g_bantimes, 45); |
115 |
|
ArrayPushCell(g_bantimes, 60); |
116 |
|
|
117 |
|
|
118 |
|
g_slapsettings = ArrayCreate(); |
119 |
|
// Old default values |
120 |
|
ArrayPushCell(g_slapsettings, 0); // First option is ignored - it is slay |
121 |
|
ArrayPushCell(g_slapsettings, 1); |
122 |
|
ArrayPushCell(g_slapsettings, 5); |
123 |
|
|
124 |
|
|
125 |
|
register_srvcmd("amx_plmenu_bantimes", "plmenu_setbantimes"); |
126 |
|
register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg"); |
127 |
|
|
128 |
g_coloredMenus = colored_menus() |
g_coloredMenus = colored_menus() |
129 |
|
|
130 |
new clcmds_ini_file[64] |
new clcmds_ini_file[64] |
135 |
if (module_exists("cstrike")) |
if (module_exists("cstrike")) |
136 |
g_cstrike = 1 |
g_cstrike = 1 |
137 |
} |
} |
138 |
|
public plmenu_setbantimes() |
139 |
|
{ |
140 |
|
new buff[32]; |
141 |
|
new args = read_argc(); |
142 |
|
|
143 |
|
if (args <= 1) |
144 |
|
{ |
145 |
|
server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ..."); |
146 |
|
server_print(" use time of 0 for permanent."); |
147 |
|
|
148 |
|
return; |
149 |
|
} |
150 |
|
|
151 |
|
ArrayClear(g_bantimes); |
152 |
|
|
153 |
|
for (new i = 1; i < args; i++) |
154 |
|
{ |
155 |
|
read_argv(i, buff, charsmax(buff)); |
156 |
|
|
157 |
|
ArrayPushCell(g_bantimes, str_to_num(buff)); |
158 |
|
|
159 |
|
} |
160 |
|
|
161 |
|
} |
162 |
|
public plmenu_setslapdmg() |
163 |
|
{ |
164 |
|
new buff[32]; |
165 |
|
new args = read_argc(); |
166 |
|
|
167 |
|
if (args <= 1) |
168 |
|
{ |
169 |
|
server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ..."); |
170 |
|
server_print(" slay is automatically set for the first value."); |
171 |
|
|
172 |
|
return; |
173 |
|
} |
174 |
|
|
175 |
|
ArrayClear(g_slapsettings); |
176 |
|
|
177 |
|
ArrayPushCell(g_slapsettings, 0); // compensate for slay |
178 |
|
|
179 |
|
for (new i = 1; i < args; i++) |
180 |
|
{ |
181 |
|
read_argv(i, buff, charsmax(buff)); |
182 |
|
|
183 |
|
ArrayPushCell(g_slapsettings, str_to_num(buff)); |
184 |
|
|
185 |
|
} |
186 |
|
|
187 |
|
} |
188 |
public module_filter(const module[]) |
public module_filter(const module[]) |
189 |
{ |
{ |
190 |
if (equali(module, "cstrike")) |
if (equali(module, "cstrike")) |
212 |
/* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */ |
/* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */ |
213 |
|
|
214 |
++g_menuOption[id] |
++g_menuOption[id] |
215 |
g_menuOption[id] %= 7 |
g_menuOption[id] %= ArraySize(g_bantimes); |
216 |
|
|
217 |
switch (g_menuOption[id]) |
g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]); |
|
{ |
|
|
case 0: g_menuSettings[id] = 0 |
|
|
case 1: g_menuSettings[id] = 5 |
|
|
case 2: g_menuSettings[id] = 10 |
|
|
case 3: g_menuSettings[id] = 15 |
|
|
case 4: g_menuSettings[id] = 30 |
|
|
case 5: g_menuSettings[id] = 45 |
|
|
case 6: g_menuSettings[id] = 60 |
|
|
} |
|
218 |
|
|
219 |
displayBanMenu(id, g_menuPosition[id]) |
displayBanMenu(id, g_menuPosition[id]) |
220 |
} |
} |
234 |
|
|
235 |
log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id]) |
log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id]) |
236 |
|
|
237 |
switch (get_cvar_num("amx_show_activity")) |
if (g_menuSettings[id]==0) // permanent |
238 |
|
{ |
239 |
|
new maxpl = get_maxplayers(); |
240 |
|
for (new i = 1; i <= maxpl; i++) |
241 |
{ |
{ |
242 |
case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_BAN_2", name, name2) |
show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM"); |
243 |
case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_BAN_1", name2) |
} |
244 |
|
} |
245 |
|
else |
246 |
|
{ |
247 |
|
new tempTime[32]; |
248 |
|
formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]); |
249 |
|
new maxpl = get_maxplayers(); |
250 |
|
for (new i = 1; i <= maxpl; i++) |
251 |
|
{ |
252 |
|
show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime); |
253 |
|
} |
254 |
} |
} |
|
|
|
255 |
/* ---------- check for Steam ID added by MistaGee -------------------- |
/* ---------- check for Steam ID added by MistaGee -------------------- |
256 |
IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE */ |
IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE */ |
257 |
|
|
267 |
server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa) |
server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa) |
268 |
} |
} |
269 |
else |
else |
270 |
|
{ |
271 |
server_cmd("banid %d #%d kick;writeid", g_menuSettings[id], userid2) |
server_cmd("banid %d #%d kick;writeid", g_menuSettings[id], userid2) |
272 |
|
} |
273 |
|
|
274 |
server_exec() |
server_exec() |
275 |
|
|
347 |
if (!cmd_access(id, level, cid, 1)) |
if (!cmd_access(id, level, cid, 1)) |
348 |
return PLUGIN_HANDLED |
return PLUGIN_HANDLED |
349 |
|
|
350 |
g_menuOption[id] = 1 |
g_menuOption[id] = 0 |
351 |
g_menuSettings[id] = 5 |
|
352 |
|
if (ArraySize(g_bantimes) > 0) |
353 |
|
{ |
354 |
|
g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]); |
355 |
|
} |
356 |
|
else |
357 |
|
{ |
358 |
|
// should never happen, but failsafe |
359 |
|
g_menuSettings[id] = 0 |
360 |
|
} |
361 |
displayBanMenu(id, g_menuPosition[id] = 0) |
displayBanMenu(id, g_menuPosition[id] = 0) |
362 |
|
|
363 |
return PLUGIN_HANDLED |
return PLUGIN_HANDLED |
372 |
case 7: |
case 7: |
373 |
{ |
{ |
374 |
++g_menuOption[id] |
++g_menuOption[id] |
|
g_menuOption[id] %= 4 |
|
375 |
|
|
376 |
switch (g_menuOption[id]) |
g_menuOption[id] %= ArraySize(g_slapsettings); |
|
{ |
|
|
case 1: g_menuSettings[id] = 0 |
|
|
case 2: g_menuSettings[id] = 1 |
|
|
case 3: g_menuSettings[id] = 5 |
|
|
} |
|
377 |
|
|
378 |
displaySlapMenu(id, g_menuPosition[id]) |
g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]); |
379 |
|
|
380 |
|
displaySlapMenu(id, g_menuPosition[id]); |
381 |
} |
} |
382 |
case 8: displaySlapMenu(id, ++g_menuPosition[id]) |
case 8: displaySlapMenu(id, ++g_menuPosition[id]) |
383 |
case 9: displaySlapMenu(id, --g_menuPosition[id]) |
case 9: displaySlapMenu(id, --g_menuPosition[id]) |
405 |
{ |
{ |
406 |
log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2) |
log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2) |
407 |
|
|
408 |
switch (get_cvar_num("amx_show_activity")) |
show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]); |
|
{ |
|
|
case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_SLAP_2", name, name2, g_menuSettings[id]) |
|
|
case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_SLAP_1", name2, g_menuSettings[id]) |
|
|
} |
|
409 |
} else { |
} else { |
410 |
log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2) |
log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2) |
411 |
|
|
412 |
switch (get_cvar_num("amx_show_activity")) |
show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2); |
|
{ |
|
|
case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_SLAY_2", name, name2) |
|
|
case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_SLAY_1", name2) |
|
|
} |
|
413 |
} |
} |
414 |
|
|
415 |
if (g_menuOption[id]) |
if (g_menuOption[id]) |
508 |
return PLUGIN_HANDLED |
return PLUGIN_HANDLED |
509 |
|
|
510 |
g_menuOption[id] = 0 |
g_menuOption[id] = 0 |
511 |
|
if (ArraySize(g_slapsettings) > 0) |
512 |
|
{ |
513 |
|
g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]); |
514 |
|
} |
515 |
|
else |
516 |
|
{ |
517 |
|
// should never happen, but failsafe |
518 |
g_menuSettings[id] = 0 |
g_menuSettings[id] = 0 |
519 |
|
} |
520 |
|
|
521 |
displaySlapMenu(id, g_menuPosition[id] = 0) |
displaySlapMenu(id, g_menuPosition[id] = 0) |
522 |
|
|
545 |
|
|
546 |
log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2) |
log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2) |
547 |
|
|
548 |
switch (get_cvar_num("amx_show_activity")) |
show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2); |
549 |
{ |
|
|
case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_KICK_2", name, name2) |
|
|
case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_KICK_1", name2) |
|
|
} |
|
550 |
|
|
551 |
server_cmd("kick #%d", userid2) |
server_cmd("kick #%d", userid2) |
552 |
server_exec() |
server_exec() |
631 |
{ |
{ |
632 |
case 7: |
case 7: |
633 |
{ |
{ |
634 |
g_menuOption[id] = 1 - g_menuOption[id] |
g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2); |
635 |
displayTeamMenu(id, g_menuPosition[id]) |
displayTeamMenu(id, g_menuPosition[id]) |
636 |
} |
} |
637 |
case 8: displayTeamMenu(id, ++g_menuPosition[id]) |
case 8: displayTeamMenu(id, ++g_menuPosition[id]) |
648 |
|
|
649 |
log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT") |
log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT") |
650 |
|
|
651 |
switch (get_cvar_num("amx_show_activity")) |
show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]); |
|
{ |
|
|
case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_TRANSF_2", name, name2, g_menuOption[id] ? "TERRORIST" : "CT") |
|
|
case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_TRANSF_1", name2, g_menuOption[id] ? "TERRORIST" : "CT") |
|
|
} |
|
652 |
|
|
653 |
if (g_cstrike) |
if (g_cstrike) |
654 |
{ |
{ |
658 |
user_kill(player, 1) |
user_kill(player, 1) |
659 |
cs_set_user_deaths(player, deaths) |
cs_set_user_deaths(player, deaths) |
660 |
} |
} |
661 |
cs_set_user_team(player, g_menuOption[id] ? 1 : 2) |
// This modulo math just aligns the option to the CsTeams-corresponding number |
662 |
|
cs_set_user_team(player, (g_menuOption[id] % 3) + 1) |
663 |
cs_reset_user_model(player) |
cs_reset_user_model(player) |
664 |
} else { |
} else { |
665 |
new limit_setting = get_cvar_num("mp_limitteams") |
new limit_setting = get_cvar_num("mp_limitteams") |
666 |
|
|
667 |
set_cvar_num("mp_limitteams", 0) |
set_cvar_num("mp_limitteams", 0) |
668 |
engclient_cmd(player, "jointeam", g_menuOption[id] ? "1" : "2") |
engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2]) |
669 |
engclient_cmd(player, "joinclass", "1") |
engclient_cmd(player, "joinclass", "1") |
670 |
set_cvar_num("mp_limitteams", limit_setting) |
set_cvar_num("mp_limitteams", limit_setting) |
671 |
} |
} |
716 |
else if (iteam == 2) |
else if (iteam == 2) |
717 |
{ |
{ |
718 |
copy(team, 3, "CT") |
copy(team, 3, "CT") |
719 |
|
} |
720 |
|
else if (iteam == 3) |
721 |
|
{ |
722 |
|
copy(team, 3, "SPE"); |
723 |
|
iteam = 6; |
724 |
} else { |
} else { |
725 |
get_user_team(i, team, 3) |
iteam = get_user_team(i, team, 3) |
726 |
} |
} |
727 |
} else { |
} else { |
728 |
iteam = get_user_team(i, team, 3) |
iteam = get_user_team(i, team, 3) |
729 |
} |
} |
730 |
|
|
731 |
if ((iteam == (g_menuOption[id] ? 1 : 2)) || access(i, ADMIN_IMMUNITY)) |
if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || access(i, ADMIN_IMMUNITY)) |
732 |
{ |
{ |
733 |
++b |
++b |
734 |
|
|
746 |
} |
} |
747 |
} |
} |
748 |
|
|
749 |
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_menuOption[id] ? "TERRORIST" : "CT") |
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)]) |
750 |
|
|
751 |
if (end != g_menuPlayersNum[id]) |
if (end != g_menuPlayersNum[id]) |
752 |
{ |
{ |
792 |
|
|
793 |
if (is_user_connected(player)) |
if (is_user_connected(player)) |
794 |
{ |
{ |
795 |
new command[64], authid[32], name[32], userid[32] |
new command[512], authid[32], name[32], userid[32] |
796 |
|
|
797 |
copy(command, 63, g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]]) |
copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]]) |
798 |
get_user_authid(player, authid, 31) |
get_user_authid(player, authid, 31) |
799 |
get_user_name(player, name, 31) |
get_user_name(player, name, 31) |
800 |
num_to_str(get_user_userid(player), userid, 31) |
num_to_str(get_user_userid(player), userid, 31) |
801 |
|
|
802 |
replace(command, 63, "%userid%", userid) |
replace(command, charsmax(command), "%userid%", userid) |
803 |
replace(command, 63, "%authid%", authid) |
replace(command, charsmax(command), "%authid%", authid) |
804 |
replace(command, 63, "%name%", name) |
replace(command, charsmax(command), "%name%", name) |
805 |
|
|
806 |
if (flags & 1) |
if (flags & 1) |
807 |
{ |
{ |
888 |
if (!cmd_access(id, level, cid, 1)) |
if (!cmd_access(id, level, cid, 1)) |
889 |
return PLUGIN_HANDLED |
return PLUGIN_HANDLED |
890 |
|
|
|
new flags = get_user_flags(id) |
|
|
|
|
891 |
g_menuSelectNum[id] = 0 |
g_menuSelectNum[id] = 0 |
892 |
|
|
893 |
for (new a = 0; a < g_clcmdNum; ++a) |
for (new a = 0; a < g_clcmdNum; ++a) |
894 |
if (g_clcmdMisc[a][0] & flags) |
if (access(id, g_clcmdMisc[a][0])) |
895 |
g_menuSelect[id][g_menuSelectNum[id]++] = a |
g_menuSelect[id][g_menuSelectNum[id]++] = a |
896 |
|
|
897 |
g_menuOption[id] = 0 |
g_menuOption[id] = 0 |