From 2c3122bbdb62520b3b269ff0570469e2fc175f8a Mon Sep 17 00:00:00 2001 From: Jocke Date: Fri, 12 Feb 2016 08:39:20 +0100 Subject: [PATCH] increased Network buffer size, fixed 2 crashes and re-added the ability to kill oneself with the use of a key bound to TakeDamage,Value. --- include/Engine/Network/NetworkClient.h | 2 +- include/Engine/Network/NetworkServer.h | 2 +- src/Engine/Network/Client.cpp | 6 +++++- src/Game/Systems/DamageIndicatorSystem.cpp | 2 +- src/Game/Systems/HealthSystem.cpp | 1 + 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/Engine/Network/NetworkClient.h b/include/Engine/Network/NetworkClient.h index 4c623209..d0339d84 100644 --- a/include/Engine/Network/NetworkClient.h +++ b/include/Engine/Network/NetworkClient.h @@ -2,7 +2,7 @@ #define NetworkClient_h__ #include "Network/Packet.h" -#define BUFFERSIZE 32000 +#define BUFFERSIZE 64000 typedef unsigned int PlayerID; typedef unsigned int PacketID; diff --git a/include/Engine/Network/NetworkServer.h b/include/Engine/Network/NetworkServer.h index d6406eab..ccec82cc 100644 --- a/include/Engine/Network/NetworkServer.h +++ b/include/Engine/Network/NetworkServer.h @@ -3,7 +3,7 @@ #include #include "Network/Packet.h" #include "Network/PlayerDefinition.h" -#define BUFFERSIZE 32000 +#define BUFFERSIZE 64000 typedef unsigned int PlayerID; typedef unsigned int PacketID; diff --git a/src/Engine/Network/Client.cpp b/src/Engine/Network/Client.cpp index 43ad8dfb..3406535a 100644 --- a/src/Engine/Network/Client.cpp +++ b/src/Engine/Network/Client.cpp @@ -436,7 +436,11 @@ bool Client::OnPlayerSpawned(const Events::PlayerSpawned& e) void Client::parsePlayerDamage(Packet& packet) { Events::PlayerDamage e; - e.Inflictor = EntityWrapper(m_World, m_ServerIDToClientID.at(packet.ReadPrimitive())); + PlayerID victimID = packet.ReadPrimitive(); + if(serverClientMapsHasEntity(victimID)){ + return; + } + e.Inflictor = EntityWrapper(m_World, m_ServerIDToClientID.at(victimID)); e.Victim = EntityWrapper(m_World, m_ServerIDToClientID.at(packet.ReadPrimitive())); e.Damage = packet.ReadPrimitive(); // Don't rebroadcast our own player damage events or we'll have an infinite loop! diff --git a/src/Game/Systems/DamageIndicatorSystem.cpp b/src/Game/Systems/DamageIndicatorSystem.cpp index 09db268c..235eced0 100644 --- a/src/Game/Systems/DamageIndicatorSystem.cpp +++ b/src/Game/Systems/DamageIndicatorSystem.cpp @@ -21,7 +21,7 @@ bool DamageIndicatorSystem::OnPlayerDamage(Events::PlayerDamage& e) //if (e.Victim != LocalPlayer) { // return false; //} - if (e.Victim != LocalPlayer && !e.Victim.IsChildOf(LocalPlayer)) { + if (e.Victim.Valid() && e.Victim != LocalPlayer && !e.Victim.IsChildOf(LocalPlayer)) { return false; } diff --git a/src/Game/Systems/HealthSystem.cpp b/src/Game/Systems/HealthSystem.cpp index b21c1352..ee8d8065 100644 --- a/src/Game/Systems/HealthSystem.cpp +++ b/src/Game/Systems/HealthSystem.cpp @@ -38,6 +38,7 @@ bool HealthSystem::OnInputCommand(Events::InputCommand& e) { if (e.Command == "TakeDamage" && e.Value > 0 && LocalPlayer.Valid()) { Events::PlayerDamage ev; + ev.Inflictor = LocalPlayer; ev.Victim = LocalPlayer; ev.Damage = e.Value; m_EventBroker->Publish(ev);