Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
16.08.2009, 18:09
Masterbee



Hi!
Ich habe mir eine Para Progammiert aber habe ein Problem mit set body.
Folgenes:
Ich versuche mit set boy die menge der Kugleln im Magazien anzupassen.
10 Schuss = 10 Sichbare Kugeln, 9 Schuss = 9 Sichbare kugeln.

Das Weapon Model hat bereits skins dafür.

Ich habe eine neue Funkion geschrieben:

Quellcode:void CPara::SetSkin( void )
{
                //Mehr als 10 Schuss?
        if (m_iClip > 10)
        {
        pev->body = 0; //Model skin ändern auf Voll Schuss
        }
                //Mehr als 9 Schuss?
        else if ( m_iClip > 9 )
        {
        pev->body = 1; //Model skin ändern auf 9 Schuss
        }
                //Mehr als 7 Schuss?
        else if ( m_iClip > 7 )
        {
        pev->body = 2; //Model skin ändern auf 7 Schuss
        }
                //Mehr als 5 Schuss?
        else if ( m_iClip > 5 )
        {
        pev->body = 3; //Model skin ändern auf 5 Schuss
        }
                //Mehr als 4 Schuss?
        else if ( m_iClip > 4 )
        {
        pev->body = 4; //Model skin ändern auf 4 Schuss
        }
                //Mehr als 3 Schuss?
        else if ( m_iClip > 3 )
        {
        pev->body = 5; //Model skin ändern auf 3 Schuss
        }
                //Mehr als 2 Schuss?
        else if ( m_iClip > 2 )
        {
        pev->body = 6; //Model skin ändern auf 2 Schuss
        }
                //Mehr als 1 Schuss?
        else if ( m_iClip > 1 )
        {
        pev->body = 7; //Model skin ändern auf 1 Schuss
        }
                //0 Schuss?
        else if ( m_iClip > 0 )
        {
        pev->body = 8; //Model skin ändern auf 0 Schuss
        }
}
Die Funktion wird an zwei stellen aufgerufen in PrimaryAttack und Reload.

PrimaryAttack:

Quellcode:void CPara::PrimaryAttack()
{
    // don't fire underwater
    if ( m_pPlayer->pev->waterlevel != 3)
    {
            if(m_iClip == 0)
            {
                Reload( );
                PlayEmptySound( );
                m_flNextPrimaryAttack = UTIL_WeaponTimeBase()  + 0.15;    
                return;
            }

        m_iClip--;

        m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
        m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;

        // player "shoot" animation
        m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

        Vector vecSrc     = m_pPlayer->GetGunPosition( );
        Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
        Vector vecDir;

        if ( m_pPlayer->pev->flags & FL_DUCKING )
        {
        vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, VECTOR_CONE_5DEGREES, 8192, BULLET_PLAYER_MP5, 2, 0, m_pPlayer->pev, m_pPlayer->random_seed );
        PLAYBACK_EVENT_FULL( 0, m_pPlayer->edict(), m_usPara_5d, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 );
        }
        else
        {
        vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 8192, BULLET_PLAYER_MP5, 2, 0, m_pPlayer->pev, m_pPlayer->random_seed );
        PLAYBACK_EVENT_FULL( 0, m_pPlayer->edict(), m_usPara_10d, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 );
        }

        //DYN Light
        MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY );
          WRITE_BYTE( TE_DLIGHT );
          WRITE_COORD(vecSrc.x);    // X
          WRITE_COORD(vecSrc.y);    // Y
      WRITE_COORD(vecSrc.z);    // Z
          WRITE_BYTE( 20 );     // radius
          WRITE_BYTE( 255 );     // R
          WRITE_BYTE( 255 );     // G
          WRITE_BYTE( 128 );     // B
          WRITE_BYTE( 0 );     // life * 10
          WRITE_BYTE( 0 ); // decay
        MESSAGE_END();

        //Set next attack
        m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.08;

        if ( m_flNextPrimaryAttack < UTIL_WeaponTimeBase() )
            m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.08;
        m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT ( 10, 15 );
        m_fInSpecialReload = 0;
        SetSkin( ); //Aufrufen der neuen Funktion.
        return;
    }
    else
    {
        //Unter Wasser (kein schuss möglich!)
        PlayEmptySound( );
        m_flNextPrimaryAttack = 0.1;
        return;
    }
}

--

zum Seitenanfang zum Seitenende Profil || Suche
001
16.08.2009, 18:10
Masterbee



Reload:

Quellcode:void CPara::Reload( void )
{
    if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 || m_iClip == PARA_MAX_CLIP)
        return;

    SetSkin( ); //Vieviel Muition ist noch drin? Ändern für Reload Schritt 1 wenn (Taste r gedrückt wird)

    // check to see if we're ready to reload
    if (m_fInSpecialReload == 0)
    {
                //Reload Schritt 1
        SendWeaponAnim( PARA_RELOAD1_1 );

        m_fInSpecialReload = 1;

        m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 2.7;
        m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.7;

        if ( m_flNextPrimaryAttack < UTIL_WeaponTimeBase() )
            m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 2.7;
        return;
    }
    else if (m_fInSpecialReload == 1)
    {        
                //Reload Schritt 2
        if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
            return;

        pev->body = 0; // Volle Munition!
        
        DefaultReload( PARA_MAX_CLIP, PARA_RELOAD1_2, 4.8 );
    }
}
So.

Jezt das genaue Problem:
Wenn ich ein volles Magazien habe und es auf 0 runterschieße funktioniert alles (Am Model werden es ab 9 Schuss weniger Partronen am Model) aber dann beim Reload habe ich von 0 sichtbaren patronenen am Model plötzlich 5 patronen am model im ersten Reload vorgang (m_fInSpecialReload == 0) . Im zweiten Reload vorgang (m_fInSpecialReload == 1) ist alles wieder in Ordnung.

Problem 2:
Wenn ich das Magazien nicht komplett leer schieße nur auf zbs. 5 Schuss runter und dann r drücke habe ich im ersten Reload vorgang wieder ein volles sichtbares magazien am Model. Danach im Zweiten Reload vorgang ist es wieder in Ordnung.

Ich habe ein par Bilder gemacht damit es einfacher ist:

http://87.230.48.97/c2a10003.jpg
http://87.230.48.97/c2a10006.jpg
http://87.230.48.97/c2a10008.jpg

--

zum Seitenanfang zum Seitenende Profil || Suche