plugins/basecommands.sp
changeset 982 c4fdf408ccee
parent 981 2a71d877c501
child 989 365bacaddd5b
     1.1 --- a/plugins/basecommands.sp	Mon Jun 18 17:09:33 2007 +0000
     1.2 +++ b/plugins/basecommands.sp	Mon Jun 18 17:20:12 2007 +0000
     1.3 @@ -52,9 +52,9 @@
     1.4  	RegAdminCmd("sm_addban", Command_AddBan, ADMFLAG_RCON, "sm_addban <time> <steamid> [reason]");
     1.5  	RegAdminCmd("sm_banip", Command_BanIp, ADMFLAG_RCON, "sm_banip <time> <ip> [reason]");
     1.6  	
     1.7 -	hBanForward = CreateGlobalForward("OnClientBanned", ET_Ignore, Param_Cell, Param_Cell, Param_Cell, Param_String);
     1.8 -	hAddBanForward = CreateGlobalForward("OnBanAdded", ET_Ignore, Param_Cell, Param_String, Param_Cell, Param_String);
     1.9 -	hBanRemoved = CreateGlobalForward("OnBanRemoved", ET_Ignore, Param_Cell, Param_String);
    1.10 +	hBanForward = CreateGlobalForward("OnClientBanned", ET_Hook, Param_Cell, Param_Cell, Param_Cell, Param_String);
    1.11 +	hAddBanForward = CreateGlobalForward("OnBanAdded", ET_Hook, Param_Cell, Param_String, Param_Cell, Param_String);
    1.12 +	hBanRemoved = CreateGlobalForward("OnBanRemoved", ET_Hook, Param_Cell, Param_String);
    1.13  }
    1.14  
    1.15  public Action:Command_BanIp(client, args)
    1.16 @@ -77,18 +77,25 @@
    1.17  		GetCmdArg(3, reason, sizeof(reason));
    1.18  	}
    1.19  	
    1.20 -	LogMessage("\"%L\" added ban (minutes \"%d\") (ip \"%s\") (reason \"%s\")", client, minutes, arg, reason);
    1.21 -	
    1.22 +	new Action:act = Plugin_Continue;
    1.23  	Call_StartForward(hAddBanForward);
    1.24  	Call_PushCell(client);
    1.25  	Call_PushString(arg);
    1.26  	Call_PushCell(minutes);
    1.27  	Call_PushString(reason);
    1.28 -	Call_Finish();
    1.29 +	Call_Finish(act);
    1.30  	
    1.31 -	ServerCommand("banip %d %s", minutes, arg);
    1.32 -	ServerCommand("writeip");
    1.33 -	ReplyToCommand(client, "[SM] %t", "Ban added");
    1.34 +	if (act < Plugin_Handled)
    1.35 +	{
    1.36 +		LogMessage("\"%L\" added ban (minutes \"%d\") (ip \"%s\") (reason \"%s\")", client, minutes, arg, reason);
    1.37 +		ReplyToCommand(client, "[SM] %t", "Ban added");
    1.38 +	}
    1.39 +	
    1.40 +	if (act < Plugin_Stop)
    1.41 +	{
    1.42 +		ServerCommand("banip %d %s", minutes, arg);
    1.43 +		ServerCommand("writeip");
    1.44 +	}
    1.45  	
    1.46  	return Plugin_Handled;
    1.47  }
    1.48 @@ -113,18 +120,25 @@
    1.49  		GetCmdArg(3, reason, sizeof(reason));
    1.50  	}
    1.51  	
    1.52 -	LogMessage("\"%L\" added ban (minutes \"%d\") (id \"%s\") (reason \"%s\")", client, minutes, arg, reason);
    1.53 -	
    1.54 +	new Action:act = Plugin_Continue;
    1.55  	Call_StartForward(hAddBanForward);
    1.56  	Call_PushCell(client);
    1.57  	Call_PushString(arg);
    1.58  	Call_PushCell(minutes);
    1.59  	Call_PushString(reason);
    1.60 -	Call_Finish();
    1.61 +	Call_Finish(act);
    1.62  	
    1.63 -	ServerCommand("banid %d %s", minutes, arg);
    1.64 -	ServerCommand("writeid");
    1.65 -	ReplyToCommand(client, "[SM] %t", "Ban added");
    1.66 +	if (act < Plugin_Handled)
    1.67 +	{
    1.68 +		LogMessage("\"%L\" added ban (minutes \"%d\") (id \"%s\") (reason \"%s\")", client, minutes, arg, reason);
    1.69 +		ReplyToCommand(client, "[SM] %t", "Ban added");
    1.70 +	}
    1.71 +	
    1.72 +	if (act < Plugin_Stop)
    1.73 +	{
    1.74 +		ServerCommand("banid %d %s", minutes, arg);
    1.75 +		ServerCommand("writeid");
    1.76 +	}
    1.77  	
    1.78  	return Plugin_Handled;
    1.79  }
    1.80 @@ -149,17 +163,25 @@
    1.81  		start = 2;
    1.82  	}
    1.83  	
    1.84 -	LogMessage("\"%L\" removed ban (filter \"%s\")", arg[start]);
    1.85 +	Format(new_arg, sizeof(new_arg), "STEAM_0:%s", arg[start]);
    1.86  	
    1.87 -	Format(new_arg, sizeof(new_arg), "STEAM_0:%s", arg[start]);
    1.88 +	new Action:act = Plugin_Continue;
    1.89  	Call_StartForward(hBanRemoved);
    1.90  	Call_PushCell(client);
    1.91  	Call_PushString(new_arg);
    1.92  	Call_Finish();
    1.93  	
    1.94 -	ServerCommand("removeid \"%s\"", arg[start]);
    1.95 -	ServerCommand("writeid");
    1.96 -	ReplyToCommand(client, "[SM] %t", "Removed bans matching", arg);
    1.97 +	if (act < Plugin_Handled)
    1.98 +	{
    1.99 +		LogMessage("\"%L\" removed ban (filter \"%s\")", client, arg[start]);
   1.100 +		ReplyToCommand(client, "[SM] %t", "Removed bans matching", arg);
   1.101 +	}
   1.102 +	
   1.103 +	if (act < Plugin_Stop)
   1.104 +	{
   1.105 +		ServerCommand("removeid \"%s\"", arg[start]);
   1.106 +		ServerCommand("writeid");
   1.107 +	}
   1.108  	
   1.109  	return Plugin_Handled;
   1.110  }
   1.111 @@ -209,44 +231,50 @@
   1.112  	new userid = GetClientUserId(clients[0]);
   1.113  	GetClientName(clients[0], arg, sizeof(arg));
   1.114  	
   1.115 -	if (!time)
   1.116 -	{
   1.117 -		if (reason[0] == '\0')
   1.118 -		{
   1.119 -			ShowActivity(client, "%t", "Permabanned player", arg);
   1.120 -		} else {
   1.121 -			ShowActivity(client, "%t", "Permabanned player reason", arg, reason);
   1.122 -		}
   1.123 -	} else {
   1.124 -		if (reason[0] == '\0')
   1.125 -		{
   1.126 -			ShowActivity(client, "%t", "Banned player", arg, time);
   1.127 -		} else {
   1.128 -			ShowActivity(client, "%t", "Banned player reason", arg, time, reason);
   1.129 -		}
   1.130 -	}
   1.131 -	
   1.132 -	LogMessage("\"%L\" banned \"%L\" (minutes \"%d\") (reason \"%s\")", client, clients[0], time, reason);
   1.133 -	
   1.134  	/* Fire the ban forward */
   1.135 +	new Action:act = Plugin_Continue;
   1.136  	Call_StartForward(hBanForward);
   1.137  	Call_PushCell(client);
   1.138  	Call_PushCell(clients[0]);
   1.139  	Call_PushCell(time);
   1.140  	Call_PushString(reason);
   1.141  	Call_Finish();
   1.142 -
   1.143 -	if (reason[0] == '\0')
   1.144 +	
   1.145 +	if (act < Plugin_Handled)
   1.146  	{
   1.147 -		strcopy(reason, sizeof(reason), "Banned");
   1.148 +		if (!time)
   1.149 +		{
   1.150 +			if (reason[0] == '\0')
   1.151 +			{
   1.152 +				ShowActivity(client, "%t", "Permabanned player", arg);
   1.153 +			} else {
   1.154 +				ShowActivity(client, "%t", "Permabanned player reason", arg, reason);
   1.155 +			}
   1.156 +		} else {
   1.157 +			if (reason[0] == '\0')
   1.158 +			{
   1.159 +				ShowActivity(client, "%t", "Banned player", arg, time);
   1.160 +			} else {
   1.161 +				ShowActivity(client, "%t", "Banned player reason", arg, time, reason);
   1.162 +			}
   1.163 +		}
   1.164 +		LogMessage("\"%L\" banned \"%L\" (minutes \"%d\") (reason \"%s\")", client, clients[0], time, reason);
   1.165  	}
   1.166 -	
   1.167 -	ServerCommand("banid %d %d", time, userid);
   1.168 -	ServerCommand("kickid %d \"%s\"", userid, reason);
   1.169 -	
   1.170 -	if (time == 0)
   1.171 +
   1.172 +	if (act < Plugin_Stop)
   1.173  	{
   1.174 -		ServerCommand("writeid");
   1.175 +		if (reason[0] == '\0')
   1.176 +		{
   1.177 +			strcopy(reason, sizeof(reason), "Banned");
   1.178 +		}
   1.179 +		
   1.180 +		ServerCommand("banid %d %d", time, userid);
   1.181 +		ServerCommand("kickid %d \"%s\"", userid, reason);
   1.182 +		
   1.183 +		if (time == 0)
   1.184 +		{
   1.185 +			ServerCommand("writeid");
   1.186 +		}
   1.187  	}
   1.188  	
   1.189  	return Plugin_Handled;