Add some more hack checks to painting tiles & walls

Also add permission to ignore paint threshold
This commit is contained in:
MarioE 2013-10-04 19:05:10 -04:00
parent 149dbdf56d
commit d4c7385781
3 changed files with 43 additions and 9 deletions

View file

@ -1849,7 +1849,7 @@ namespace TShockAPI
return true;
}
Item selectedItem = args.TPlayer.inventory[args.TPlayer.selectedItem];
Item selectedItem = args.Player.SelectedItem;
if (type == 0 && !Main.tileCut[Main.tile[tileX, tileY].type] && !breakableTiles.Contains(Main.tile[tileX, tileY].type))
{
// If the tile is an axe tile and they aren't selecting an axe, they're hacking.
@ -1879,7 +1879,6 @@ namespace TShockAPI
args.Player.SendTileSquare(tileX, tileY, 1);
return true;
}
}
else if (action == EditAction.PlaceTile || action == EditAction.PlaceWall)
{
@ -3192,6 +3191,13 @@ namespace TShockAPI
if (OnPaintTile(x, y, t))
return true;
// Not selecting paintbrush or paint scraper? Hacking.
if (args.Player.SelectedItem.type != 1071 && args.Player.SelectedItem.type != 1100)
{
args.Player.SendData(PacketTypes.PaintWall, "", x, y, 0);
return true;
}
if ((DateTime.UtcNow - args.Player.LastThreat).TotalMilliseconds < 5000 ||
TShock.CheckTilePermission(args.Player, x, y, true) ||
TShock.CheckRangePermission(args.Player, x, y))
@ -3199,7 +3205,11 @@ namespace TShockAPI
args.Player.SendData(PacketTypes.PaintTile, "", x, y, 0);
return true;
}
args.Player.PaintThreshold++;
if (!args.Player.Group.HasPermission(Permissions.ignorepaintdetection))
{
args.Player.PaintThreshold++;
}
return false;
}
@ -3212,6 +3222,13 @@ namespace TShockAPI
if (OnPaintTile(x, y, t))
return true;
// Not selecting paint roller or paint scraper? Hacking.
if (args.Player.SelectedItem.type != 1072 && args.Player.SelectedItem.type != 1100)
{
args.Player.SendData(PacketTypes.PaintWall, "", x, y, 0);
return true;
}
if ((DateTime.UtcNow - args.Player.LastThreat).TotalMilliseconds < 5000 ||
TShock.CheckTilePermission(args.Player, x, y, true) ||
TShock.CheckRangePermission(args.Player, x, y))
@ -3219,7 +3236,11 @@ namespace TShockAPI
args.Player.SendData(PacketTypes.PaintWall, "", x, y, 0);
return true;
}
args.Player.PaintThreshold++;
if (!args.Player.Group.HasPermission(Permissions.ignorepaintdetection))
{
args.Player.PaintThreshold++;
}
return false;
}

View file

@ -130,6 +130,9 @@ namespace TShockAPI
[Description("Prevents you from being disabled by projectile abuse detection.")]
public static readonly string ignoreprojectiledetection = "tshock.ignore.projectile";
[Description("Prevents you from being disabled by paint abuse detection.")]
public static readonly string ignorepaintdetection = "tshock.ignore.paint";
[Description("Prevents you from being reverted by no clip detection.")]
public static readonly string ignorenoclipdetection = "tshock.ignore.noclip";

View file

@ -319,21 +319,31 @@ namespace TShockAPI
}
}
/// <summary>
/// Gets the player's selected item.
/// </summary>
public Item SelectedItem
{
get { return TPlayer.inventory[TPlayer.selectedItem]; }
}
public int State
{
get { return Netplay.serverSock[Index].state; }
set { Netplay.serverSock[Index].state = value; }
}
/// <summary>
/// Gets the player's UUID.
/// </summary>
public string UUID
{
get {
return RealPlayer
? Netplay.serverSock[Index].clientUUID
: "";
}
get { return RealPlayer ? Netplay.serverSock[Index].clientUUID : ""; }
}
/// <summary>
/// Gets the player's IP.
/// </summary>
public string IP
{
get