Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d666bd893d | |||
| ba69c79821 | |||
| 2c3122bbdb | |||
| 7d732c75ca |
@@ -2,7 +2,7 @@
|
|||||||
#define NetworkClient_h__
|
#define NetworkClient_h__
|
||||||
|
|
||||||
#include "Network/Packet.h"
|
#include "Network/Packet.h"
|
||||||
#define BUFFERSIZE 32000
|
#define BUFFERSIZE 64000
|
||||||
typedef unsigned int PlayerID;
|
typedef unsigned int PlayerID;
|
||||||
typedef unsigned int PacketID;
|
typedef unsigned int PacketID;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include <boost/asio.hpp>
|
#include <boost/asio.hpp>
|
||||||
#include "Network/Packet.h"
|
#include "Network/Packet.h"
|
||||||
#include "Network/PlayerDefinition.h"
|
#include "Network/PlayerDefinition.h"
|
||||||
#define BUFFERSIZE 32000
|
#define BUFFERSIZE 64000
|
||||||
typedef unsigned int PlayerID;
|
typedef unsigned int PlayerID;
|
||||||
typedef unsigned int PacketID;
|
typedef unsigned int PacketID;
|
||||||
|
|
||||||
|
|||||||
@@ -436,7 +436,11 @@ bool Client::OnPlayerSpawned(const Events::PlayerSpawned& e)
|
|||||||
void Client::parsePlayerDamage(Packet& packet)
|
void Client::parsePlayerDamage(Packet& packet)
|
||||||
{
|
{
|
||||||
Events::PlayerDamage e;
|
Events::PlayerDamage e;
|
||||||
e.Inflictor = EntityWrapper(m_World, m_ServerIDToClientID.at(packet.ReadPrimitive<EntityID>()));
|
PlayerID victimID = packet.ReadPrimitive<EntityID>();
|
||||||
|
if(!serverClientMapsHasEntity(victimID)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
e.Inflictor = EntityWrapper(m_World, m_ServerIDToClientID.at(victimID));
|
||||||
e.Victim = EntityWrapper(m_World, m_ServerIDToClientID.at(packet.ReadPrimitive<EntityID>()));
|
e.Victim = EntityWrapper(m_World, m_ServerIDToClientID.at(packet.ReadPrimitive<EntityID>()));
|
||||||
e.Damage = packet.ReadPrimitive<double>();
|
e.Damage = packet.ReadPrimitive<double>();
|
||||||
// Don't rebroadcast our own player damage events or we'll have an infinite loop!
|
// Don't rebroadcast our own player damage events or we'll have an infinite loop!
|
||||||
|
|||||||
@@ -335,6 +335,7 @@ void Server::disconnect(PlayerID playerID)
|
|||||||
//m_World->DeleteEntity(m_ConnectedPlayers[playerID].EntityID);
|
//m_World->DeleteEntity(m_ConnectedPlayers[playerID].EntityID);
|
||||||
m_ConnectedPlayers[playerID].TCPSocket->shutdown(boost::asio::ip::tcp::socket::shutdown_both);
|
m_ConnectedPlayers[playerID].TCPSocket->shutdown(boost::asio::ip::tcp::socket::shutdown_both);
|
||||||
m_ConnectedPlayers[playerID].TCPSocket->close();
|
m_ConnectedPlayers[playerID].TCPSocket->close();
|
||||||
|
m_World->DeleteEntity(m_ConnectedPlayers[playerID].EntityID);
|
||||||
m_ConnectedPlayers.erase(playerID);
|
m_ConnectedPlayers.erase(playerID);
|
||||||
// Send disconnect to the other players.
|
// Send disconnect to the other players.
|
||||||
}
|
}
|
||||||
@@ -476,6 +477,11 @@ void Server::parseOnInputCommand(Packet& packet)
|
|||||||
|
|
||||||
void Server::parsePlayerTransform(Packet& packet)
|
void Server::parsePlayerTransform(Packet& packet)
|
||||||
{
|
{
|
||||||
|
PlayerID playerID = GetPlayerIDFromEndpoint();
|
||||||
|
if (playerID == -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
glm::vec3 position;
|
glm::vec3 position;
|
||||||
glm::vec3 orientation;
|
glm::vec3 orientation;
|
||||||
position.x = packet.ReadPrimitive<float>();
|
position.x = packet.ReadPrimitive<float>();
|
||||||
@@ -485,7 +491,6 @@ void Server::parsePlayerTransform(Packet& packet)
|
|||||||
orientation.y = packet.ReadPrimitive<float>();
|
orientation.y = packet.ReadPrimitive<float>();
|
||||||
orientation.z = packet.ReadPrimitive<float>();
|
orientation.z = packet.ReadPrimitive<float>();
|
||||||
|
|
||||||
PlayerID playerID = GetPlayerIDFromEndpoint();
|
|
||||||
bool hasAssaultWeapon = packet.ReadPrimitive<bool>();
|
bool hasAssaultWeapon = packet.ReadPrimitive<bool>();
|
||||||
int magazineAmmo;
|
int magazineAmmo;
|
||||||
int ammo;
|
int ammo;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ bool DamageIndicatorSystem::OnPlayerDamage(Events::PlayerDamage& e)
|
|||||||
//if (e.Victim != LocalPlayer) {
|
//if (e.Victim != LocalPlayer) {
|
||||||
// return false;
|
// return false;
|
||||||
//}
|
//}
|
||||||
if (e.Victim != LocalPlayer && !e.Victim.IsChildOf(LocalPlayer)) {
|
if (e.Victim.Valid() && e.Victim != LocalPlayer && !e.Victim.IsChildOf(LocalPlayer)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ bool HealthSystem::OnInputCommand(Events::InputCommand& e)
|
|||||||
{
|
{
|
||||||
if (e.Command == "TakeDamage" && e.Value > 0 && LocalPlayer.Valid()) {
|
if (e.Command == "TakeDamage" && e.Value > 0 && LocalPlayer.Valid()) {
|
||||||
Events::PlayerDamage ev;
|
Events::PlayerDamage ev;
|
||||||
|
ev.Inflictor = LocalPlayer;
|
||||||
ev.Victim = LocalPlayer;
|
ev.Victim = LocalPlayer;
|
||||||
ev.Damage = e.Value;
|
ev.Damage = e.Value;
|
||||||
m_EventBroker->Publish(ev);
|
m_EventBroker->Publish(ev);
|
||||||
|
|||||||
Reference in New Issue
Block a user