Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
12.05.2001, 15:31
e-RZA



JaJA ich schon wieder aber ich brauch nochmal hilfe bei meinem Burst Fire Modus für die MP5.
Und zwar hab ich es zwar geschaft das meine MP5 drei schüsse abfeuert pro knopfdruch aber ich hab trotzdem nur ein einschußloch.
Ich poste hia einfach ma meinen secondary fire modus:

void CMP5K::PrimaryAttack()
{
switch( RANDOM_LONG(0,1) )
{
case 0: EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/hkk1.wav", 1, ATTN_NORM, 0, 94 + RANDOM_LONG(0,0xf)); break;
case 1: EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/hkk2.wav", 1, ATTN_NORM, 0, 94 + RANDOM_LONG(0,0xf)); break;
// case 2: EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/hkk3.wav", 1, ATTN_NORM); break;
}

// don't fire underwater
if (m_pPlayer->pev->waterlevel == 3)
{
PlayEmptySound( );
m_flNextPrimaryAttack = gpGlobals->time + 0.15;
return;
}

if (m_iClip <= 0)
{
PlayEmptySound();
m_flNextPrimaryAttack = gpGlobals->time + 0.15;
return;
}

PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usMP5K );

m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;

m_iClip--;

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

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

if ( g_pGameRules->IsDeathmatch() )
{
// optimized multiplayer. Widened to make it easier to hit a moving player
m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_6DEGREES, 8192, BULLET_PLAYER_MP5, 0 );
}
else
{
// single player spread
m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 8192, BULLET_PLAYER_MP5, 0 );
}

if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
// HEV suit - indicate out of ammo condition
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);

m_flNextPrimaryAttack = m_flNextPrimaryAttack + 0.1;
if (m_flNextPrimaryAttack < gpGlobals->time)
m_flNextPrimaryAttack = gpGlobals->time + 0.1;

m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );
}

Ich hoffe es gibt jemanden der lust hat mir zu helfen.
Danke schon mal.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
15.05.2001, 18:28
The_Overmind



Aaaaaalso!!
Ich hab meinen Burst Fire bei der MP5 so gemacht *zwar ein bisschen stümperhaft aber es funkt*:
Du machst eine neue Variable wie m_iBulletCount oder so. Am Anfang vom Primary Attack prüfst du ob die Variable 0 ist und was für ein Feuermodus du benutzt. Wenn normal dann Bulletcount = 1. Wenn Burst dann BulletCount = 3. Am Ende vom Primary machste sowas wie m_iBulletCount--;.
Dann änderst du die Zeit bis zum nächsten WeaponIdle auf die Zeit zwischen 2 Feuerstößen *ca. 0,1 sekunden*. In der WeaponIdle Funktion fragst du nach ob m_iBulletCount größer als null ist *d.h. haben wir noch Kugeln in der "Warteschlange" ??* wenn der Wert größer als 0 ist rufst du die PrimaryAttack wieder auf.

Voila

Ich hoffe das hilft dir weiter

MfG
[-XHP-]The Overmind[VWD]

--

zum Seitenanfang zum Seitenende Profil || Suche
002
15.05.2001, 18:34
Hanky



Oder du gehst in die client.dll, zu dem Fireabteil, deiner Waffe.

Da steht auch irgendwas von FireBullets.. änder den entsprechend um..

..bei mir geht das!

--

hankYs Page

zum Seitenanfang zum Seitenende Profil || Suche
003
16.05.2001, 13:31
TheVoice



......ooooder du machst es per SetThink
wie du siehst gibt es eine Reihe an Möglichkeiten ;)

--

Against TCPA | Resourcecode.de | Blender 3D | [ Darkzone | Pandorra | Alpine ]

zum Seitenanfang zum Seitenende Profil || Suche
004
16.05.2001, 15:51
The_Overmind



jaaaaaaaaaaaaaaaaaaaaaaaa
SetThin!!!

*pssst: bin ich zu faul für ;)*

--

zum Seitenanfang zum Seitenende Profil || Suche