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 CPedRPCs::SetPedArmor ( CClientEntity* pSource, NetBitStreamInterface& bitStream ) { unsigned char ucArmor; unsigned char ucTimeContext; if ( bitStream.Read ( ucArmor ) && bitStream.Read ( ucTimeContext ) ) { float fArmor = static_cast < float > ( ucArmor ) / 1.25f; CClientPed* pPed = m_pPedManager->Get ( pSource->GetID (), true ); if ( pPed ) { pPed->SetSyncTimeContext ( ucTimeContext ); pPed->SetArmor ( fArmor ); } } }