Beispiel #1
0
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 );
        }
    }
}
Beispiel #2
0
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 );
        }
    }
}