fixed amb1121 - ban commands didn't tokenize reasons properly
authorDavid Anderson <dvander@alliedmods.net>
Sun Nov 11 06:41:46 2007 +0000 (2007-11-11)
changeset 167292764e877da1
parent 1671 ee6db47a241f
child 1673 a3674bdc4672
fixed amb1121 - ban commands didn't tokenize reasons properly
plugins/basebans.sp
plugins/basebans/ban.sp
     1.1 --- a/plugins/basebans.sp	Sun Nov 11 06:24:31 2007 +0000
     1.2 +++ b/plugins/basebans.sp	Sun Nov 11 06:41:46 2007 +0000
     1.3 @@ -106,10 +106,23 @@
     1.4  		return Plugin_Handled;
     1.5  	}
     1.6  
     1.7 +	decl len, next_len;
     1.8 +	decl String:Arguments[256];
     1.9  	decl String:arg[50], String:time[20];
    1.10 -	GetCmdArg(1, time, sizeof(time));
    1.11 -	GetCmdArg(2, arg, sizeof(arg));
    1.12 +	
    1.13 +	GetCmdArgString(Arguments, sizeof(Arguments));
    1.14 +	len = BreakString(Arguments, arg, sizeof(arg));
    1.15  	
    1.16 +	if ((next_len = BreakString(Arguments[len], time, sizeof(time))) != -1)
    1.17 +	{
    1.18 +		len += next_len;
    1.19 +	}
    1.20 +	else
    1.21 +	{
    1.22 +		len = 0;
    1.23 +		Arguments[0] = '\0';
    1.24 +	}
    1.25 +
    1.26  	if (StrEqual(arg, "0"))
    1.27  	{
    1.28  		ReplyToCommand(client, "[SM] %t", "Cannot ban that IP");
    1.29 @@ -162,32 +175,26 @@
    1.30  
    1.31  	new minutes = StringToInt(time);
    1.32  
    1.33 -	new String:reason[128];
    1.34 -	if (args >= 3)
    1.35 -	{
    1.36 -		GetCmdArg(3, reason, sizeof(reason));
    1.37 -	}
    1.38 -
    1.39  	LogAction(client, 
    1.40  			  hit_client, 
    1.41  			  "\"%L\" added ban (minutes \"%d\") (ip \"%s\") (reason \"%s\")", 
    1.42  			  client, 
    1.43  			  minutes, 
    1.44  			  arg, 
    1.45 -			  reason);
    1.46 +			  Arguments[len]);
    1.47  				
    1.48  	ReplyToCommand(client, "[SM] %t", "Ban added");
    1.49  	
    1.50  	BanIdentity(arg, 
    1.51  				minutes, 
    1.52  				BANFLAG_IP, 
    1.53 -				reason, 
    1.54 +				Arguments[len], 
    1.55  				"sm_banip", 
    1.56  				client);
    1.57  				
    1.58  	if (hit_client != -1)
    1.59  	{
    1.60 -		KickClient(hit_client, "Banned: %s", reason);
    1.61 +		KickClient(hit_client, "Banned: %s", Arguments[len]);
    1.62  	}
    1.63  
    1.64  	return Plugin_Handled;
     2.1 --- a/plugins/basebans/ban.sp	Sun Nov 11 06:24:31 2007 +0000
     2.2 +++ b/plugins/basebans/ban.sp	Sun Nov 11 06:41:46 2007 +0000
     2.3 @@ -1,4 +1,4 @@
     2.4 -PrepareBan(client, target, time, String:reason[], size)
     2.5 +PrepareBan(client, target, time, const String:reason[])
     2.6  {
     2.7  	decl String:authid[64], String:name[32];
     2.8  	GetClientAuthString(target, authid, sizeof(authid));
     2.9 @@ -25,10 +25,12 @@
    2.10  
    2.11  	if (reason[0] == '\0')
    2.12  	{
    2.13 -		strcopy(reason, size, "Banned");
    2.14 +		BanClient(target, time, BANFLAG_AUTO, "Banned", "Banned", "sm_ban", client);
    2.15  	}
    2.16 -
    2.17 -	BanClient(target, time, BANFLAG_AUTO, reason, reason, "sm_ban", client);
    2.18 +	else
    2.19 +	{
    2.20 +		BanClient(target, time, BANFLAG_AUTO, reason, reason, "sm_ban", client);
    2.21 +	}
    2.22  }
    2.23  
    2.24  DisplayBanTargetMenu(client)
    2.25 @@ -129,7 +131,7 @@
    2.26  		
    2.27  		GetMenuItem(menu, param2, info, sizeof(info));
    2.28  	
    2.29 -		PrepareBan(param1, g_BanTarget[param1], g_BanTime[param1], info, sizeof(info));
    2.30 +		PrepareBan(param1, g_BanTarget[param1], g_BanTime[param1], info);
    2.31  	}
    2.32  }
    2.33  
    2.34 @@ -202,9 +204,13 @@
    2.35  		ReplyToCommand(client, "[SM] Usage: sm_ban <#userid|name> <minutes|0> [reason]");
    2.36  		return Plugin_Handled;
    2.37  	}
    2.38 +	
    2.39 +	decl len, next_len;
    2.40 +	decl String:Arguments[256];
    2.41 +	GetCmdArgString(Arguments, sizeof(Arguments));
    2.42  
    2.43 -	decl String:arg[65];
    2.44 -	GetCmdArg(1, arg, sizeof(arg));
    2.45 +	decl String:arg[65];	
    2.46 +	len = BreakString(Arguments, arg, sizeof(arg));
    2.47  
    2.48  	new target = FindTarget(client, arg, true);
    2.49  	if (target == -1)
    2.50 @@ -213,19 +219,19 @@
    2.51  	}
    2.52  
    2.53  	decl String:s_time[12];
    2.54 -	GetCmdArg(2, s_time, sizeof(s_time));
    2.55 +	if ((next_len = BreakString(Arguments[len], s_time, sizeof(s_time))) != -1)
    2.56 +	{
    2.57 +		len += next_len;
    2.58 +	}
    2.59 +	else
    2.60 +	{
    2.61 +		len = 0;
    2.62 +		Arguments[0] = '\0';
    2.63 +	}
    2.64  
    2.65  	new time = StringToInt(s_time);
    2.66  
    2.67 -	decl String:reason[128];
    2.68 -	if (args >= 3)
    2.69 -	{
    2.70 -		GetCmdArg(3, reason, sizeof(reason));
    2.71 -	} else {
    2.72 -		reason[0] = '\0';
    2.73 -	}
    2.74 -
    2.75 -	PrepareBan(client, target, time, reason, sizeof(reason));
    2.76 +	PrepareBan(client, target, time, Arguments[len]);
    2.77  
    2.78  	return Plugin_Handled;
    2.79 -}
    2.80 \ No newline at end of file
    2.81 +}