コード例 #1
0
ファイル: mom_triggers.cpp プロジェクト: xDShot/game
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();
}
コード例 #2
0
//-----------------------------------------------------------------------------
// Purpose: Local player on the server or client
//-----------------------------------------------------------------------------
CBasePlayer *GetLocalPlayer( void )
{
#if defined( CLIENT_DLL)
	return C_BasePlayer::GetLocalPlayer();
#else
	return UTIL_GetListenServerHost();
#endif
}
コード例 #3
0
//-----------------------------------------------------------------------------
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;
}
コード例 #4
0
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 );
}
コード例 #5
0
//-----------------------------------------------------------------------------
// 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();
}
コード例 #6
0
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();
}
コード例 #7
0
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);
            }
        }
    }
}
コード例 #8
0
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();
    }
}