Kick/Ban now take TSPlayer instead of player index

This commit is contained in:
ricky 2011-06-15 13:41:49 +10:00
parent fc2d04ad9f
commit 3af6e990dc
4 changed files with 58 additions and 59 deletions

View file

@ -329,7 +329,7 @@ namespace TShockAPI
else else
{ {
string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour."; 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); args.Player.SendMessage("You can't kick another admin!", Color.Red);
} }
@ -364,7 +364,7 @@ namespace TShockAPI
else else
{ {
string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour."; 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); args.Player.SendMessage("You can't ban another admin!", Color.Red);
} }
@ -794,8 +794,6 @@ namespace TShockAPI
public static void Heal(CommandArgs args) public static void Heal(CommandArgs args)
{ {
int adminplr = args.PlayerID;
if (args.Parameters.Count > 0) if (args.Parameters.Count > 0)
{ {
string plStr = String.Join(" ", args.Parameters); string plStr = String.Join(" ", args.Parameters);

View file

@ -26,8 +26,6 @@ namespace TShockAPI
{ {
public static readonly TSPlayer Server = new ServerPlayer(); public static readonly TSPlayer Server = new ServerPlayer();
public static readonly TSPlayer All = new TSPlayer(new Player { name = "All", whoAmi = -1 }); public static readonly TSPlayer All = new TSPlayer(new Player { name = "All", whoAmi = -1 });
public uint TileThreshold { get; set; } public uint TileThreshold { get; set; }
public Dictionary<Vector2, Tile> TilesDestroyed { get; set; } public Dictionary<Vector2, Tile> TilesDestroyed { get; set; }
public bool SyncHP { get; set; } public bool SyncHP { get; set; }

View file

@ -224,6 +224,7 @@ namespace TShockAPI
} }
else else
{ {
Tools.SendLogs(string.Format("{0} executed: /{1}", TSPlayer.Server.Name, text), Color.Red);
cmd.Run(text, TSPlayer.Server, args); cmd.Run(text, TSPlayer.Server, args);
} }
e.Handled = true; e.Handled = true;
@ -343,7 +344,7 @@ namespace TShockAPI
} }
if (Players[e.Msg.whoAmI].ReceivedInfo) 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; Players[e.Msg.whoAmI].ReceivedInfo = true;
@ -367,10 +368,11 @@ namespace TShockAPI
Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), Math.Abs(plyX - tileX), Math.Abs(plyY - tileY),
size size
)); ));
return Tools.HandleGriefer(e.Msg.whoAmI, "Send Tile Square Abuse"); return Tools.HandleGriefer(Players[e.Msg.whoAmI], "Send Tile Square Abuse");
} }
return false; return false;
} }
bool HandleTile(MemoryStream data, GetDataEventArgs e) bool HandleTile(MemoryStream data, GetDataEventArgs e)
{ {
byte type = data.ReadInt8(); byte type = data.ReadInt8();
@ -384,9 +386,9 @@ namespace TShockAPI
int tileX = Math.Abs(x); int tileX = Math.Abs(x);
int tileY = Math.Abs(y); 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))) 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), Math.Abs(plyX - tileX), Math.Abs(plyY - tileY),
tiletype 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) if (ConfigurationManager.DisableBuild)
@ -455,12 +457,12 @@ namespace TShockAPI
bool HandleSendSection(MemoryStream data, GetDataEventArgs e) 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) 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) bool HandlePlayerUpdate(MemoryStream data, GetDataEventArgs e)
@ -478,7 +480,7 @@ namespace TShockAPI
if (plr != e.Msg.whoAmI) 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; return false;
} }
@ -503,7 +505,7 @@ namespace TShockAPI
(int)(plr.position.Y / 16), (int)(plr.position.Y / 16),
type type
)); ));
return Tools.HandleExplosivesUser(e.Msg.whoAmI, "Throwing an explosive device."); return Tools.HandleExplosivesUser(Players[e.Msg.whoAmI], "Throwing an explosive device.");
} }
return false; return false;
} }
@ -517,7 +519,7 @@ namespace TShockAPI
if (id != e.Msg.whoAmI) 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; return false;
} }
@ -581,7 +583,7 @@ namespace TShockAPI
Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), Math.Abs(plyX - tileX), Math.Abs(plyY - tileY),
liquid 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))) 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), Math.Abs(plyX - tileX), Math.Abs(plyY - tileY),
liquid 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) if (ConfigurationManager.SpawnProtect)
@ -639,7 +641,7 @@ namespace TShockAPI
Tools.ShowFileToUser(player, "motd.txt"); Tools.ShowFileToUser(player, "motd.txt");
if (HackedHealth(who)) if (HackedHealth(who))
{ {
Tools.HandleCheater(who, "Hacked health."); Tools.HandleCheater(player, "Hacked health.");
} }
if (ConfigurationManager.PermaPvp) if (ConfigurationManager.PermaPvp)
{ {
@ -660,7 +662,7 @@ namespace TShockAPI
if (msg.whoAmI != ply) if (msg.whoAmI != ply)
{ {
e.Handled = Tools.HandleGriefer(ply, "Faking Chat"); e.Handled = Tools.HandleGriefer(Players[ply], "Faking Chat");
return; return;
} }
@ -789,24 +791,25 @@ namespace TShockAPI
{ {
if (Main.player[i].active == false) if (Main.player[i].active == false)
continue; 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); RevertKillTile(player);
Players[i].TileThreshold = 0; player.TileThreshold = 0;
Players[i].TilesDestroyed.Clear(); player.TilesDestroyed.Clear();
} }
else if (Players[i].TileThreshold > 0) else if (player.TileThreshold > 0)
{ {
Players[i].TileThreshold = 0; player.TileThreshold = 0;
Players[i].TilesDestroyed.Clear(); 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; return true;
} }
public static void RevertKillTile(int ply) public static void RevertKillTile(TSPlayer player)
{ {
Tile[] tiles = new Tile[Players[ply].TilesDestroyed.Count]; Tile[] tiles = new Tile[player.TilesDestroyed.Count];
Players[ply].TilesDestroyed.Values.CopyTo(tiles, 0); player.TilesDestroyed.Values.CopyTo(tiles, 0);
Vector2[] positions = new Vector2[Players[ply].TilesDestroyed.Count]; Vector2[] positions = new Vector2[player.TilesDestroyed.Count];
Players[ply].TilesDestroyed.Keys.CopyTo(positions, 0); player.TilesDestroyed.Keys.CopyTo(positions, 0);
for (int i = (Players[ply].TilesDestroyed.Count - 1); i >= 0; i--) for (int i = (player.TilesDestroyed.Count - 1); i >= 0; i--)
{ {
Main.tile[(int)positions[i].X, (int)positions[i].Y] = tiles[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); NetMessage.SendData(17, -1, -1, "", 1, positions[i].X, positions[i].Y, (float)0);

View file

@ -213,14 +213,14 @@ namespace TShockAPI
/// </summary> /// </summary>
/// <param name="ply">int player</param> /// <param name="ply">int player</param>
/// <param name="reason">string reason</param> /// <param name="reason">string reason</param>
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; return true;
if (!TShock.Players[ply].Group.HasPermission("immunetokick")) if (!player.Group.HasPermission("immunetokick"))
{ {
string playerName = Main.player[ply].name; string playerName = player.Name;
NetMessage.SendData(0x2, ply, -1, string.Format("Kicked: {0}", reason), 0x0, 0f, 0f, 0f); 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)); Log.Info(string.Format("Kicked {0} for : {1}", playerName, reason));
if (adminUserName.Length == 0) if (adminUserName.Length == 0)
Broadcast(string.Format("{0} was kicked for {1}", playerName, reason.ToLower())); Broadcast(string.Format("{0} was kicked for {1}", playerName, reason.ToLower()));
@ -236,16 +236,16 @@ namespace TShockAPI
/// </summary> /// </summary>
/// <param name="ply">int player</param> /// <param name="ply">int player</param>
/// <param name="reason">string reason</param> /// <param name="reason">string reason</param>
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; return true;
if (!TShock.Players[plr].Group.HasPermission("immunetoban")) if (!player.Group.HasPermission("immunetoban"))
{ {
string ip = GetPlayerIP(plr); string ip = GetPlayerIP(player.Index);
string playerName = Main.player[plr].name; string playerName = player.Name;
TShock.Bans.AddBan(ip, playerName, reason); 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)); Log.Info(string.Format("Banned {0} for : {1}", playerName, reason));
if (adminUserName.Length == 0) if (adminUserName.Length == 0)
Broadcast(string.Format("{0} was banned for {1}", playerName, reason.ToLower())); Broadcast(string.Format("{0} was banned for {1}", playerName, reason.ToLower()));
@ -256,37 +256,37 @@ namespace TShockAPI
return false; 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) if (ban)
{ {
return Ban(ply, reason); return Ban(player, reason);
} }
if (kick) if (kick)
{ {
return Kick(ply, reason); return Kick(player, reason);
} }
} }
return false; return false;