Merge remote-tracking branch 'origin/general-devel' into general-devel

Conflicts:
	TShockAPI/GetDataHandlers.cs
This commit is contained in:
Deathmax 2011-12-12 21:29:27 +08:00
commit d1123a6d63
9 changed files with 105 additions and 12 deletions

View file

@ -116,6 +116,8 @@ namespace TShockAPI
{PacketTypes.SignNew, HandleSign},
{PacketTypes.PlayerSlot, HandlePlayerSlot},
{PacketTypes.TileGetSection, HandleGetSection},
{PacketTypes.UpdateNPCHome, UpdateNPCHome },
{PacketTypes.PlayerAddBuff, HandlePlayerBuff},
};
}
@ -158,7 +160,10 @@ namespace TShockAPI
if (stack>it.maxStack)
{
string reason = string.Format("Item Stack Hack Detected: player has {0} {1}(s) in one stack", stack,itemname);
TShock.Utils.HandleCheater(args.Player, reason);
if (TShock.Config.EnableItemStackChecks)
{
TShock.Utils.HandleCheater(args.Player, reason);
}
}
return false;
@ -253,11 +258,13 @@ namespace TShockAPI
var tile = Main.tile[realx, realy];
var newtile = tiles[x, y];
Debug.WriteLine(string.Format("SendTileSquare : {0}, {1}", tile.type, newtile.Type));
if ((tile.type == 128 && newtile.Type == 128) || (tile.type == 105 || newtile.Type == 105))
if ((tile.type == 128 && newtile.Type == 128) || (tile.type == 105 && newtile.Type == 105))
{
Console.WriteLine("SendTileSquareCalled on a 128 or 105.");
changed = true;
//Console.WriteLine("SendTileSquareCalled on a 128 or 105.");
if (TShock.Config.EnableInsecureTileFixes)
{
return false;
}
}
if (tile.type == 0x17 && newtile.Type == 0x2)
@ -409,7 +416,14 @@ namespace TShockAPI
}
if (TShock.Config.RangeChecks && ((Math.Abs(plyX - tileX) > 32) || (Math.Abs(plyY - tileY) > 32)))
{
if (!(type == 1 && ((tiletype == 0 && args.Player.TPlayer.selectedItem == 114) || (tiletype == 53 && args.Player.TPlayer.selectedItem == 266))))
if ((type == 1 && ((tiletype == 0 && args.Player.TPlayer.selectedItem == 114) || (tiletype == 127 && args.Player.TPlayer.selectedItem == 496)|| (tiletype == 53 && args.Player.TPlayer.selectedItem == 266))))
{
if (!TShock.Config.EnableRangeCheckOverrides)
{
args.Player.SendMessage("This item has been disabled by the server owner.");
return true;
}
} else
{
Log.Debug(string.Format("TilePlaced(PlyXY:{0}_{1}, TileXY:{2}_{3}, Result:{4}_{5}, Type:{6})",
plyX, plyY, tileX, tileY, Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), tiletype));
@ -430,6 +444,13 @@ namespace TShockAPI
args.Player.SendTileSquare(x, y);
return true;
}
if (tiletype == 141 && !args.Player.Group.HasPermission(Permissions.canexplosive))
{
args.Player.SendMessage("You do not have permission to place explosives.", Color.Red);
TShock.Utils.SendLogs(string.Format("{0} tried to place explosives", args.Player.Name), Color.Red);
args.Player.SendTileSquare(x, y);
return true;
}
}
if (!args.Player.Group.HasPermission(Permissions.editspawn) && !TShock.Regions.CanBuild(x, y, args.Player) && TShock.Regions.InArea(x, y))
{
@ -588,6 +609,18 @@ namespace TShockAPI
else
return TShock.Utils.HandleExplosivesUser(args.Player, TShock.Config.ExplosiveAbuseReason);
}
if (args.Player.Index != owner)//ignores projectiles whose senders aren't the same as their owners
{
TShock.Players[args.Player.Index].SendData(PacketTypes.ProjectileNew, "", ident);//update projectile on senders end so he knows it didnt get created
return true;
}
Projectile proj = new Projectile();
proj.SetDefaults(type);
if (proj.hostile)//ignores all hostile projectiles from the client they shouldn't be sending them anyways
{
TShock.Players[args.Player.Index].SendData(PacketTypes.ProjectileNew, "", ident);
return true;
}
return false;
}
@ -823,5 +856,20 @@ namespace TShockAPI
args.Player.RequestedSection = true;
return false;
}
private static bool UpdateNPCHome( GetDataHandlerArgs args )
{
if (!args.Player.Group.HasPermission(Permissions.movenpc))
{
args.Player.SendMessage("You do not have permission to relocate NPCs.", Color.Red);
return true;
}
return false;
}
private static bool HandlePlayerBuff(GetDataHandlerArgs args)
{
return !args.Player.Group.HasPermission(Permissions.ignoregriefdetection);
}
}
}