From 93fc6e4866b6527612f3b7a33b29b798e814f285 Mon Sep 17 00:00:00 2001 From: Scavenger3 Date: Sun, 13 Jan 2013 18:29:16 +1000 Subject: [PATCH] Added PlayerCommand Event --- TShockAPI/Commands.cs | 3 +++ TShockAPI/Hooks/PlayerHooks.cs | 30 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 76b33496..563c0ade 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -241,6 +241,9 @@ namespace TShockAPI string cmdName = args[0].ToLower(); args.RemoveAt(0); + if (Hooks.PlayerHooks.OnPlayerCommand(player, cmdName, cmdText, args)) + return true; + IEnumerable cmds = ChatCommands.Where(c => c.HasAlias(cmdName)); if (cmds.Count() == 0) diff --git a/TShockAPI/Hooks/PlayerHooks.cs b/TShockAPI/Hooks/PlayerHooks.cs index 383624ac..4b46a35d 100644 --- a/TShockAPI/Hooks/PlayerHooks.cs +++ b/TShockAPI/Hooks/PlayerHooks.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; @@ -14,10 +15,21 @@ namespace TShockAPI.Hooks } } + public class PlayerCommandEventArgs : HandledEventArgs + { + public TSPlayer Player { get; set; } + public string CommandName { get; set; } + public string CommandText { get; set; } + public List Parameters { get; set; } + } + public static class PlayerHooks { public delegate void PlayerLoginD(PlayerLoginEventArgs e); public static event PlayerLoginD PlayerLogin; + public delegate void PlayerCommandD(PlayerCommandEventArgs e); + public static event PlayerCommandD PlayerCommand; + public static void OnPlayerLogin(TSPlayer ply) { if(PlayerLogin == null) @@ -28,5 +40,23 @@ namespace TShockAPI.Hooks PlayerLoginEventArgs args = new PlayerLoginEventArgs(ply); PlayerLogin(args); } + + public static bool OnPlayerCommand(TSPlayer player, string cmdName, string cmdText, List args) + { + if (PlayerCommand == null) + { + return false; + } + PlayerCommandEventArgs playerCommandEventArgs = new PlayerCommandEventArgs() + { + Player = player, + CommandName = cmdName, + CommandText = cmdText, + Parameters = args + + }; + PlayerCommand(playerCommandEventArgs); + return playerCommandEventArgs.Handled; + } } }