Код за потвърждение: Избери целия код
public cmdBan(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED
new target[32], minutes[8], reason[64]
read_argv(1, target, charsmax(target))
read_argv(2, minutes, charsmax(minutes))
read_argv(3, reason, charsmax(reason))
new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)
if (!player)
return PLUGIN_HANDLED
new nNum = str_to_num(minutes)
new const tempBanMaxTime = get_pcvar_num(p_amx_tempban_maxtime);
if( nNum < 0 ) // since negative values result in permanent bans
{
nNum = 0;
minutes = "0";
}
if( !(get_user_flags(id) & ( ADMIN_BAN | ADMIN_RCON )) && (nNum <= 0 || nNum > tempBanMaxTime) )
{
console_print(id, "%L", id, "ADMIN_MUST_TEMPBAN", tempBanMaxTime);
return PLUGIN_HANDLED
}
new authid[32], name2[MAX_NAME_LENGTH], authid2[32], name[MAX_NAME_LENGTH]
new userid2 = get_user_userid(player)
get_user_authid(player, authid2, charsmax(authid2))
get_user_authid(id, authid, charsmax(authid))
get_user_name(player, name2, charsmax(name2))
get_user_name(id, name, charsmax(name))
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)
TrieSetString(g_tempBans, authid2, authid); // store all bans in case a permanent ban would override a temporary one.
new temp[64], banned[16]
if (nNum)
formatex(temp, charsmax(temp), "%L", player, "FOR_MIN", minutes)
else
formatex(temp, charsmax(temp), "%L", player, "PERM")
formatex(banned, charsmax(banned), "%L", player, "BANNED")
if (reason[0])
server_cmd("kick #%d ^"%s (%s %s)^";wait;banid %s %s;wait;writeid", userid2, reason, banned, temp, minutes, authid2)
else
server_cmd("kick #%d ^"%s %s^";wait;banid %s %s;wait;writeid", userid2, banned, temp, minutes, authid2)
// Display the message to all clients
new msg[256];
new len;
new players[MAX_PLAYERS], pnum, plr
get_players(players, pnum, "ch")
for (new i; i<pnum; i++)
{
plr = players[i]
len = formatex(msg, charsmax(msg), "%L", plr, "BAN");
len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);
if (nNum)
{
len += formatex(msg[len], charsmax(msg) - len, "%L", plr, "FOR_MIN", minutes);
}
else
{
len += formatex(msg[len], charsmax(msg) - len, "%L", plr, "PERM");
}
if (strlen(reason) > 0)
{
formatex(msg[len], charsmax(msg) - len, " (%L: %s)", plr, "REASON", reason);
}
show_activity_id(plr, id, name, msg);
}
console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
return PLUGIN_HANDLED
}