From 3af6e990dce7c0f1719761a2acd4fa58474b7541 Mon Sep 17 00:00:00 2001 From: ricky Date: Wed, 15 Jun 2011 13:41:49 +1000 Subject: [PATCH] Kick/Ban now take TSPlayer instead of player index --- TShockAPI/Commands.cs | 6 ++--- TShockAPI/TSPlayer.cs | 2 -- TShockAPI/TShock.cs | 63 ++++++++++++++++++++++--------------------- TShockAPI/Tools.cs | 46 +++++++++++++++---------------- 4 files changed, 58 insertions(+), 59 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 36a7f1c9..0d7ffe73 100755 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -329,7 +329,7 @@ namespace TShockAPI else { string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour."; - if (!Tools.Kick(player[0].Index, reason)) + if (!Tools.Kick(player[0], reason)) { args.Player.SendMessage("You can't kick another admin!", Color.Red); } @@ -364,7 +364,7 @@ namespace TShockAPI else { string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour."; - if (!Tools.Ban(player[0].Index, reason)) + if (!Tools.Ban(player[0], reason)) { args.Player.SendMessage("You can't ban another admin!", Color.Red); } @@ -794,8 +794,6 @@ namespace TShockAPI public static void Heal(CommandArgs args) { - int adminplr = args.PlayerID; - if (args.Parameters.Count > 0) { string plStr = String.Join(" ", args.Parameters); diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 17b3d8e9..824b43ae 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -26,8 +26,6 @@ namespace TShockAPI { public static readonly TSPlayer Server = new ServerPlayer(); public static readonly TSPlayer All = new TSPlayer(new Player { name = "All", whoAmi = -1 }); - - public uint TileThreshold { get; set; } public Dictionary TilesDestroyed { get; set; } public bool SyncHP { get; set; } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index ca021787..1566645d 100755 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -224,6 +224,7 @@ namespace TShockAPI } else { + Tools.SendLogs(string.Format("{0} executed: /{1}", TSPlayer.Server.Name, text), Color.Red); cmd.Run(text, TSPlayer.Server, args); } e.Handled = true; @@ -343,7 +344,7 @@ namespace TShockAPI } if (Players[e.Msg.whoAmI].ReceivedInfo) { - return Tools.HandleGriefer(e.Msg.whoAmI, "Sent client info more than once"); + return Tools.HandleGriefer(Players[e.Msg.whoAmI], "Sent client info more than once"); } Players[e.Msg.whoAmI].ReceivedInfo = true; @@ -367,10 +368,11 @@ namespace TShockAPI Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), size )); - return Tools.HandleGriefer(e.Msg.whoAmI, "Send Tile Square Abuse"); + return Tools.HandleGriefer(Players[e.Msg.whoAmI], "Send Tile Square Abuse"); } return false; } + bool HandleTile(MemoryStream data, GetDataEventArgs e) { byte type = data.ReadInt8(); @@ -384,9 +386,9 @@ namespace TShockAPI int tileX = Math.Abs(x); int tileY = Math.Abs(y); - if (Main.player[e.Msg.whoAmI].selectedItem == 0x72) //Dirt Rod + if (Players[e.Msg.whoAmI].TPlayer.selectedItem == 0x72) //Dirt Rod { - return Tools.Kick(e.Msg.whoAmI, "Using dirt rod"); + return Tools.Kick(Players[e.Msg.whoAmI], "Using dirt rod"); } if (ConfigurationManager.RangeChecks && ((Math.Abs(plyX - tileX) > 32) || (Math.Abs(plyY - tileY) > 32))) @@ -397,7 +399,7 @@ namespace TShockAPI Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), tiletype )); - return Tools.HandleGriefer(e.Msg.whoAmI, "Placing impossible to place blocks."); + return Tools.HandleGriefer(Players[e.Msg.whoAmI], "Placing impossible to place blocks."); } } if (ConfigurationManager.DisableBuild) @@ -455,12 +457,12 @@ namespace TShockAPI bool HandleSendSection(MemoryStream data, GetDataEventArgs e) { - return Tools.HandleGriefer(e.Msg.whoAmI, "SendSection abuse."); + return Tools.HandleGriefer(Players[e.Msg.whoAmI], "SendSection abuse."); } bool HandleNpcUpdate(MemoryStream data, GetDataEventArgs e) { - return Tools.HandleGriefer(e.Msg.whoAmI, "Spawn NPC abuse"); + return Tools.HandleGriefer(Players[e.Msg.whoAmI], "Spawn NPC abuse"); } bool HandlePlayerUpdate(MemoryStream data, GetDataEventArgs e) @@ -478,7 +480,7 @@ namespace TShockAPI if (plr != e.Msg.whoAmI) { - return Tools.HandleGriefer(e.Msg.whoAmI, "Update Player abuse"); + return Tools.HandleGriefer(Players[e.Msg.whoAmI], "Update Player abuse"); } return false; } @@ -503,7 +505,7 @@ namespace TShockAPI (int)(plr.position.Y / 16), type )); - return Tools.HandleExplosivesUser(e.Msg.whoAmI, "Throwing an explosive device."); + return Tools.HandleExplosivesUser(Players[e.Msg.whoAmI], "Throwing an explosive device."); } return false; } @@ -517,7 +519,7 @@ namespace TShockAPI if (id != e.Msg.whoAmI) { - return Tools.HandleGriefer(e.Msg.whoAmI, "Trying to execute KillMe on someone else."); + return Tools.HandleGriefer(Players[e.Msg.whoAmI], "Trying to execute KillMe on someone else."); } return false; } @@ -581,7 +583,7 @@ namespace TShockAPI Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), liquid )); - return Tools.HandleGriefer(e.Msg.whoAmI, "Manipulating liquid without bucket."); ; + return Tools.HandleGriefer(Players[e.Msg.whoAmI], "Manipulating liquid without bucket."); ; } if (ConfigurationManager.RangeChecks && ((Math.Abs(plyX - tileX) > 32) || (Math.Abs(plyY - tileY) > 32))) { @@ -591,7 +593,7 @@ namespace TShockAPI Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), liquid )); - return Tools.HandleGriefer(e.Msg.whoAmI, "Placing impossible to place liquid."); ; + return Tools.HandleGriefer(Players[e.Msg.whoAmI], "Placing impossible to place liquid."); ; } if (ConfigurationManager.SpawnProtect) @@ -639,7 +641,7 @@ namespace TShockAPI Tools.ShowFileToUser(player, "motd.txt"); if (HackedHealth(who)) { - Tools.HandleCheater(who, "Hacked health."); + Tools.HandleCheater(player, "Hacked health."); } if (ConfigurationManager.PermaPvp) { @@ -660,7 +662,7 @@ namespace TShockAPI if (msg.whoAmI != ply) { - e.Handled = Tools.HandleGriefer(ply, "Faking Chat"); + e.Handled = Tools.HandleGriefer(Players[ply], "Faking Chat"); return; } @@ -789,24 +791,25 @@ namespace TShockAPI { if (Main.player[i].active == false) continue; - if (Players[i].TileThreshold >= 20) + TSPlayer player = Players[i]; + if (player.TileThreshold >= 20) { - if (Tools.HandleTntUser(i, "Kill tile abuse detected.")) + if (Tools.HandleTntUser(player, "Kill tile abuse detected.")) { - RevertKillTile(i); - Players[i].TileThreshold = 0; - Players[i].TilesDestroyed.Clear(); + RevertKillTile(player); + player.TileThreshold = 0; + player.TilesDestroyed.Clear(); } - else if (Players[i].TileThreshold > 0) + else if (player.TileThreshold > 0) { - Players[i].TileThreshold = 0; - Players[i].TilesDestroyed.Clear(); + player.TileThreshold = 0; + player.TilesDestroyed.Clear(); } } - else if (Players[i].TileThreshold > 0) + else if (player.TileThreshold > 0) { - Players[i].TileThreshold = 0; + player.TileThreshold = 0; } } } @@ -962,13 +965,13 @@ namespace TShockAPI return true; } - public static void RevertKillTile(int ply) + public static void RevertKillTile(TSPlayer player) { - Tile[] tiles = new Tile[Players[ply].TilesDestroyed.Count]; - Players[ply].TilesDestroyed.Values.CopyTo(tiles, 0); - Vector2[] positions = new Vector2[Players[ply].TilesDestroyed.Count]; - Players[ply].TilesDestroyed.Keys.CopyTo(positions, 0); - for (int i = (Players[ply].TilesDestroyed.Count - 1); i >= 0; i--) + Tile[] tiles = new Tile[player.TilesDestroyed.Count]; + player.TilesDestroyed.Values.CopyTo(tiles, 0); + Vector2[] positions = new Vector2[player.TilesDestroyed.Count]; + player.TilesDestroyed.Keys.CopyTo(positions, 0); + for (int i = (player.TilesDestroyed.Count - 1); i >= 0; i--) { Main.tile[(int)positions[i].X, (int)positions[i].Y] = tiles[i]; NetMessage.SendData(17, -1, -1, "", 1, positions[i].X, positions[i].Y, (float)0); diff --git a/TShockAPI/Tools.cs b/TShockAPI/Tools.cs index 461d8560..9059278c 100755 --- a/TShockAPI/Tools.cs +++ b/TShockAPI/Tools.cs @@ -213,14 +213,14 @@ namespace TShockAPI /// /// int player /// string reason - public static bool Kick(int ply, string reason, string adminUserName = "") + public static bool Kick(TSPlayer player, string reason, string adminUserName = "") { - if (!Netplay.serverSock[ply].active || Netplay.serverSock[ply].kill) + if (!Netplay.serverSock[player.Index].active || Netplay.serverSock[player.Index].kill) return true; - if (!TShock.Players[ply].Group.HasPermission("immunetokick")) + if (!player.Group.HasPermission("immunetokick")) { - string playerName = Main.player[ply].name; - NetMessage.SendData(0x2, ply, -1, string.Format("Kicked: {0}", reason), 0x0, 0f, 0f, 0f); + string playerName = player.Name; + NetMessage.SendData(0x2, player.Index, -1, string.Format("Kicked: {0}", reason), 0x0, 0f, 0f, 0f); Log.Info(string.Format("Kicked {0} for : {1}", playerName, reason)); if (adminUserName.Length == 0) Broadcast(string.Format("{0} was kicked for {1}", playerName, reason.ToLower())); @@ -236,16 +236,16 @@ namespace TShockAPI /// /// int player /// string reason - public static bool Ban(int plr, string reason, string adminUserName = "") + public static bool Ban(TSPlayer player, string reason, string adminUserName = "") { - if (!Netplay.serverSock[plr].active || Netplay.serverSock[plr].kill) + if (!Netplay.serverSock[player.Index].active || Netplay.serverSock[player.Index].kill) return true; - if (!TShock.Players[plr].Group.HasPermission("immunetoban")) + if (!player.Group.HasPermission("immunetoban")) { - string ip = GetPlayerIP(plr); - string playerName = Main.player[plr].name; + string ip = GetPlayerIP(player.Index); + string playerName = player.Name; TShock.Bans.AddBan(ip, playerName, reason); - NetMessage.SendData(0x2, plr, -1, string.Format("Banned: {0}", reason), 0x0, 0f, 0f, 0f); + NetMessage.SendData(0x2, player.Index, -1, string.Format("Banned: {0}", reason), 0x0, 0f, 0f, 0f); Log.Info(string.Format("Banned {0} for : {1}", playerName, reason)); if (adminUserName.Length == 0) Broadcast(string.Format("{0} was banned for {1}", playerName, reason.ToLower())); @@ -256,37 +256,37 @@ namespace TShockAPI return false; } - public static bool HandleCheater(int ply, string reason) + public static bool HandleCheater(TSPlayer player, string reason) { - return HandleBadPlayer(ply, "ignorecheatdetection", ConfigurationManager.BanCheater, ConfigurationManager.KickCheater, reason); + return HandleBadPlayer(player, "ignorecheatdetection", ConfigurationManager.BanCheater, ConfigurationManager.KickCheater, reason); } - public static bool HandleGriefer(int ply, string reason) + public static bool HandleGriefer(TSPlayer player, string reason) { - return HandleBadPlayer(ply, "ignoregriefdetection", ConfigurationManager.BanGriefer, ConfigurationManager.KickGriefer, reason); + return HandleBadPlayer(player, "ignoregriefdetection", ConfigurationManager.BanGriefer, ConfigurationManager.KickGriefer, reason); } - public static bool HandleTntUser(int ply, string reason) + public static bool HandleTntUser(TSPlayer player, string reason) { - return HandleBadPlayer(ply, "ignoregriefdetection", ConfigurationManager.BanTnt, ConfigurationManager.KickTnt, reason); + return HandleBadPlayer(player, "ignoregriefdetection", ConfigurationManager.BanTnt, ConfigurationManager.KickTnt, reason); } - public static bool HandleExplosivesUser(int ply, string reason) + public static bool HandleExplosivesUser(TSPlayer player, string reason) { - return HandleBadPlayer(ply, "ignoregriefdetection", ConfigurationManager.BanBoom, ConfigurationManager.KickBoom, reason); + return HandleBadPlayer(player, "ignoregriefdetection", ConfigurationManager.BanBoom, ConfigurationManager.KickBoom, reason); } - private static bool HandleBadPlayer(int ply, string overridePermission, bool ban, bool kick, string reason) + private static bool HandleBadPlayer(TSPlayer player, string overridePermission, bool ban, bool kick, string reason) { - if (!TShock.Players[ply].Group.HasPermission(overridePermission)) + if (!player.Group.HasPermission(overridePermission)) { if (ban) { - return Ban(ply, reason); + return Ban(player, reason); } if (kick) { - return Kick(ply, reason); + return Kick(player, reason); } } return false;