diff --git a/Barotrauma/BarotraumaClient/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs b/Barotrauma/BarotraumaClient/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs index a66c0bf2b..2ea912a2f 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs @@ -132,21 +132,21 @@ namespace Barotrauma.Networking UInt16 firstEventID = msg.ReadUInt16(); int eventCount = msg.ReadByte(); - + for (int i = 0; i < eventCount; i++) { - UInt16 thisEventID = (UInt16)(firstEventID + (UInt16)i); + UInt16 thisEventID = (UInt16)(firstEventID + (UInt16)i); UInt16 entityID = msg.ReadUInt16(); - if (entityID == 0 && thisEventID == (UInt16)(lastReceivedID + 1)) + if (entityID == 0) { msg.ReadPadBits(); - lastReceivedID++; + if (thisEventID == (UInt16)(lastReceivedID + 1)) lastReceivedID++; continue; } byte msgLength = msg.ReadByte(); - + IServerSerializable entity = Entity.FindEntityByID(entityID) as IServerSerializable; entities.Add(entity); diff --git a/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/NetEntityEventManager.cs b/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/NetEntityEventManager.cs index 93d25b13a..fad368b6e 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/NetEntityEventManager.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/NetEntityEventManager.cs @@ -45,7 +45,12 @@ namespace Barotrauma.Networking //no more room in this packet break; } - + + if (tempEventBuffer.LengthBytes > 255) + { + DebugConsole.ThrowError("Too much data in network event for entity \"" + e.Entity.ToString() + "\" (" + tempEventBuffer.LengthBytes + " bytes"); + } + //the ID has been taken by another entity (the original entity has been removed) -> write an empty event if (Entity.FindEntityByID(e.Entity.ID) != e.Entity) { diff --git a/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs b/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs index 7dad4627d..5c0986cd4 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs @@ -326,7 +326,7 @@ namespace Barotrauma.Networking if (entityID == 0) { msg.ReadPadBits(); - sender.LastSentEntityEventID++; + if (thisEventID == (UInt16)(sender.LastSentEntityEventID + 1)) sender.LastSentEntityEventID++; continue; }