Add a new access level flag 'v' for temporary bans (bug 3218, r=arkshine)

Former-commit-id: d09b92cf6c3ffa6ea82b4c4b005056e7875ee80f
This commit is contained in:
connorr
2013-08-16 18:49:55 +02:00
parent da30315556
commit 784f91e441
11 changed files with 237 additions and 36 deletions

View File

@ -54,6 +54,9 @@ new g_clcmdNum
new g_coloredMenus
new p_amx_tempban_maxtime;
new Trie:g_tempBans;
public plugin_init()
{
register_plugin("Players Menu", AMXX_VERSION_STR, "AMXX Dev Team")
@ -63,7 +66,7 @@ public plugin_init()
register_dictionary("admincmd.txt")
register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")
register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN|ADMIN_BAN_TEMP, "- displays ban menu")
register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")
register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu")
register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu")
@ -82,6 +85,22 @@ public plugin_init()
load_settings(clcmds_ini_file)
}
public plugin_cfg()
{
new x = get_xvar_id("g_tempBans")
if( x )
{
g_tempBans = Trie:get_xvar_num(x)
}
new amx_tempban_maxtime[] = "amx_tempban_maxtime";
p_amx_tempban_maxtime = get_cvar_pointer(amx_tempban_maxtime);
if( !p_amx_tempban_maxtime )
{
p_amx_tempban_maxtime = register_cvar(amx_tempban_maxtime, "4320");
server_cmd("amx_cvar add %s", amx_tempban_maxtime);
}
}
/* Ban menu */
public actionBanMenu(id, key)
@ -108,6 +127,14 @@ public actionBanMenu(id, key)
default:
{
new banTime = g_menuSettings[id]
if( ~get_user_flags(id) & ( ADMIN_BAN | ADMIN_RCON ) && (banTime <= 0 || banTime > get_pcvar_num(p_amx_tempban_maxtime)) )
{
console_print(id, "%L", id, "NO_ACC_COM");
displayBanMenu(id, g_menuPosition[id])
return PLUGIN_HANDLED
}
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new name[32], name2[32], authid[32], authid2[32]
@ -154,9 +181,19 @@ public actionBanMenu(id, key)
new ipa[32]
get_user_ip(player, ipa, 31, 1)
server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa)
if( g_tempBans )
{
TrieSetString(g_tempBans, ipa, authid)
}
}
else
{
server_cmd("banid %d #%d kick;writeid", g_menuSettings[id], userid2)
if( g_tempBans )
{
TrieSetString(g_tempBans, authid2, authid)
}
}
server_exec()