fixed
amb1121 - ban commands didn't tokenize reasons properly
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 +}