How do I prevent round from ending when timer runs out of time? I was thinking of superceding SyncRoundTimer but it looks like it also deals with freezetime, it might cause problems.
Reference:
Code:
void CBasePlayer::SyncRoundTimer()
{
float tmRemaining = 0;
BOOL bFreezePeriod = g_pGameRules->IsFreezePeriod();
if (g_pGameRules->IsMultiplayer())
{
tmRemaining = CSGameRules()->GetRoundRemainingTimeReal();
#ifdef REGAMEDLL_FIXES
// hide timer HUD because it is useless.
if (tmRemaining <= 0.0f && CSGameRules()->m_iRoundTime <= 0) {
m_iHideHUD |= HIDEHUD_TIMER;
return;
}
if (m_iHideHUD & HIDEHUD_TIMER)
{
m_iHideHUD &= ~HIDEHUD_TIMER;
MESSAGE_BEGIN(MSG_ONE, gmsgShowTimer, nullptr, pev);
MESSAGE_END();
}
#endif
}
if (tmRemaining < 0)
tmRemaining = 0;
MESSAGE_BEGIN(MSG_ONE, gmsgRoundTime, nullptr, pev);
WRITE_SHORT(int(tmRemaining));
MESSAGE_END();
if (!g_pGameRules->IsMultiplayer())
return;
if (bFreezePeriod && TheTutor && GetObserverMode() == OBS_NONE)
{
MESSAGE_BEGIN(MSG_ONE, gmsgBlinkAcct, nullptr, pev);
WRITE_BYTE(MONEY_BLINK_AMOUNT);
MESSAGE_END();
}
if (TheCareerTasks && CSGameRules()->IsCareer())
{
int remaining = 0;
bool shouldCountDown = false;
int fadeOutDelay = 0;
if (tmRemaining != 0.0f)
{
remaining = TheCareerTasks->GetTaskTime() - (gpGlobals->time - CSGameRules()->m_fRoundStartTime);
}
if (remaining < 0)
remaining = 0;
if (bFreezePeriod)
remaining = -1;
if (TheCareerTasks->GetFinishedTaskTime())
remaining = -TheCareerTasks->GetFinishedTaskTime();
if (!bFreezePeriod && !TheCareerTasks->GetFinishedTaskTime())
{
shouldCountDown = true;
}
if (!bFreezePeriod)
{
if (TheCareerTasks->GetFinishedTaskTime() || (TheCareerTasks->GetTaskTime() <= TheCareerTasks->GetRoundElapsedTime()))
{
fadeOutDelay = 3;
}
}
if (!TheCareerTasks->GetFinishedTaskTime() || TheCareerTasks->GetFinishedTaskRound() == CSGameRules()->m_iTotalRoundsPlayed)
{
MESSAGE_BEGIN(MSG_ONE, gmsgTaskTime, nullptr, pev);
WRITE_SHORT(remaining); // remaining of time, -1 the timer is disappears
WRITE_BYTE(shouldCountDown); // timer counts down
WRITE_BYTE(fadeOutDelay); // fade in time, hide HUD timer after the expiration time
MESSAGE_END();
}
}
}
Also, how do I get rid of the timer efficiently, with Orpheu? I know the way VEN does it by using HIDEHUD_TIMER, is there any other way?
__________________