本文整理汇总了C++中CBasePlayer::AddFlag方法的典型用法代码示例。如果您正苦于以下问题:C++ CBasePlayer::AddFlag方法的具体用法?C++ CBasePlayer::AddFlag怎么用?C++ CBasePlayer::AddFlag使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBasePlayer
的用法示例。
在下文中一共展示了CBasePlayer::AddFlag方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ExitVehicle
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CPropVehicleManhack::ExitVehicle( int nRole )
{
CBasePlayer *pPlayer = m_hPlayer;
if ( !pPlayer )
return;
m_hPlayer = NULL;
ResetUseKey( pPlayer );
//We have to snap the eye angles because otherwise the player will look into the same direction that the manhack just did
Vector vehicleEyeOrigin;
QAngle vehicleEyeAngles;
GetAttachment( "vehicle_driver_eyes", vehicleEyeOrigin, vehicleEyeAngles );
vehicleEyeAngles.x = 0;
vehicleEyeAngles.y = 0;
//pPlayer->SetAbsAngles( vehicleEyeAngles );
//pPlayer->SnapEyeAngles( vehicleEyeAngles );
pPlayer->SetAbsAngles(GetAbsAngles());
pPlayer->SnapEyeAngles(GetAbsAngles());
pPlayer->SetAbsOrigin(GetAbsOrigin());
if (m_bDriverDucked)
{
pPlayer->m_nButtons |= IN_DUCK;
pPlayer->AddFlag( FL_DUCKING );
pPlayer->m_Local.m_bDucked = true;
pPlayer->m_Local.m_bDucking = true;
pPlayer->m_Local.m_flDucktime = 0.0f;
pPlayer->SetViewOffset( VEC_DUCK_VIEW );
pPlayer->SetCollisionBounds( VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX );
}
DevMsg("Yes, this did get updated\n");
CNPC_Manhack *pManhack = dynamic_cast<CNPC_Manhack*>((CBaseEntity*)m_hManhack);
if (pManhack!=NULL)
{
pManhack->SetControllable(false);
//pManhack->SetRenderMode(kRenderNormal);
pManhack->RemoveEffects( EF_NODRAW );
pManhack->ShowRedGlow(true);
}
}
示例2: DoTeleport
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void CPointTeleport::DoTeleport( inputdata_t &inputdata, const Vector &vecOrigin, const QAngle &angRotation, bool bOverrideTarget )
{
// Attempt to find the entity in question
CBaseEntity *pTarget;
if( bOverrideTarget )
{
// Use the inputdata to find the entity that the designer supplied in the parameter override
pTarget = gEntList.FindEntityByName( NULL, inputdata.value.String(), this, inputdata.pActivator, inputdata.pCaller );
}
else
{
// Default behavior: Just find the entity that I am hardwired in Hammer to teleport.
pTarget = gEntList.FindEntityByName( NULL, m_target, this, inputdata.pActivator, inputdata.pCaller );
}
if ( pTarget == NULL )
return;
// If teleport object is in a movement hierarchy, remove it first
if ( EntityMayTeleport( pTarget ) == false )
{
Warning("ERROR: (%s) can't teleport object (%s) as it has a parent (%s)!\n",GetDebugName(),pTarget->GetDebugName(),pTarget->GetMoveParent()->GetDebugName());
return;
}
// in episodic, we have a special spawn flag that forces Gordon into a duck
#ifdef HL2_EPISODIC
if ( (m_spawnflags & SF_TELEPORT_INTO_DUCK) && pTarget->IsPlayer() )
{
CBasePlayer *pPlayer = ToBasePlayer( pTarget );
if ( pPlayer != NULL )
{
pPlayer->m_nButtons |= IN_DUCK;
pPlayer->AddFlag( FL_DUCKING );
pPlayer->m_Local.m_bDucked = true;
pPlayer->m_Local.m_bDucking = true;
pPlayer->m_Local.m_nDuckTimeMsecs = 0;
pPlayer->SetViewOffset( VEC_DUCK_VIEW );
pPlayer->SetCollisionBounds( VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX );
}
}
#endif
pTarget->Teleport( &vecOrigin, &angRotation, NULL );
}
示例3: PullPlayersInRange
//-----------------------------------------------------------------------------
// Purpose: Causes players within the radius to be sucked in
//-----------------------------------------------------------------------------
void CGravityVortexController::PullPlayersInRange( void )
{
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
Vector vecForce = GetAbsOrigin() - pPlayer->WorldSpaceCenter();
float dist = VectorNormalize( vecForce );
// FIXME: Need a more deterministic method here
if ( dist < 128.0f )
{
// Kill the player (with falling death sound and effects)
CTakeDamageInfo deathInfo( this, this, GetAbsOrigin(), GetAbsOrigin(), 200, DMG_FALL );
pPlayer->TakeDamage( deathInfo );
if ( pPlayer->IsAlive() == false )
{
color32 black = { 0, 0, 0, 255 };
UTIL_ScreenFade( pPlayer, black, 0.1f, 0.0f, (FFADE_OUT|FFADE_STAYOUT) );
return;
}
}
// Must be within the radius
if ( dist > m_flRadius )
return;
float mass = pPlayer->VPhysicsGetObject()->GetMass();
float playerForce = m_flStrength * 0.05f;
// Find the pull force
// NOTE: We might want to make this non-linear to give more of a "grace distance"
vecForce *= ( 1.0f - ( dist / m_flRadius ) ) * playerForce * mass;
vecForce[2] *= 0.025f;
pPlayer->SetBaseVelocity( vecForce );
pPlayer->AddFlag( FL_BASEVELOCITY );
// Make sure the player moves
if ( vecForce.z > 0 && ( pPlayer->GetFlags() & FL_ONGROUND) )
{
pPlayer->SetGroundEntity( NULL );
}
}
示例4:
edict_t *CPluginBotManager::CreateBot( const char *botname )
{
edict_t *pEdict = engine->CreateFakeClient( botname );
if (!pEdict)
{
Msg( "Failed to create Bot.\n");
return NULL;
}
// Allocate a player entity for the bot, and call spawn
CBasePlayer *pPlayer = ((CBasePlayer*)CBaseEntity::Instance( pEdict ));
pPlayer->ClearFlags();
pPlayer->AddFlag( FL_CLIENT | FL_FAKECLIENT );
pPlayer->ChangeTeam( TEAM_UNASSIGNED );
pPlayer->AddEFlags( EFL_PLUGIN_BASED_BOT ); // Mark it as a plugin based bot
pPlayer->RemoveAllItems( true );
pPlayer->Spawn();
return pEdict;
}
示例5:
void CHL2MPRules::GoToIntermission( void )
{
#ifndef CLIENT_DLL
if ( g_fGameOver )
return;
g_fGameOver = true;
m_flIntermissionEndTime = gpGlobals->curtime + mp_chattime.GetInt();
for ( int i = 0; i < MAX_PLAYERS; i++ )
{
CBasePlayer *pPlayer = UTIL_PlayerByIndex( i );
if ( !pPlayer )
continue;
pPlayer->ShowViewPortPanel( PANEL_SCOREBOARD );
pPlayer->AddFlag( FL_FROZEN );
}
#endif
}
示例6: Think
//------------------------------------------------------------------------------
// Purpose: Samples the player's inputs and fires outputs based on what buttons
// are currently held down.
//------------------------------------------------------------------------------
void CGameUI::Think( void )
{
CBasePlayer *pPlayer = m_player;
// If player is gone, stop thinking
if (pPlayer == NULL)
{
SetNextThink( TICK_NEVER_THINK );
return;
}
// If we're forcing an update, state with a clean button state
if ( m_bForceUpdate )
{
m_nLastButtonState = pPlayer->m_nButtons;
}
// ------------------------------------------------
// Check that toucher is facing the UI within
// the field of view tolerance. If not disconnect
// ------------------------------------------------
if (m_flFieldOfView > -1)
{
Vector vPlayerFacing;
pPlayer->EyeVectors( &vPlayerFacing );
Vector vPlayerToUI = GetAbsOrigin() - pPlayer->WorldSpaceCenter();
VectorNormalize(vPlayerToUI);
float flDotPr = DotProduct(vPlayerFacing,vPlayerToUI);
if (flDotPr < m_flFieldOfView)
{
Deactivate( pPlayer );
return;
}
}
pPlayer->AddFlag( FL_ONTRAIN );
SetNextThink( gpGlobals->curtime );
// Deactivate if they jump or press +use.
// FIXME: prevent the use from going through in player.cpp
if ((( pPlayer->m_afButtonPressed & IN_USE ) && ( m_spawnflags & SF_GAMEUI_USE_DEACTIVATES )) ||
(( pPlayer->m_afButtonPressed & IN_JUMP ) && ( m_spawnflags & SF_GAMEUI_JUMP_DEACTIVATES )))
{
Deactivate( pPlayer );
return;
}
// Determine what's different
int nButtonsChanged = ( pPlayer->m_nButtons ^ m_nLastButtonState );
//
// Handle all our possible input triggers
//
if ( nButtonsChanged & IN_MOVERIGHT )
{
if ( m_nLastButtonState & IN_MOVERIGHT )
{
m_unpressedMoveRight.FireOutput( pPlayer, this, 0 );
}
else
{
m_pressedMoveRight.FireOutput( pPlayer, this, 0 );
}
}
if ( nButtonsChanged & IN_MOVELEFT )
{
if ( m_nLastButtonState & IN_MOVELEFT )
{
m_unpressedMoveLeft.FireOutput( pPlayer, this, 0 );
}
else
{
m_pressedMoveLeft.FireOutput( pPlayer, this, 0 );
}
}
if ( nButtonsChanged & IN_FORWARD )
{
if ( m_nLastButtonState & IN_FORWARD )
{
m_unpressedForward.FireOutput( pPlayer, this, 0 );
}
else
{
m_pressedForward.FireOutput( pPlayer, this, 0 );
}
}
if ( nButtonsChanged & IN_BACK )
{
if ( m_nLastButtonState & IN_BACK )
{
m_unpressedBack.FireOutput( pPlayer, this, 0 );
//.........这里部分代码省略.........