本文整理汇总了C++中CClientPlayer::IsLocalPlayer方法的典型用法代码示例。如果您正苦于以下问题:C++ CClientPlayer::IsLocalPlayer方法的具体用法?C++ CClientPlayer::IsLocalPlayer怎么用?C++ CClientPlayer::IsLocalPlayer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CClientPlayer
的用法示例。
在下文中一共展示了CClientPlayer::IsLocalPlayer方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetCameraTarget
void CCameraRPCs::SetCameraTarget ( NetBitStreamInterface& bitStream )
{
ElementID targetID;
if ( bitStream.Read ( targetID ) )
{
CClientEntity * pEntity = CElementIDs::GetElement ( targetID );
if ( pEntity )
{
// Save our current target for later
CClientEntity * pPreviousTarget = m_pCamera->GetTargetEntity ();
switch ( pEntity->GetType () )
{
case CCLIENTPLAYER:
{
CClientPlayer* pPlayer = static_cast < CClientPlayer* > ( pEntity );
if ( pPlayer->IsLocalPlayer () )
{
// Return the focus to the local player
m_pCamera->SetFocusToLocalPlayer ();
}
else
{
// Put the focus on that player
m_pCamera->SetFocus ( pPlayer, MODE_BEHINDCAR, false );
}
break;
}
default:
return;
}
}
}
}
示例2: DoPulse
void CClientPlayerManager::DoPulse ( void )
{
unsigned long ulCurrentTime = CClientTime::GetTime ();
CClientPlayer * pPlayer = NULL;
vector < CClientPlayer* > ::const_iterator iter = m_Players.begin ();
for ( ; iter != m_Players.end (); ++iter )
{
pPlayer = *iter;
if ( !pPlayer->IsLocalPlayer () )
{
// Pulse voice data if voice is enabled
if ( g_pClientGame->GetVoiceRecorder()->IsEnabled() && pPlayer->GetVoice() )
pPlayer->GetVoice()->DoPulse();
// Flag him with connection error if its been too long since last puresync and force his position
unsigned long ulLastPuresyncTime = pPlayer->GetLastPuresyncTime ();
bool bHasConnectionTrouble = ( ulLastPuresyncTime != 0 && ulCurrentTime >= ulLastPuresyncTime + REMOTE_PLAYER_CONNECTION_TROUBLE_TIME );
if ( bHasConnectionTrouble && !g_pClientGame->IsDownloadingBigPacket () && !pPlayer->IsDeadOnNetwork () )
{
pPlayer->SetHasConnectionTrouble ( true );
// Reset his controller so he doesn't get stuck shooting or something
CControllerState State;
memset ( &State, 0, sizeof ( CControllerState ) );
pPlayer->SetControllerState ( State );
// Grab his vehicle if any and force the position to where he was last sync
CClientVehicle* pVehicle = pPlayer->GetOccupiedVehicle ();
if ( pVehicle )
{
// Is he driving the vehicle?
if ( pPlayer->GetOccupiedVehicleSeat () == 0 )
{
// Force his position to where he was last sync
pVehicle->SetPosition ( pPlayer->GetLastPuresyncPosition () );
pVehicle->SetMoveSpeed ( CVector ( 0, 0, 0 ) );
pVehicle->SetTurnSpeed ( CVector ( 0, 0, 0 ) );
pPlayer->ResetInterpolation ();
}
}
else
{
// Force his position to where he was last sync
pPlayer->SetPosition ( pPlayer->GetLastPuresyncPosition () );
pPlayer->ResetInterpolation ();
pPlayer->SetMoveSpeed ( CVector ( 0, 0, 0 ) );
pPlayer->ResetInterpolation ();
}
}
else
{
pPlayer->SetHasConnectionTrouble ( false );
}
}
}
}
示例3: DrawFromAim
//.........这里部分代码省略.........
flags.bCheckDummies = true;
flags.bSeeThroughStuff = true;
flags.bIgnoreSomeObjectsForCamera = false;
flags.bShootThroughStuff = true;
g_pGame->GetWorld()->ProcessLineOfSight(&vecStart, &vecTarget, &pColPoint, &pEntity, flags);
if (pColPoint)
pColPoint->Destroy();
// Un-ignore the local player
pLocalPlayer->WorldIgnore(false);
// Did we find an entity?
if (pEntity)
{
// Grab the CClientEntity belonging to this game_sa entity
CClientEntity* pClientEntity = reinterpret_cast<CClientEntity*>(pEntity->GetStoredPointer());
if (pClientEntity)
{
// Is it a vehicle? Is it a ped?
eClientEntityType EntityType = pClientEntity->GetType();
if (EntityType == CCLIENTVEHICLE)
{
CClientVehicle* pClientVehicle = static_cast<CClientVehicle*>(pClientEntity);
// Set the current time as the last draw time for all players inside
CClientPed* pPed;
int i;
for (i = 0; i < 8; i++)
{
// Grab this seat's occupant and set its last nametag show time to now
pPed = pClientVehicle->GetOccupant(i);
if (pPed && pPed->GetType() == CCLIENTPLAYER)
{
static_cast<CClientPlayer*>(pPed)->SetLastNametagShow(ulCurrentTime);
}
}
}
else if (EntityType == CCLIENTPLAYER)
{
// Grab the player this entity is
CClientPlayer* pClientPlayer = static_cast<CClientPlayer*>(pClientEntity);
if (pClientPlayer)
{
// Set now as the last time we had the cursor above him
pClientPlayer->SetLastNametagShow(ulCurrentTime);
}
}
}
}
// Grab the local player vehicle
CClientVehicle* pLocalVehicle = pLocalPlayer->GetOccupiedVehicle();
// Draw the nametags we need to
CClientPlayer* pPlayer;
CClientStreamElement* pElement;
list<CClientStreamElement*>::const_iterator iter = m_pPlayerStreamer->ActiveElementsBegin();
for (; iter != m_pPlayerStreamer->ActiveElementsEnd(); ++iter)
{
pElement = *iter;
if (!pElement->IsStreamedIn())
continue;
if (pElement->GetType() != CCLIENTPLAYER)
continue;
pPlayer = static_cast<CClientPlayer*>(pElement);
if (pPlayer->IsLocalPlayer())
continue;
// Is he in the same vehicle as the local player?
if (pLocalVehicle && pPlayer->GetOccupiedVehicle() == pLocalVehicle)
{
pPlayer->SetLastNametagShow(ulCurrentTime);
}
// Can we show this player's nametag
unsigned long ulLastNametagShow = pPlayer->GetLastNametagShow();
if (ulLastNametagShow != 0 && ulCurrentTime <= ulLastNametagShow + NAMETAG_END_FADE_TIME)
{
unsigned long ulLastNametagShow = pPlayer->GetLastNametagShow();
// Calculate the alpha modifier
float fAlphaTimeModifier;
if (ulCurrentTime < ulLastNametagShow + NAMETAG_BEGIN_FADE_TIME)
{
fAlphaTimeModifier = 1.0f;
}
else
{
fAlphaTimeModifier = 1.0f - (ulCurrentTime - ulLastNametagShow - NAMETAG_BEGIN_FADE_TIME) / 1000.0f;
}
// Calculate the alpha for the nametag
unsigned char ucAlpha = static_cast<unsigned char>(180.0f * fAlphaTimeModifier);
// Draw it
DrawTagForPlayer(pPlayer, ucAlpha);
}
}
}
}
}
示例4: DrawDefault
//.........这里部分代码省略.........
break;
}
}
}
}
// Grab the local player vehicle
CClientVehicle* pLocalVehicle = pLocalPlayer->GetOccupiedVehicle();
CVehicle* pLocalGameVehicle = NULL;
if (pLocalVehicle)
pLocalGameVehicle = pLocalVehicle->GetGameVehicle();
CMatrix CameraMatrix;
g_pGame->GetCamera()->GetMatrix(&CameraMatrix);
// Remove collision from our local vehicle (if we have one)
if (pLocalVehicle)
pLocalVehicle->WorldIgnore(true);
// Draw the nametags we need to
CVector vecPlayerPosition;
CClientVehicle* pPlayerVehicle = NULL;
float fDistanceExp;
bool bCollision;
CColPoint* pColPoint = NULL;
CEntity* pGameEntity = NULL;
CClientEntity* pEntity = NULL;
CClientPlayer* pPlayer;
CClientStreamElement* pElement;
list<CClientStreamElement*>::const_iterator iter = m_pPlayerStreamer->ActiveElementsBegin();
for (; iter != m_pPlayerStreamer->ActiveElementsEnd(); ++iter)
{
pElement = *iter;
if (!pElement->IsStreamedIn())
continue;
if (pElement->GetType() != CCLIENTPLAYER)
continue;
pPlayer = static_cast<CClientPlayer*>(pElement);
if (pPlayer->IsLocalPlayer())
continue;
// Get the distance from the camera
pPlayer->GetPosition(vecPlayerPosition);
fDistanceExp = pPlayer->GetExpDistance();
pPlayerVehicle = pPlayer->GetOccupiedVehicle();
// Is he in the same vehicle as the local player?
if ((pSniperTargetedPlayer == pPlayer) || (pSniperTargetedVehicle && pSniperTargetedVehicle == pPlayerVehicle) ||
(pLocalVehicle && pLocalVehicle == pPlayerVehicle) || (fDistanceExp < DEFAULT_VIEW_RANGE_EXP && pPlayer->IsOnScreen()))
{
SLineOfSightFlags flags;
flags.bCheckBuildings = true;
flags.bCheckVehicles = true;
flags.bCheckPeds = false;
flags.bCheckObjects = true;
bCollision = g_pCore->GetGame()->GetWorld()->ProcessLineOfSight(&CameraMatrix.vPos, &vecPlayerPosition, &pColPoint, &pGameEntity, flags);
if (!bCollision || (pGameEntity && pPlayerVehicle && pGameEntity == pPlayerVehicle->GetGameEntity()))
{
pPlayer->SetNametagDistance(sqrt(fDistanceExp));
playerTags.push_front(pPlayer);
}
// Destroy the colpoint
if (pColPoint)
pColPoint->Destroy();
}
}
// Readd collision from our local vehicle (if we have one)
if (pLocalVehicle)
pLocalVehicle->WorldIgnore(false);
// Draw each player's nametag
float fAlphaModifier;
unsigned char ucAlpha;
float fDistance;
list<CClientPlayer*>::iterator iterTags = playerTags.begin();
for (; iterTags != playerTags.end(); ++iterTags)
{
pPlayer = *iterTags;
fDistance = pPlayer->GetNametagDistance();
static float fFullAlphaDistance = 7.0f;
if ((fDistance < fFullAlphaDistance) || (pSniperTargetedPlayer && pSniperTargetedPlayer == pPlayer) ||
(pSniperTargetedVehicle && pSniperTargetedVehicle == pPlayer->GetOccupiedVehicle()))
{
fAlphaModifier = 1.0f;
}
else
{
fAlphaModifier = 1.0f - ((fDistance - fFullAlphaDistance) / (DEFAULT_VIEW_RANGE - fFullAlphaDistance));
}
// Calculate the alpha for the nametag
ucAlpha = static_cast<unsigned char>(180.0f * fAlphaModifier);
// Draw the tag
DrawTagForPlayer(pPlayer, ucAlpha);
}
}
示例5: FireInstantHit
void CClientWeapon::FireInstantHit ( CVector vecOrigin, CVector vecTarget, bool bServerFire, bool bRemote )
#endif
{
CVector vecDirection = vecTarget - vecOrigin;
vecDirection.Normalize ();
CClientEntity * pAttachedTo = GetAttachedTo ();
CVector vecOriginalTarget = vecTarget;
CEntity * pColEntity = NULL;
CColPoint * pColPoint = NULL;
SLineOfSightBuildingResult pBuildingResult;
CEntitySAInterface * pEntity = NULL;
if ( m_Type != WEAPONTYPE_SHOTGUN )
{
CVector vecWeaponFirePosition;
if ( !IsLocalEntity ( ) && m_pOwner )
{
CClientPlayer * pPlayer = m_pOwner;
CClientPed * pLocalPlayer = g_pClientGame->GetLocalPlayer();
if ( pLocalPlayer && pPlayer )
{
CClientVehicle* pVehicle = pLocalPlayer->GetRealOccupiedVehicle ();
// Move both players to where they should be for shot compensation
if ( pPlayer && !pPlayer->IsLocalPlayer () )
{
if ( !pVehicle || pLocalPlayer->GetOccupiedVehicleSeat() == 0 )
{
// Warp back in time to where we were when this player shot (their latency)
// We don't account for interpolation here, +250ms seems to work better
// ** Changed ajustment to +125ms as the position of this clients player on the firers screen
// has been changed. See CClientPed::UpdateTargetPosition() **
CVector vecPosition;
unsigned short usLatency = ( pPlayer->GetLatency () + 125 );
g_pClientGame->GetNetAPI()->GetInterpolation ( vecPosition, usLatency );
// Move the entity back
if ( pVehicle )
{
pVehicle->GetPosition ( vecWeaponFirePosition );
pVehicle->SetPosition ( vecPosition, false, false );
}
else
{
pLocalPlayer->GetPosition ( vecWeaponFirePosition );
pLocalPlayer->SetPosition ( vecPosition, false, false );
}
}
}
}
}
//if ( pAttachedTo ) pAttachedTo->WorldIgnore ( true );
if ( m_pWeapon->ProcessLineOfSight ( &vecOrigin, &vecTarget, &pColPoint, &pColEntity, m_weaponConfig.flags, &pBuildingResult, m_Type, &pEntity ) )
{
vecTarget = pColPoint->GetPosition ();
}
// Don't continue without a valid colpoint
if ( !pColPoint )
return;
//if ( pAttachedTo ) pAttachedTo->WorldIgnore ( false );
// return if shoot if target is blocked is false and we aren't pointing at our target
if ( ( m_pTarget != NULL && m_pTarget->GetGameEntity ( ) != NULL && m_pTarget->GetGameEntity()->GetInterface ( ) != pEntity ) && m_weaponConfig.bShootIfTargetBlocked == false && bRemote == false )
{
if ( pColPoint )
pColPoint->Destroy ();
return;
}
// Execute our weapon fire event
CClientEntity * pClientEntity = m_pManager->FindEntitySafe ( pColEntity );
CLuaArguments Arguments;
if ( pClientEntity )
Arguments.PushElement ( pClientEntity ); // entity that got hit
else
Arguments.PushNil ( ); // Probably a building.
Arguments.PushNumber ( pColPoint->GetPosition ( ).fX ); // pos x
Arguments.PushNumber ( pColPoint->GetPosition ( ).fY ); // pos y
Arguments.PushNumber ( pColPoint->GetPosition ( ).fZ ); // pos z
Arguments.PushNumber ( pColPoint->GetNormal ( ).fX ); // Normal x
Arguments.PushNumber ( pColPoint->GetNormal ( ).fY ); // Normal y
Arguments.PushNumber ( pColPoint->GetNormal ( ).fZ ); // Normal z
Arguments.PushNumber ( pColPoint->GetSurfaceTypeB ( ) ); // Surface type "B"
Arguments.PushNumber ( pColPoint->GetLightingForTimeOfDay ( ) ); // Lighting
Arguments.PushNumber ( pColPoint->GetPieceTypeB ( ) ); // Piece
if ( !CallEvent ( "onClientWeaponFire", Arguments, true ) )
{
if ( pColPoint )
pColPoint->Destroy ();
return;
}
DoGunShells ( vecOrigin, vecDirection );
CVector vecCollision;
if ( g_pGame->GetWaterManager ()->TestLineAgainstWater ( vecOrigin, vecTarget, &vecCollision ) )
{
g_pGame->GetFx ()->TriggerBulletSplash ( vecCollision );
//.........这里部分代码省略.........