More security checks

This actually looks pretty bad, not gonna lie.
This commit is contained in:
juanjp600
2016-08-28 19:54:31 -03:00
parent b51afdd0cb
commit 73fc0cf724
4 changed files with 23 additions and 6 deletions

View File

@@ -1702,7 +1702,7 @@ namespace Barotrauma
{
data = null;
if (GameMain.Server != null && type != NetworkEventType.InventoryUpdate)
if (GameMain.Server != null && (type != NetworkEventType.InventoryUpdate || (!IsUnconscious && !IsDead)))
{
Client sender = GameMain.Server.ConnectedClients.Find(c => c.Connection == message.SenderConnection);
if (sender == null || sender.Character != this)

View File

@@ -487,6 +487,10 @@ namespace Barotrauma.Items.Components
public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message, float sendingTime)
{
if (sendingTime < lastReceivedMessage) return;
if (GameMain.Server != null)
{
return;
}
lastReceivedMessage = sendingTime;

View File

@@ -1732,13 +1732,22 @@ namespace Barotrauma
{
return false;
}
Drop(sender.Character, false);
if (body != null)
{
body.TargetPosition = sender.Character.SimPosition;
body.MoveToTargetPosition();
}
}
Drop(null, false);
if (body != null)
else
{
body.ReadNetworkData(message, sendingTime);
body.MoveToTargetPosition();
//client should not tell the server where the item should drop
Drop(null, false);
if (body != null)
{
body.ReadNetworkData(message, sendingTime);
body.MoveToTargetPosition();
}
}
break;
case NetworkEventType.PhysicsBodyPosition:

View File

@@ -395,6 +395,10 @@ namespace Barotrauma
public void ReadNetworkData(NetIncomingMessage message, float sendingTime)
{
if (GameMain.Server != null)
{
return;
}
if (sendingTime < lastNetworkUpdateTime) return;
Vector2 newTargetPos = Vector2.Zero;