Completely untested. I believe this plugin would need to be listed above admincmd.amxx in plugins.ini.
Code:
#include <amxmodx>
#include <amxmisc>
public plugin_init()
{
register_concmd("amx_ban", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> <reason>")
}
public cmdBanIP(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED
new target[32], minutes[8], reason[64]
read_argv(1, target, 31)
read_argv(2, minutes, 7)
read_argv(3, reason, 63)
new player = cmd_target(id, target, 9)
if (!player)
return PLUGIN_HANDLED
new authid[32], name2[32], authid2[32], name[32]
new userid2 = get_user_userid(player)
get_user_authid(player, authid2, 31)
get_user_authid(id, authid, 31)
get_user_name(player, name2, 31)
get_user_name(id, name, 31)
log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)
new temp[64], banned[16], nNum = str_to_num(minutes)
if (nNum)
{
if (nNum > 9999)
nNum = 9999
format(temp, 63, "%L", player, "FOR_MIN", minutes)
}
else
{
client_print(id, print_console, "Error: You must specify how long a player should be banned in munutes..")
return PLUGIN_HANDLED
}
format(banned, 15, "%L", player, "BANNED")
new address[32]
get_user_ip(player, address, 31, 1)
if (reason[0])
{
server_cmd("kick #%d ^"%s (%s %s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, reason, banned, temp, minutes, address)
}
else
{
client_print(id, print_console, "Error: You must specify a reason for banning this player..")
return PLUGIN_HANDLED
}
new activity = get_cvar_num("amx_show_activity")
if (activity != 0)
{
new players[32], pnum, msg[256], len
get_players(players, pnum, "c")
for (new i = 0; i < pnum; i++)
{
len = format(msg, 255, "%L", players[i], "ADMIN")
if (activity == 1)
len += copy(msg[len], 255-len, ":")
else
len += format(msg[len], 255-len, " %s:", name)
len += format(msg[len], 255-len, " %L", players[i], "BAN")
len += format(msg[len], 255-len, " %s ", name2)
format(msg[len], 255-len, "%L", players[i], "FOR_MIN", minutes)
client_print(players[i], print_chat, "%s", msg)
}
}
console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
return PLUGIN_HANDLED
}