From ab4fc25e6732355f6663d5ea4ba3ab183e858025 Mon Sep 17 00:00:00 2001 From: mittorn Date: Sun, 22 Jan 2017 09:14:57 +0000 Subject: [PATCH] Move checkpoints check --- dlls/coop.cpp | 26 ++++++++++++++++++++++++++ dlls/coop_util.h | 1 + dlls/triggers.cpp | 25 ++----------------------- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/dlls/coop.cpp b/dlls/coop.cpp index ae71acba..ef6a76ee 100644 --- a/dlls/coop.cpp +++ b/dlls/coop.cpp @@ -686,3 +686,29 @@ void UTIL_CoopShowMenu( CBasePlayer *pPlayer, const char *title, int count, cons } //CLIENT_COMMAND( pPlayer->edict(), "exec touch_default/numbers.cfg\n"); } + +bool UTIL_CoopConfirmMenu(CBaseEntity *pTrigger, CBaseEntity *pActivator, int count2, char *mapname ) +{ + if( gpGlobals->time - g_GlobalMenu.m_flTime > 30 ) + { + g_iMenu = 0; + g_GlobalMenu.m_iConfirm = 0; + } + if( g_iMenu != 1 ) + { + if( !UTIL_CoopIsBadPlayer( pActivator ) ) + g_GlobalMenu.ConfirmMenu( (CBasePlayer*)pActivator, pTrigger, mapname ); + return false; + } + if( g_GlobalMenu.m_iConfirm < count2 ) + return false; + //if( mp_coop_strongpolicy.value ) + { + // do not allow go back if there are checkpoints, but not near changelevel + if( g_checkpoints[0].time && (g_checkpoints[0].origin - VecBModelOrigin(pTrigger->pev)).Length() > 150 ) + return false; + //if( count2 < 2 ) + //return; + } + return true; +} diff --git a/dlls/coop_util.h b/dlls/coop_util.h index 7edf5bf7..9650c433 100644 --- a/dlls/coop_util.h +++ b/dlls/coop_util.h @@ -78,6 +78,7 @@ void UTIL_BecomeSpectator( CBasePlayer *pPlayer ); void UTIL_CoopCheckpointMenu( CBasePlayer *pPlayer ); void UTIL_CoopVoteMenu( CBasePlayer *pPlayer ); void UTIL_CoopShowMenu( CBasePlayer *pPlayer, const char *title, int count, const char **slot, signed char time = -1 ); +bool UTIL_CoopConfirmMenu( CBaseEntity *pTrigger, CBaseEntity *pActivator, int count2, char *mapname ); extern int g_iMenu; // Show to all spawned players: voting, etc.. diff --git a/dlls/triggers.cpp b/dlls/triggers.cpp index 74ce68fd..d9c763bd 100644 --- a/dlls/triggers.cpp +++ b/dlls/triggers.cpp @@ -1398,7 +1398,7 @@ void CChangeLevel::KeyValue( KeyValueData *pkvd ) else CBaseTrigger::KeyValue( pkvd ); } -bool CoopGetSpawnPoint( Vector *origin, Vector *angles); + /*QUAKED trigger_changelevel (0.5 0.5 0.5) ? NO_INTERMISSION When the player touches this, he gets sent to the map listed in the "map" variable. Unless the NO_INTERMISSION flag is set, the view will go to the info_intermission spot and display stats. */ @@ -1721,29 +1721,8 @@ void CChangeLevel::ChangeLevelNow( CBaseEntity *pActivator ) // return; if( m_fIsBack ) - { - if( gpGlobals->time - g_GlobalMenu.m_flTime > 30 ) - { - g_iMenu = 0; - g_GlobalMenu.m_iConfirm = 0; - } - if( g_iMenu != 1 ) - { - if( !UTIL_CoopIsBadPlayer( pActivator ) ) - g_GlobalMenu.ConfirmMenu( (CBasePlayer*)pActivator, this, m_szMapName ); + if( !UTIL_CoopConfirmMenu( this, pActivator, count2, m_szMapName ) ) return; - } - if( g_GlobalMenu.m_iConfirm < count2 ) - return; - //if( mp_coop_strongpolicy.value ) - /*{ - // do not allow go back if there are checkpoints, but not near changelevel - if( g_checkpoints[0].time && (g_checkpoints[0].origin - VecBModelOrigin(pev)).Length() > 150 ) - return; - if( count2 < 2 ) - return; - }*/ - } } if( m_fSpawnSaved )