本文整理汇总了C++中CClientPed::GetType方法的典型用法代码示例。如果您正苦于以下问题:C++ CClientPed::GetType方法的具体用法?C++ CClientPed::GetType怎么用?C++ CClientPed::GetType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CClientPed
的用法示例。
在下文中一共展示了CClientPed::GetType方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TakeWeapon
void CWeaponRPCs::TakeWeapon ( NetBitStreamInterface& bitStream )
{
// Read out weapon id and ammo amount
ElementID ID;
SWeaponTypeSync weaponType;
if ( bitStream.ReadCompressed ( ID ) &&
bitStream.Read ( &weaponType ) )
{
unsigned char ucWeaponID = weaponType.data.ucWeaponType;
CClientPed * pPed = m_pPedManager->Get ( ID, true );
if ( pPed )
{
// Don't change remote players weapons (affects sync)
if ( pPed->GetType () == CCLIENTPED || ( CClientPlayer * ) pPed == m_pPlayerManager->GetLocalPlayer () )
{
// Is the weapon id valid? (may not be neccessary, just being safe)
if ( CClientPickupManager::IsValidWeaponID ( ucWeaponID ) )
{
// Remove the weapon
pPed->RemoveWeapon ( static_cast < eWeaponType > ( ucWeaponID ) );
}
}
}
}
}
示例2: Get
CClientPlayer* CClientPlayerManager::Get ( CPlayerPed* pPlayer, bool bValidatePointer )
{
if ( !pPlayer ) return NULL;
if ( bValidatePointer )
{
vector < CClientPlayer* > ::const_iterator iter = m_Players.begin ();
for ( ; iter != m_Players.end () ; iter++ )
{
if ( (*iter)->GetGamePlayer () == pPlayer )
{
return *iter;
}
}
}
else
{
CClientPed* pPed = reinterpret_cast < CClientPed* > ( pPlayer->GetStoredPointer () );
if ( pPed->GetType () == CCLIENTPLAYER )
{
return static_cast < CClientPlayer * > ( pPed );
}
}
return NULL;
}
示例3: Get
CClientPed* CClientPedManager::Get ( CPlayerPed* pPlayer, bool bValidatePointer, bool bCheckPlayers )
{
if ( !pPlayer ) return NULL;
if ( bValidatePointer )
{
vector < CClientPed* > ::const_iterator iter = m_StreamedIn.begin ();
for ( ; iter != m_StreamedIn.end (); iter++ )
{
if ( (*iter)->GetGamePlayer () == pPlayer )
{
return *iter;
}
}
}
else
{
CClientPed* pPed = reinterpret_cast < CClientPed* > ( pPlayer->GetStoredPointer () );
if ( pPed->GetType () == CCLIENTPED || bCheckPlayers )
{
return pPed;
}
}
return NULL;
}
示例4: DrawFromAim
//.........这里部分代码省略.........
}
}
// Ignore the local player for this
pLocalPlayer->WorldIgnore(true);
// Do the raycast
CColPoint* pColPoint = NULL;
CEntity* pEntity = NULL;
SLineOfSightFlags flags;
flags.bCheckBuildings = true;
flags.bCheckVehicles = true;
flags.bCheckPeds = true;
flags.bCheckObjects = true;
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();
示例5: GiveWeapon
void CWeaponRPCs::GiveWeapon ( NetBitStreamInterface& bitStream )
{
// Read out weapon id and ammo amount
ElementID ID;
SWeaponTypeSync weaponType;
if ( bitStream.ReadCompressed ( ID ) &&
bitStream.Read ( &weaponType ) )
{
SWeaponAmmoSync ammo ( weaponType.data.ucWeaponType, true, false );
if ( bitStream.Read ( &ammo ) )
{
bool bGiveWeapon = bitStream.ReadBit ();
unsigned char ucWeaponID = weaponType.data.ucWeaponType;
unsigned short usAmmo = ammo.data.usTotalAmmo;
CClientPed * pPed = m_pPedManager->Get ( ID, true );
if ( pPed )
{
// Don't change remote players weapons (affects sync)
if ( pPed->GetType () == CCLIENTPED || pPed->GetType () == CCLIENTPLAYER )
{
// Valid weapon id?
if ( ucWeaponID == 0 || CClientPickupManager::IsValidWeaponID ( ucWeaponID ) )
{
// Adjust the ammo to 9999 if it's above
if ( usAmmo > 9999 ) usAmmo = 9999;
// Give the local player the weapon
CWeapon* pPlayerWeapon = NULL;
if ( ucWeaponID != 0 )
{
pPlayerWeapon = pPed->GiveWeapon ( static_cast < eWeaponType > ( ucWeaponID ), usAmmo );
if ( pPlayerWeapon && bGiveWeapon )
pPlayerWeapon->SetAsCurrentWeapon ();
}
else
{
// This could be entered into a hack of the year competition. Its about as hacky as it gets.
// For some stupid reason, going from brassknuckles to unarmed causes the knuckles to remain
// on display but unusable. So, what we do is switch to a MELEE weapon (creating one if necessary)
// then switch back to unarmed from there, which works fine.
CWeapon* oldWeapon = pPed->GetWeapon (WEAPONSLOT_TYPE_UNARMED);
if ( oldWeapon )
{
eWeaponType unarmedWeapon = oldWeapon->GetType();
pPed->RemoveWeapon ( unarmedWeapon );
if ( bGiveWeapon || pPed->GetCurrentWeaponSlot() == WEAPONSLOT_TYPE_UNARMED )
{
oldWeapon = NULL;
if ( unarmedWeapon == WEAPONTYPE_BRASSKNUCKLE )
{
oldWeapon = pPed->GetWeapon(WEAPONSLOT_TYPE_MELEE);
if ( oldWeapon && oldWeapon->GetType() == WEAPONTYPE_UNARMED )
{
oldWeapon = pPed->GiveWeapon(WEAPONTYPE_GOLFCLUB, 100);
}
else
{
oldWeapon = NULL;
}
pPed->SetCurrentWeaponSlot ( WEAPONSLOT_TYPE_MELEE );
}
// switch to the unarmed slot
pPed->SetCurrentWeaponSlot ( WEAPONSLOT_TYPE_UNARMED );
// if we created a special MELEE weapon just for this, remove it now
if ( oldWeapon )
{
oldWeapon->Remove();
}
}
}
else
{
// Probably the ped is streamed out
pPed->GiveWeapon ( WEAPONTYPE_UNARMED, 1 );
if ( bGiveWeapon )
pPed->SetCurrentWeaponSlot ( WEAPONSLOT_TYPE_UNARMED );
}
}
}
}
}
}
}
}
示例6: FireInstantHit
//.........这里部分代码省略.........
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 );
g_pGame->GetAudioEngine ()->ReportBulletHit ( NULL, SURFACE_TYPE_WATER_SHALLOW, &vecCollision, 0.0f );
}
#ifdef MARKER_DEBUG
m_pMarker2->SetPosition ( vecTarget );
#endif
m_pWeapon->DoBulletImpact ( m_pObject, pEntity, &vecOrigin, &vecTarget, pColPoint, 0 );
if ( !IsLocalEntity ( ) && m_pOwner )
{
CClientPed * pPed = m_pOwner;
CClientPed * pLocalPlayer = g_pClientGame->GetLocalPlayer();
if ( pPed->GetType () == CCLIENTPLAYER )
{
// Restore compensated positions
if ( !pPed->IsLocalPlayer () )
{
CClientVehicle* pVehicle = pLocalPlayer->GetRealOccupiedVehicle ();
if ( !pVehicle )
{
pLocalPlayer->SetPosition ( vecWeaponFirePosition, false, false );
}
else if ( pLocalPlayer->GetOccupiedVehicleSeat() == 0 )
{
pVehicle->SetPosition ( vecWeaponFirePosition, false, false );
}
}
}
}
if ( !IsLocalEntity ( ) && GetOwner ( ) == g_pClientGame->GetLocalPlayer ( ) && bServerFire == false )
{
g_pClientGame->GetNetAPI ( )->SendBulletSyncCustomWeaponFire ( this, vecOrigin, vecOriginalTarget );
}
}
#ifdef SHOTGUN_TEST
else
{
//if ( pAttachedTo ) pAttachedTo->WorldIgnore ( true );
//if ( pAttachedTo ) pAttachedTo->WorldIgnore ( false );
// Fire instant hit is off by a few degrees
FireShotgun ( m_pObject, vecOrigin, vecTarget, vecRotation );
}
#endif
if ( pColPoint )
pColPoint->Destroy ();
}