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:
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:
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; } }
--
|