diff --git a/r5dev/game/server/player.cpp b/r5dev/game/server/player.cpp index 9032bb4c..6ebf10f6 100644 --- a/r5dev/game/server/player.cpp +++ b/r5dev/game/server/player.cpp @@ -60,37 +60,29 @@ QAngle* CPlayer::EyeAngles(QAngle* pAngles) //------------------------------------------------------------------------------ inline void CPlayer::SetTimeBase(float flTimeBase) { - float flTime = float(TIME_TO_TICKS(flTimeBase)); + const int nRemainderTime = Max(TIME_TO_TICKS(flTimeBase), 0); + SetLastUCmdSimulationRemainderTime(nRemainderTime); - if (flTime < 0.0f) - flTime = 0.0f; - - SetLastUCmdSimulationRemainderTime(flTime); - - float flSimulationTime = flTimeBase - m_lastUCmdSimulationRemainderTime * TICK_INTERVAL; - if (flSimulationTime >= 0.0f) - { - flTime = flSimulationTime; - } - - SetTotalExtraClientCmdTimeAttempted(flTime); + const float flAttemptedTime = Max(flTimeBase - (m_lastUCmdSimulationRemainderTime * TICK_INTERVAL), 0.0f); + SetTotalExtraClientCmdTimeAttempted(flAttemptedTime); } //------------------------------------------------------------------------------ // Purpose: sets the last user cmd simulation remainder time -// Input : flRemainderTime - +// Input : nRemainderTime - //------------------------------------------------------------------------------ -void CPlayer::SetLastUCmdSimulationRemainderTime(float flRemainderTime) +void CPlayer::SetLastUCmdSimulationRemainderTime(int nRemainderTime) { - if (m_lastUCmdSimulationRemainderTime != flRemainderTime) + if (m_lastUCmdSimulationRemainderTime != nRemainderTime) { - edict_t nEdict = NetworkProp()->GetEdict(); + const edict_t nEdict = NetworkProp()->GetEdict(); + if (nEdict != FL_EDICT_INVALID) { _InterlockedOr16((SHORT*)(*g_pGlobals)->m_pEdicts + nEdict + 32, 0x200u); } - m_lastUCmdSimulationRemainderTime = flRemainderTime; + m_lastUCmdSimulationRemainderTime = nRemainderTime; } } @@ -102,7 +94,8 @@ void CPlayer::SetTotalExtraClientCmdTimeAttempted(float flAttemptedTime) { if (m_totalExtraClientCmdTimeAttempted != flAttemptedTime) { - edict_t nEdict = NetworkProp()->GetEdict(); + const edict_t nEdict = NetworkProp()->GetEdict(); + if (nEdict != FL_EDICT_INVALID) { _InterlockedOr16((SHORT*)(*g_pGlobals)->m_pEdicts + nEdict + 32, 0x200u); diff --git a/r5dev/game/server/player.h b/r5dev/game/server/player.h index f201f274..a71752ea 100644 --- a/r5dev/game/server/player.h +++ b/r5dev/game/server/player.h @@ -247,14 +247,12 @@ public: QAngle* EyeAngles(QAngle* pAngles); void SetTimeBase(float flTimeBase); - void SetLastUCmdSimulationRemainderTime(float flRemainderTime); + void SetLastUCmdSimulationRemainderTime(int nRemainderTime); void SetTotalExtraClientCmdTimeAttempted(float flAttemptedTime); void ProcessUserCmds(CUserCmd* cmds, int numCmds, int totalCmds, int droppedPackets, bool paused); - void ClampUnlag(CUserCmd* cmd); - void PlayerRunCommand(CUserCmd* pUserCmd, IMoveHelper* pMover); void SetLastUserCommand(CUserCmd* pUserCmd); @@ -576,7 +574,7 @@ private: float m_totalFrameTime; float m_joinFrameTime; int m_lastUCmdSimulationTicks; - float m_lastUCmdSimulationRemainderTime; + int m_lastUCmdSimulationRemainderTime; // Originally float??? float m_totalExtraClientCmdTimeAttempted; int m_hPlayerViewEntity; bool m_atLeastOneCommandRunThisServerFrame;