Save player data on backups

Server Side Inventory security improvements, blocking trashcan and "banks" items
CovertCorruption is now more thorough.
PvP Modes, normal, always, disabled now configurable
Initial group prefix/suffix implementation
Range checks reworked, Killing ice blocks now ignored for ice rod.
Adding a NPC name to item banlist will block it from spawning
Added configs to disable snowballs and clown bombs from npcs.
This commit is contained in:
Zidonuke 2011-12-22 17:32:51 -05:00
parent fc735ba829
commit 8cf298ad85
10 changed files with 133 additions and 30 deletions

View file

@ -308,6 +308,10 @@ namespace TShockAPI
var tile = Main.tile[realx, realy];
var newtile = tiles[x, y];
if(TShock.CheckTilePermission(args.Player, x, y))
{
continue;
}
if(TShock.CheckRangePermission(args.Player, x, y))
{
continue;
}
@ -474,6 +478,12 @@ namespace TShockAPI
{
return true;
}
if (tiletype == 29 && tiletype == 97 && TShock.Config.ServerSideInventory)
{
args.Player.SendMessage("You cannot place this tile, Server side inventory is enabled.", Color.Red);
args.Player.SendTileSquare(tileX, tileY);
return true;
}
if (tiletype == 48 && !args.Player.Group.HasPermission(Permissions.usebanneditem) && TShock.Itembans.ItemIsBanned("Spikes"))
{
args.Player.SendTileSquare(tileX, tileY);
@ -504,6 +514,17 @@ namespace TShockAPI
return true;
}
if (tiletype == 127 && type == 0) //Ice Block Kill, Bypass range checks and such
{
return false;
}
if (TShock.CheckRangePermission(args.Player, tileX, tileY))
{
args.Player.SendTileSquare(tileX, tileY);
return true;
}
if (type == 0 && Main.tileSolid[Main.tile[tileX, tileY].type] && args.Player.Active)
{
args.Player.TileThreshold++;
@ -543,7 +564,7 @@ namespace TShockAPI
args.TPlayer.hostile = pvp;
if (TShock.Config.AlwaysPvP)
if (TShock.Config.PvPMode == "always")
{
if (pvp == true)
args.Player.IgnoreActionsForPvP = false;
@ -591,11 +612,15 @@ namespace TShockAPI
{
args.Player.SendMessage("You have been disabled for cheating! Please login with a new character!", Color.Red);
}
else if (TShock.Config.ServerSideInventory && !args.Player.IsLoggedIn)
else if (args.Player.IgnoreActionsForInventory)
{
args.Player.SendMessage("Server Side Inventory is enabled! Please /register or /login to play!", Color.Red);
}
else if (TShock.Config.AlwaysPvP && !args.TPlayer.hostile)
else if (args.Player.IgnoreActionsForClearingTrashCan)
{
args.Player.SendMessage("You need to rejoin to ensure your trash can is cleared!", Color.Red);
}
else if (args.Player.IgnoreActionsForPvP)
{
args.Player.SendMessage("PvP is forced! Enable PvP else you can't move or do anything!", Color.Red);
}
@ -772,11 +797,18 @@ namespace TShockAPI
args.Player.SendTileSquare(tileX, tileY);
return true;
}
if (TShock.CheckTilePermission(args.Player, tileX, tileY))
{
args.Player.SendTileSquare(tileX, tileY);
return true;
}
if (TShock.CheckRangePermission(args.Player, tileX, tileY))
{
args.Player.SendTileSquare(tileX, tileY);
return true;
}
return false;
}
@ -807,6 +839,12 @@ namespace TShockAPI
return true;
}
if (TShock.CheckRangePermission(args.Player, tileX, tileY))
{
args.Player.SendTileSquare(tileX, tileY);
return true;
}
return false;
}
@ -851,7 +889,7 @@ namespace TShockAPI
return true;
}
if (TShock.Config.RangeChecks && ((Math.Abs(args.Player.TileX - x) > 32) || (Math.Abs(args.Player.TileY - y) > 32)))
if (TShock.CheckRangePermission(args.Player, x, y))
{
return true;
}
@ -891,6 +929,12 @@ namespace TShockAPI
return false;
}
if (TShock.CheckRangePermission(args.Player, Main.chest[id].x, Main.chest[id].y))
{
args.Player.SendData(PacketTypes.ChestItem, "", id, slot);
return true;
}
return false;
}
@ -905,6 +949,12 @@ namespace TShockAPI
args.Player.SendData(PacketTypes.SignNew, "", id);
return true;
}
if (TShock.CheckRangePermission(args.Player, x, y))
{
args.Player.SendData(PacketTypes.SignNew, "", id);
return true;
}
return false;
}
@ -936,6 +986,12 @@ namespace TShockAPI
args.Player.SendData(PacketTypes.UpdateNPCHome, "", id, Main.npc[id].homeTileX, Main.npc[id].homeTileY, Convert.ToByte(Main.npc[id].homeless));
return true;
}
if (TShock.CheckRangePermission(args.Player, x, y))
{
args.Player.SendData(PacketTypes.UpdateNPCHome, "", id, Main.npc[id].homeTileX, Main.npc[id].homeTileY, Convert.ToByte(Main.npc[id].homeless));
return true;
}
return false;
}
@ -955,7 +1011,7 @@ namespace TShockAPI
args.Player.SendData(PacketTypes.PlayerBuff, "", id);
return true;
}
if (TShock.Config.RangeChecks && ((Math.Abs(args.Player.TileX - TShock.Players[id].TileX) > 64) || (Math.Abs(args.Player.TileY - TShock.Players[id].TileY) > 64)))
if (TShock.CheckRangePermission(args.Player, TShock.Players[id].TileX, TShock.Players[id].TileY, 64))
{
args.Player.SendData(PacketTypes.PlayerBuff, "", id);
return true;
@ -989,7 +1045,7 @@ namespace TShockAPI
return false;
}
if (TShock.Config.RangeChecks && ((Math.Abs(args.Player.TileX - (pos.X / 16f)) > 64) || (Math.Abs(args.Player.TileY - (pos.Y / 16f)) > 64)))
if (TShock.CheckRangePermission(args.Player, (int)(pos.X / 16f), (int)(pos.Y / 16f), 64))
{
args.Player.SendData(PacketTypes.ItemDrop, "", id);
return true;
@ -1055,7 +1111,7 @@ namespace TShockAPI
return true;
}
if (TShock.Config.RangeChecks && ((Math.Abs(args.Player.TileX - TShock.Players[id].TileX) > 128) || (Math.Abs(args.Player.TileY - TShock.Players[id].TileY) > 128)))
if (TShock.CheckRangePermission(args.Player, TShock.Players[id].TileX, TShock.Players[id].TileY, 128))
{
args.Player.SendData(PacketTypes.PlayerHp, "", id);
args.Player.SendData(PacketTypes.PlayerUpdate, "", id);