From b353f6233638da3536ee449d9f100ae259562bf4 Mon Sep 17 00:00:00 2001 From: Zidonuke Date: Wed, 28 Dec 2011 17:43:01 -0500 Subject: [PATCH] Prepare new handlers --- TShockAPI/GetDataHandlers.cs | 8 ++++- TShockAPI/TShock.cs | 66 +++++++++++++++++++++--------------- 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 210b65dc..26354bc4 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -90,7 +90,8 @@ namespace TShockAPI {PacketTypes.NpcStrike, HandleNpcStrike}, {PacketTypes.NpcSpecial, HandleSpecial}, {PacketTypes.PlayerAnimation, HandlePlayerAnimation}, - {PacketTypes.PlayerBuff, HandlePlayerBuffUpdate} + {PacketTypes.PlayerBuff, HandlePlayerBuffUpdate}, + {PacketTypes.PasswordSend, HandlePassword} }; } @@ -257,6 +258,11 @@ namespace TShockAPI return false; } + private static bool HandlePassword(GetDataHandlerArgs args) + { + return false; + } + private static bool HandleSendTileSquare(GetDataHandlerArgs args) { diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 76ad7fb9..8b0c9224 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -194,6 +194,7 @@ namespace TShockAPI GameHooks.PostInitialize += OnPostInit; GameHooks.Update += OnUpdate; + ServerHooks.Connect += OnConnect; ServerHooks.Join += OnJoin; ServerHooks.Leave += OnLeave; ServerHooks.Chat += OnChat; @@ -539,7 +540,7 @@ namespace TShockAPI Console.Title = string.Format("TerrariaShock Version {0} ({1}) ({2}/{3})", Version, VersionCodename, count, Config.MaxSlots); } - private void OnJoin(int ply, HandledEventArgs handler) + private void OnConnect(int ply, HandledEventArgs handler) { var player = new TSPlayer(ply); if (Config.EnableDNSHostResolution) @@ -551,7 +552,7 @@ namespace TShockAPI player.Group = Users.GetGroupForIP(player.IP); } - if (TShock.Utils.ActivePlayers() + 1 > Config.MaxSlots && !player.Group.HasPermission(Permissions.reservedslot)) + if (TShock.Utils.ActivePlayers() + 20 > Config.MaxSlots) { TShock.Utils.ForceKick(player, Config.ServerFullReason); handler.Handled = true; @@ -559,12 +560,9 @@ namespace TShockAPI } var ipban = Bans.GetBanByIp(player.IP); - var nameban = Bans.GetBanByName(player.Name); Ban ban = null; if (ipban != null && Config.EnableIPBans) ban = ipban; - else if (nameban != null && Config.EnableBanOnUsernames) - ban = nameban; if (ban != null) { @@ -583,6 +581,40 @@ namespace TShockAPI Players[ply] = player; } + private void OnJoin(int ply, HandledEventArgs handler) + { + var player = Players[ply]; + if (player == null) + { + handler.Handled = true; + return; + } + + if (HackedHealth(player)) + { + TShock.Utils.ForceKick(player, "You have Hacked Health/Mana, Please use a different character."); + } + + if (TShock.Utils.ActivePlayers() + 1 > Config.MaxSlots && !player.Group.HasPermission(Permissions.reservedslot)) + { + TShock.Utils.ForceKick(player, Config.ServerFullReason); + handler.Handled = true; + return; + } + + var nameban = Bans.GetBanByName(player.Name); + Ban ban = null; + if (nameban != null && Config.EnableBanOnUsernames) + ban = nameban; + + if (ban != null) + { + TShock.Utils.ForceKick(player, string.Format("You are banned: {0}", ban.Reason)); + handler.Handled = true; + return; + } + } + private void OnLeave(int ply) { var tsplr = Players[ply]; @@ -750,28 +782,6 @@ namespace TShockAPI } TShock.Utils.ShowFileToUser(player, "motd.txt"); - if (HackedHealth(player)) - { - TShock.Utils.ForceKick(player, "You have Hacked Health/Mana, Please use a different character."); - } - - HackedInventory(player); - - NetMessage.syncPlayers(); - - if (Config.RequireLogin) - { - player.SendMessage("Please /register or /login to play!", Color.Red); - } - else if (Config.ServerSideInventory) - { - player.SendMessage("Server Side Inventory is enabled! Please /register or /login to play!", Color.Red); - } - - if (Config.ServerSideInventory) - { - player.IgnoreActionsForInventory = true; - } if (Config.PvPMode == "always" && !player.TPlayer.hostile) { @@ -783,11 +793,13 @@ namespace TShockAPI { StartInvasion(); } + if (Config.RememberLeavePos) { var pos = RememberedPos.GetLeavePos(player.Name, player.IP); player.Teleport((int) pos.X, (int) pos.Y); } + e.Handled = true; }