1.1 --- a/plugins/basecommands.sp Fri Jun 08 04:40:40 2007 +0000
1.2 +++ b/plugins/basecommands.sp Fri Jun 08 05:11:49 2007 +0000
1.3 @@ -34,6 +34,8 @@
1.4 };
1.5
1.6 new Handle:hBanForward = INVALID_HANDLE;
1.7 +new Handle:hAddBanForward = INVALID_HANDLE;
1.8 +new Handle:hBanRemoved = INVALID_HANDLE;
1.9
1.10 public OnPluginStart()
1.11 {
1.12 @@ -47,8 +49,84 @@
1.13 RegAdminCmd("sm_who", Command_Who, ADMFLAG_GENERIC, "sm_who [#userid|name]");
1.14 RegAdminCmd("sm_ban", Command_Ban, ADMFLAG_BAN, "sm_ban <#userid|name> <minutes|0> [reason]");
1.15 RegAdminCmd("sm_unban", Command_Unban, ADMFLAG_UNBAN, "sm_unban <steamid>");
1.16 + RegAdminCmd("sm_addban", Command_AddBan, ADMFLAG_ROOT, "sm_addban <time> <steamid> [reason]");
1.17 + RegAdminCmd("sm_banip", Command_BanIp, ADMFLAG_ROOT, "sm_banip <time> <ip> [reason]");
1.18
1.19 - hBanForward = CreateGlobalForward("OnClientBanned", ET_Ignore, Param_Cell, Param_Cell, Param_String);
1.20 + hBanForward = CreateGlobalForward("OnClientBanned", ET_Ignore, Param_Cell, Param_Cell, Param_Cell, Param_String);
1.21 + hAddBanForward = CreateGlobalForward("OnBanAdded", ET_Ignore, Param_Cell, Param_String, Param_Cell, Param_String);
1.22 + hBanRemoved = CreateGlobalForward("OnBanRemoved", ET_Ignore, Param_Cell, Param_String);
1.23 +}
1.24 +
1.25 +public Action:Command_BanIp(client, args)
1.26 +{
1.27 + if (args < 2)
1.28 + {
1.29 + ReplyToCommand(client, "[SM] Usage: sm_banip <time> <ip> [reason]");
1.30 + return Plugin_Handled;
1.31 + }
1.32 +
1.33 + new String:arg[50], String:time[20];
1.34 + GetCmdArg(1, time, sizeof(time));
1.35 + GetCmdArg(2, arg, sizeof(arg));
1.36 +
1.37 + new minutes = StringToInt(time);
1.38 +
1.39 + new String:reason[128];
1.40 + if (args >= 3)
1.41 + {
1.42 + GetCmdArg(3, reason, sizeof(reason));
1.43 + }
1.44 +
1.45 + LogMessage("\"%L\" added ban (minutes \"%d\") (ip \"%s\") (reason \"%s\")", client, minutes, arg, reason);
1.46 +
1.47 + Call_StartForward(hAddBanForward);
1.48 + Call_PushCell(client);
1.49 + Call_PushString(arg);
1.50 + Call_PushCell(minutes);
1.51 + Call_PushString(reason);
1.52 + Call_Finish();
1.53 +
1.54 + ServerCommand("banip %d %s", minutes, arg);
1.55 + ServerCommand("writeip");
1.56 + ReplyToCommand(client, "[SM] %t", "Ban added");
1.57 +
1.58 + return Plugin_Handled;
1.59 +}
1.60 +
1.61 +public Action:Command_AddBan(client, args)
1.62 +{
1.63 + if (args < 2)
1.64 + {
1.65 + ReplyToCommand(client, "[SM] Usage: sm_addban <time> <steamid> [reason]");
1.66 + return Plugin_Handled;
1.67 + }
1.68 +
1.69 + new String:arg[50], String:time[20];
1.70 + GetCmdArg(1, time, sizeof(time));
1.71 + GetCmdArg(2, arg, sizeof(arg));
1.72 +
1.73 + new minutes = StringToInt(time);
1.74 +
1.75 + new String:reason[128];
1.76 + if (args >= 3)
1.77 + {
1.78 + GetCmdArg(3, reason, sizeof(reason));
1.79 + }
1.80 +
1.81 + LogMessage("\"%L\" added ban (minutes \"%d\") (id \"%s\") (reason \"%s\")", client, minutes, arg, reason);
1.82 +
1.83 + Call_StartForward(hAddBanForward);
1.84 + Call_PushCell(client);
1.85 + Call_PushString(arg);
1.86 + Call_PushCell(minutes);
1.87 + Call_PushString(reason);
1.88 + Call_Finish();
1.89 +
1.90 + ServerCommand("banid %d %s", minutes, arg);
1.91 + ServerCommand("writeid");
1.92 + ReplyToCommand(client, "[SM] %t", "Ban added");
1.93 +
1.94 + return Plugin_Handled;
1.95 }
1.96
1.97 public Action:Command_Unban(client, args)
1.98 @@ -60,6 +138,7 @@
1.99 }
1.100
1.101 new String:arg[50], start=0;
1.102 + new String:new_arg[50];
1.103 GetCmdArgString(arg, sizeof(arg));
1.104
1.105 if (strncmp(arg, "STEAM_0:", 8) == 0)
1.106 @@ -71,7 +150,15 @@
1.107 }
1.108
1.109 LogMessage("\"%L\" removed ban (filter \"%s\")", arg[start]);
1.110 +
1.111 + Format(new_arg, sizeof(new_arg), "STEAM_0:%s", arg[start]);
1.112 + Call_StartForward(hBanRemoved);
1.113 + Call_PushCell(client);
1.114 + Call_PushString(new_arg);
1.115 + Call_Finish();
1.116 +
1.117 ServerCommand("removeid \"%s\"", arg[start]);
1.118 + ServerCommand("writeid");
1.119 ReplyToCommand(client, "[SM] %t", "Removed bans matching", arg);
1.120
1.121 return Plugin_Handled;
1.122 @@ -145,6 +232,7 @@
1.123 Call_StartForward(hBanForward);
1.124 Call_PushCell(client);
1.125 Call_PushCell(clients[0]);
1.126 + Call_PushCell(time);
1.127 Call_PushString(reason);
1.128 Call_Finish();
1.129