Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Server/mods/deathmatch/logic/CGame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2133,6 +2133,7 @@ void CGame::Packet_PlayerWasted(CPlayerWastedPacket& Packet)
pPlayer->SetHealth(0.0f);
pPlayer->SetArmor(0.0f);
pPlayer->SetPosition(Packet.m_vecPosition);
pPlayer->SetHasJetPack(false);

// Reset his vehicle action, but only if not jacking
// If jacking we wait for him to reply with VEHICLE_NOTIFY_JACK_ABORT
Expand Down
1 change: 1 addition & 0 deletions Server/mods/deathmatch/logic/net/CSimPlayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class CSimPlayer
ushort m_usLatency;
uchar m_ucSyncTimeContext;
uchar m_ucWeaponType;
bool m_bHasJetPack;

// Used in CSimVehiclePuresyncPacket
ushort m_usVehicleModel;
Expand Down
4 changes: 3 additions & 1 deletion Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ void CSimPlayerManager::UpdateSimPlayer(CPlayer* pPlayer)
pSim->m_bVehicleHasHydraulics = pVehicle ? pVehicle->GetUpgrades()->HasUpgrade(1087) : false;
pSim->m_bVehicleIsPlaneOrHeli = pVehicle ? pVehicle->GetVehicleType() == VEHICLE_PLANE || pVehicle->GetVehicleType() == VEHICLE_HELI : false;
pSim->m_sharedControllerState.Copy(pPlayer->GetPad()->GetCurrentControllerState());
pSim->m_bHasJetPack = pPlayer->HasJetPack();

if (pVehicle)
{
pSim->m_uiVehicleDamageInfoSendPhase = pVehicle->m_uiDamageInfoSendPhase;
Expand Down Expand Up @@ -239,7 +241,7 @@ bool CSimPlayerManager::HandlePlayerPureSync(const NetServerPlayerID& Socket, Ne
// Read the incoming packet data
CSimPlayerPuresyncPacket* pPacket =
new CSimPlayerPuresyncPacket(pSourceSimPlayer->m_PlayerID, pSourceSimPlayer->m_usLatency, pSourceSimPlayer->m_ucSyncTimeContext,
pSourceSimPlayer->m_ucWeaponType, pSourceSimPlayer->m_fWeaponRange, pSourceSimPlayer->m_sharedControllerState);
pSourceSimPlayer->m_ucWeaponType, pSourceSimPlayer->m_fWeaponRange, pSourceSimPlayer->m_sharedControllerState, pSourceSimPlayer->m_bHasJetPack);
if (pPacket->Read(*BitStream))
{
// Relay it to nearbyers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@
#include "CWeaponNames.h"

CSimPlayerPuresyncPacket::CSimPlayerPuresyncPacket(ElementID PlayerID, ushort PlayerLatency, uchar PlayerSyncTimeContext, uchar PlayerGotWeaponType,
float WeaponRange, CControllerState& sharedControllerState)
float WeaponRange, CControllerState& sharedControllerState, bool bHasJetPack)

: m_PlayerID(PlayerID),
m_PlayerLatency(PlayerLatency),
m_PlayerSyncTimeContext(PlayerSyncTimeContext),
m_PlayerGotWeaponType(PlayerGotWeaponType),
m_WeaponRange(WeaponRange),
m_sharedControllerState(sharedControllerState)
m_sharedControllerState(sharedControllerState),
m_bHasJetPack(bHasJetPack)
{
}

Expand Down Expand Up @@ -179,6 +180,9 @@ bool CSimPlayerPuresyncPacket::Read(NetBitStreamInterface& BitStream)
m_Cache.usTotalAmmo = 1;
}

// Enforce we use server-side jetpack state
m_Cache.flags.data.bHasJetPack = m_bHasJetPack;

// Success
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CSimPlayerPuresyncPacket : public CSimPacket
ZERO_ON_NEW

CSimPlayerPuresyncPacket(ElementID PlayerID, ushort PlayerLatency, uchar PlayerSyncTimeContext, uchar PlayerGotWeaponType, float WeaponRange,
CControllerState& sharedControllerState);
CControllerState& sharedControllerState, bool bHasJetPack);

ePacketID GetPacketID() const { return PACKET_ID_PLAYER_PURESYNC; };
unsigned long GetFlags() const { return PACKET_MEDIUM_PRIORITY | PACKET_SEQUENCED; };
Expand All @@ -56,6 +56,7 @@ class CSimPlayerPuresyncPacket : public CSimPacket
const uchar m_PlayerGotWeaponType;
const float m_WeaponRange;
CControllerState& m_sharedControllerState;
const bool m_bHasJetPack;

// Set in Read ()
struct
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ bool CPlayerPuresyncPacket::Read(NetBitStreamInterface& BitStream)

pSourcePlayer->SetInWater(flags.data.bIsInWater);
pSourcePlayer->SetOnGround(flags.data.bIsOnGround);
pSourcePlayer->SetHasJetPack(flags.data.bHasJetPack);
pSourcePlayer->SetDucked(flags.data.bIsDucked);
pSourcePlayer->SetWearingGoggles(flags.data.bWearsGoogles);
pSourcePlayer->SetChoking(flags.data.bIsChoking);
Expand Down