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