void CElementRPCs::SetElementHealth ( NetBitStreamInterface& bitStream ) { ElementID ID; float fHealth; unsigned char ucTimeContext; if ( bitStream.Read ( ID ) && bitStream.Read ( fHealth ) && bitStream.Read ( ucTimeContext ) ) { CClientEntity * pEntity = CElementIDs::GetElement ( ID ); if ( pEntity ) { pEntity->SetSyncTimeContext ( ucTimeContext ); switch ( pEntity->GetType () ) { case CCLIENTPED: case CCLIENTPLAYER: { CClientPed* pPed = static_cast < CClientPed * > ( pEntity ); pPed->SetHealth ( fHealth ); break; } case CCLIENTVEHICLE: { CClientVehicle* pVehicle = static_cast < CClientVehicle * > ( pEntity ); pVehicle->SetHealth ( fHealth ); break; } } } } }
void CPedSync::Packet_PedStartSync ( NetBitStreamInterface& BitStream ) { // Read out the element id ElementID ID; if ( BitStream.Read ( ID ) ) { // Grab the ped CClientPed* pPed = static_cast < CClientPed* > ( m_pPedManager->Get ( ID ) ); if ( pPed ) { // Read out the position CVector vecPosition; BitStream.Read ( vecPosition.fX ); BitStream.Read ( vecPosition.fY ); BitStream.Read ( vecPosition.fZ ); // And rotation float fRotation; BitStream.Read ( fRotation ); // And the velocity CVector vecVelocity; BitStream.Read ( vecVelocity.fX ); BitStream.Read ( vecVelocity.fY ); BitStream.Read ( vecVelocity.fZ ); // And health/armor float fHealth, fArmor; BitStream.Read ( fHealth ); BitStream.Read ( fArmor ); // Set data pPed->SetPosition ( vecPosition ); pPed->SetCurrentRotation ( fRotation ); pPed->SetMoveSpeed ( vecVelocity ); // Set the new health pPed->SetHealth ( fHealth ); pPed->SetArmor ( fArmor ); // Unlock health and armour for the syncer pPed->UnlockHealth (); pPed->UnlockArmor (); AddPed ( pPed ); } } }
void CElementRPCs::SetElementHealth ( CClientEntity* pSource, NetBitStreamInterface& bitStream ) { float fHealth; unsigned char ucTimeContext; if ( bitStream.Read ( fHealth ) && bitStream.Read ( ucTimeContext ) ) { pSource->SetSyncTimeContext ( ucTimeContext ); switch ( pSource->GetType () ) { case CCLIENTPED: case CCLIENTPLAYER: { CClientPed* pPed = static_cast < CClientPed * > ( pSource ); if ( pPed->IsHealthLocked() ) pPed->LockHealth ( fHealth ); else pPed->SetHealth ( fHealth ); break; } case CCLIENTVEHICLE: { CClientVehicle* pVehicle = static_cast < CClientVehicle * > ( pSource ); pVehicle->SetHealth ( fHealth ); break; } case CCLIENTOBJECT: case CCLIENTWEAPON: { CClientObject* pObject = static_cast < CClientObject * > ( pSource ); pObject->SetHealth ( fHealth ); break; } } } }