From 2c92f0e543c3612972dcb2a1a9f18edc191c9f85 Mon Sep 17 00:00:00 2001 From: k0rd Date: Mon, 21 Oct 2013 19:44:16 -0400 Subject: [PATCH 1/5] reverted 61f6bb1a019adf0ed7f18109d2c81beb7a281faa; remembered position is independant from SSC --- TShockAPI/TShock.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 785fb7ed..59ee4444 100755 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1150,7 +1150,7 @@ namespace TShockAPI player.LastNetPosition = new Vector2(Main.spawnTileX*16f, Main.spawnTileY*16f); - if (Config.RememberLeavePos && (RememberedPos.GetLeavePos(player.Name, player.IP) != Vector2.Zero) && Config.ServerSideCharacter && Config.DisableLoginBeforeJoin) + if (Config.RememberLeavePos && (RememberedPos.GetLeavePos(player.Name, player.IP) != Vector2.Zero)) { player.RPPending=3; player.SendMessage("You will be teleported to your last known location...", Color.Red); From 8b29047a5962567f2c19a8180d5eba040b47ac9f Mon Sep 17 00:00:00 2001 From: k0rd Date: Mon, 21 Oct 2013 22:00:07 -0400 Subject: [PATCH 2/5] fix for double teleporting rememberleavepos under certain config combinations --- TShockAPI/TShock.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 59ee4444..1b6901b5 100755 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1150,7 +1150,7 @@ namespace TShockAPI player.LastNetPosition = new Vector2(Main.spawnTileX*16f, Main.spawnTileY*16f); - if (Config.RememberLeavePos && (RememberedPos.GetLeavePos(player.Name, player.IP) != Vector2.Zero)) + if (Config.RememberLeavePos && (RememberedPos.GetLeavePos(player.Name, player.IP) != Vector2.Zero) && !player.LoginHarassed) { player.RPPending=3; player.SendMessage("You will be teleported to your last known location...", Color.Red); From cd13cc97aaac2fc4c8a02645f5bb7f8b26ea3bc6 Mon Sep 17 00:00:00 2001 From: Zack Piispanen Date: Tue, 22 Oct 2013 00:25:26 -0400 Subject: [PATCH 3/5] Reload itembans on /reload --- TShockAPI/Utils.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index 4861b982..a281db53 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -592,6 +592,7 @@ namespace TShockAPI TShock.HandleCommandLinePostConfigLoad(Environment.GetCommandLineArgs()); TShock.Groups.LoadPermisions(); TShock.Regions.ReloadAllRegions(); + TShock.Itembans.UpdateItemBans(); Hooks.GeneralHooks.OnReloadEvent(player); } From 229d2bf9907651df879a6f666c4ea0401750da48 Mon Sep 17 00:00:00 2001 From: Zack Piispanen Date: Tue, 22 Oct 2013 02:37:19 -0400 Subject: [PATCH 4/5] Wrap usages of TShock.Players[] with checks for out of bounds. --- TShockAPI/GetDataHandlers.cs | 13 +++++++++++-- TShockAPI/Utils.cs | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index a05a30ac..d853a9cf 100755 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -2492,6 +2492,9 @@ namespace TShockAPI return false; } + if (id >= Main.maxPlayers) + return true; + if (OnKillMe(id, direction, dmg, pvp)) return true; @@ -2871,6 +2874,12 @@ namespace TShockAPI args.Player.SendData(PacketTypes.PlayerBuff, "", id); return true; } + + if (id >= Main.maxPlayers) + { + return true; + } + if (!TShock.Players[id].TPlayer.hostile) { args.Player.SendData(PacketTypes.PlayerBuff, "", id); @@ -2977,7 +2986,7 @@ namespace TShockAPI }*/ } - if (TShock.Players[id] == null) + if (id >= Main.maxPlayers || TShock.Players[id] == null) return true; if (dmg > TShock.Config.MaxDamage && !args.Player.Group.HasPermission(Permissions.ignoredamagecap) && id != args.Player.Index) @@ -3330,7 +3339,7 @@ namespace TShockAPI return true; } - if (Main.player[id] == null || TShock.Players[id] == null) + if (id >= Main.maxPlayers || Main.player[id] == null || TShock.Players[id] == null) { return true; } diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index a281db53..e19ecbf4 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -258,7 +258,7 @@ namespace TShockAPI return found; byte plrID; - if (byte.TryParse(plr, out plrID)) + if (byte.TryParse(plr, out plrID) && plrID < Main.maxPlayers) { TSPlayer player = TShock.Players[plrID]; if (player != null && player.Active) From 95d04d98c374784fafdafafc04f3eafb18d423e5 Mon Sep 17 00:00:00 2001 From: Zack Piispanen Date: Tue, 22 Oct 2013 02:39:58 -0400 Subject: [PATCH 5/5] Cleanup --- TShockAPI/GetDataHandlers.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index d853a9cf..4c693a48 100755 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -2493,12 +2493,14 @@ namespace TShockAPI } if (id >= Main.maxPlayers) + { return true; + } if (OnKillMe(id, direction, dmg, pvp)) return true; - int textlength = (int) (args.Data.Length - args.Data.Position - 1); + int textlength = (int)(args.Data.Length - args.Data.Position - 1); string deathtext = ""; if (textlength > 0) { @@ -2987,7 +2989,9 @@ namespace TShockAPI } if (id >= Main.maxPlayers || TShock.Players[id] == null) + { return true; + } if (dmg > TShock.Config.MaxDamage && !args.Player.Group.HasPermission(Permissions.ignoredamagecap) && id != args.Player.Index) {