void CTriggerLimitMovement::Think() { CMomentumPlayer *pPlayer = ToCMOMPlayer(UTIL_GetListenServerHost()); if (pPlayer && IsTouching(pPlayer)) { if (HasSpawnFlags(LIMIT_BHOP)) { pPlayer->DisableButtons(IN_JUMP); // if player in air if (pPlayer->GetGroundEntity() != nullptr) { // only start timer if we havent already started if (!m_BhopTimer.HasStarted()) m_BhopTimer.Start(FL_BHOP_TIMER); // when finished if (m_BhopTimer.IsElapsed()) { pPlayer->EnableButtons(IN_JUMP); m_BhopTimer.Reset(); } } } } // figure out if timer elapsed or not if (m_BhopTimer.GetRemainingTime() <= 0) m_BhopTimer.Invalidate(); // DevLog("Bhop Timer Remaining Time:%f\n", m_BhopTimer.GetRemainingTime()); // HACKHACK - this prevents think from running too fast, breaking the timer // and preventing the player from jumping until the timer runs out // Thinking every 0.25 seconds seems to feel good, but we can adjust this later SetNextThink(gpGlobals->curtime + 0.25); BaseClass::Think(); }
//----------------------------------------------------------------------------- // Purpose: Local player on the server or client //----------------------------------------------------------------------------- CBasePlayer *GetLocalPlayer( void ) { #if defined( CLIENT_DLL) return C_BasePlayer::GetLocalPlayer(); #else return UTIL_GetListenServerHost(); #endif }
//----------------------------------------------------------------------------- bool CASW_Weapon::IsCarriedByLocalPlayer() { if ( gpGlobals->maxClients <= 1 && !engine->IsDedicatedServer() ) { CASW_Marine *pMarine = dynamic_cast<CASW_Marine*>( GetOwner() ); return ( pMarine && pMarine->IsInhabited() && pMarine->GetCommander() == UTIL_GetListenServerHost() ); } return false; }
void CServerTools::MoveEngineViewTo( const Vector &vPos, const QAngle &vAngles ) { CBasePlayer *pPlayer = UTIL_GetListenServerHost(); if ( !pPlayer ) return; extern void EnableNoClip( CBasePlayer *pPlayer ); EnableNoClip( pPlayer ); Vector zOffset = pPlayer->EyePosition() - pPlayer->GetAbsOrigin(); pPlayer->SetAbsOrigin( vPos - zOffset ); pPlayer->SnapEyeAngles( vAngles ); }
//----------------------------------------------------------------------------- // Purpose: Convenience function so we don't have to make this check all over //----------------------------------------------------------------------------- static CBasePlayer * UTIL_GetLocalPlayerOrListenServerHost( void ) { if ( gpGlobals->maxClients > 1 ) { if ( engine->IsDedicatedServer() ) { return NULL; } return UTIL_GetListenServerHost(); } return UTIL_GetLocalPlayer(); }
void CEnvSoundscape::DrawDebugGeometryOverlays( void ) { if ( m_debugOverlays & (OVERLAY_BBOX_BIT|OVERLAY_PIVOT_BIT|OVERLAY_ABSBOX_BIT) ) { CBasePlayer *pPlayer = UTIL_GetListenServerHost(); if ( pPlayer ) { audioparams_t &audio = pPlayer->GetAudioParams(); if ( audio.entIndex != entindex() ) { CBaseEntity *pEnt = pPlayer->GetSoundscapeListener(); if ( pEnt ) { NDebugOverlay::Line(GetAbsOrigin(), pEnt->WorldSpaceCenter(), 255, 0, 255, false, 0 ); } } } } BaseClass::DrawDebugGeometryOverlays(); }
void CASW_Intro_Control::CheckReconnect() { // reconnect to the last server we were on (used when we're watching the outro as a singleplayer map after a multiplayer game) CReliableBroadcastRecipientFilter users; users.MakeReliable(); UserMessageBegin( users, "ASWReconnectAfterOutro" ); MessageEnd(); if (!engine->IsDedicatedServer() && ASWGameRules()) { // listen server goes back to the default mission if ( gpGlobals->maxClients > 1 ) { CBasePlayer *pPlayer = UTIL_GetListenServerHost(); if (pPlayer) { //engine->ChangeLevel(asw_default_mission.GetString(), NULL); } } } }
void CASW_Intro_Control::InputShowCainMail( inputdata_t &inputdata ) { // listen server goes back to the default mission if ( !engine->IsDedicatedServer() && ASWGameRules() && gpGlobals->maxClients > 1 ) { CBasePlayer *pPlayer = UTIL_GetListenServerHost(); if (pPlayer) { CSingleUserRecipientFilter filter(pPlayer); filter.MakeReliable(); UserMessageBegin( filter, "LaunchCainMail" ); MessageEnd(); } } else { CReliableBroadcastRecipientFilter filter; UserMessageBegin( filter, "LaunchCainMail" ); MessageEnd(); } }