plugins/basecommands.sp
changeset 1374 76f2c00429b1
parent 1330 ab94316bb52b
child 1376 1d799689de9a
     1.1 --- a/plugins/basecommands.sp	Sun Aug 26 19:20:36 2007 +0000
     1.2 +++ b/plugins/basecommands.sp	Sun Aug 26 19:41:05 2007 +0000
     1.3 @@ -61,7 +61,7 @@
     1.4  	RegAdminCmd("sm_ban", Command_Ban, ADMFLAG_BAN, "sm_ban <#userid|name> <minutes|0> [reason]");
     1.5  	RegAdminCmd("sm_unban", Command_Unban, ADMFLAG_UNBAN, "sm_unban <steamid>");
     1.6  	RegAdminCmd("sm_addban", Command_AddBan, ADMFLAG_RCON, "sm_addban <time> <steamid> [reason]");
     1.7 -	RegAdminCmd("sm_banip", Command_BanIp, ADMFLAG_RCON, "sm_banip <time> <ip> [reason]");
     1.8 +	RegAdminCmd("sm_banip", Command_BanIp, ADMFLAG_BAN, "sm_banip <time> <ip|#userid|name> [reason]");
     1.9  	RegAdminCmd("sm_reloadadmins", Command_ReloadAdmins, ADMFLAG_BAN, "sm_reloadadmins");
    1.10  	RegAdminCmd("sm_cancelvote", Command_CancelVote, ADMFLAG_VOTE, "sm_cancelvote");
    1.11  	
    1.12 @@ -86,13 +86,47 @@
    1.13  {
    1.14  	if (args < 2)
    1.15  	{
    1.16 -		ReplyToCommand(client, "[SM] Usage: sm_banip <time> <ip> [reason]");
    1.17 +		ReplyToCommand(client, "[SM] Usage: sm_banip <time> <ip|#userid|name> [reason]");
    1.18  		return Plugin_Handled;
    1.19  	}
    1.20  
    1.21  	decl String:arg[50], String:time[20];
    1.22  	GetCmdArg(1, time, sizeof(time));
    1.23  	GetCmdArg(2, arg, sizeof(arg));
    1.24 +	
    1.25 +	if (StrEqual(arg, "0"))
    1.26 +	{
    1.27 +		ReplyToCommand(client, "[SM] %t", "Cannot ban that IP");
    1.28 +		return Plugin_Handled;
    1.29 +	}
    1.30 +	
    1.31 +	new clients[1];
    1.32 +	new numClients = SearchForClients(arg, clients, 1);
    1.33 +
    1.34 +	new bool:has_rcon;
    1.35 +	
    1.36 +	if (client == 0 || (client == 1 && !IsDedicatedServer()))
    1.37 +	{
    1.38 +		has_rcon = true;
    1.39 +	} else {
    1.40 +		new AdminId:id = GetUserAdmin(client);
    1.41 +		has_rcon = (id == INVALID_ADMIN_ID) ? false : GetAdminFlag(id, Admin_RCON);
    1.42 +	}
    1.43 +	
    1.44 +	new bool:hit_client = false;
    1.45 +	if (numClients == 1 
    1.46 +		&& !IsFakeClient(clients[0])
    1.47 +		&& (has_rcon || CanUserTarget(client, clients[0])))
    1.48 +	{
    1.49 +		GetClientIP(clients[0], arg, sizeof(arg));
    1.50 +		hit_client = true;
    1.51 +	}
    1.52 +	
    1.53 +	if (!hit_client && !has_rcon)
    1.54 +	{
    1.55 +		ReplyToCommand(client, "[SM] %t", "No Access");
    1.56 +		return Plugin_Handled;
    1.57 +	}
    1.58  
    1.59  	new minutes = StringToInt(time);
    1.60  
    1.61 @@ -118,7 +152,7 @@
    1.62  
    1.63  	if (act < Plugin_Stop)
    1.64  	{
    1.65 -		ServerCommand("banip %d %s", minutes, arg);
    1.66 +		ServerCommand("addip %d %s", minutes, arg);
    1.67  		ServerCommand("writeip");
    1.68  	}
    1.69