From a8e93455c925850b3b5c9167167f41fa6f7cfe46 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Sat, 31 Dec 2011 13:49:14 -0700 Subject: [PATCH] Add an event for PlayerInfo --- TShockAPI/GetDataHandlers.cs | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 6dd7a69a..61aaf7bd 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -186,6 +186,38 @@ namespace TShockAPI PlayerMana.Invoke(null, args); return args.Handled; } + + /// + /// PlayerInfo - called at a PlayerInfo event + /// If this is cancelled, the server will ForceKick the player. If this should be changed in the future, let someone know. + /// + public class PlayerInfoEventArgs : HandledEventArgs + { + public int playerid { get; set; } + public int hair { get; set; } + public int male { get; set; } + public int difficulty { get; set; } + public string name { get; set; } + } + + public static HandlerList PlayerInfo; + + public static bool OnPlayerInfo(int _plrid, int _hair, int _male, int _difficulty, string _name) + { + if (PlayerInfo == null) + return false; + + var args = new PlayerInfoEventArgs + { + playerid = _plrid, + hair = _hair, + male = _male, + difficulty = _difficulty, + name = _name, + }; + PlayerInfo.Invoke(null, args); + return args.Handled; + } #endregion public static void InitGetDataHandler() { @@ -337,6 +369,12 @@ namespace TShockAPI var difficulty = args.Data.ReadInt8(); string name = Encoding.ASCII.GetString(args.Data.ReadBytes((int) (args.Data.Length - args.Data.Position - 1))); + if (OnPlayerInfo((int)playerid, (int) hair, (int) male, (int) difficulty, name)) + { + TShock.Utils.ForceKick(args.Player, "A plugin cancelled the event."); + return true; + } + if (!TShock.Utils.ValidString(name)) { TShock.Utils.ForceKick(args.Player, "Unprintable character in name");