From 29009ffbb9dac9441cef27cb1668a2f068787e8a Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Wed, 17 Mar 2021 13:26:12 +0100 Subject: [PATCH] Client: Add shell ejection for pistols, smgs and rifles. --- src/client/defs.h | 5 +++++ src/client/init.qc | 4 ++++ src/shared/w_ak47.qc | 1 + src/shared/w_aug.qc | 1 + src/shared/w_deagle.qc | 1 + src/shared/w_elites.qc | 3 +++ src/shared/w_fiveseven.qc | 1 + src/shared/w_g3sg1.qc | 1 + src/shared/w_glock18.qc | 1 + src/shared/w_m4a1.qc | 1 + src/shared/w_mac10.qc | 1 + src/shared/w_mp5.qc | 1 + src/shared/w_p228.qc | 1 + src/shared/w_p90.qc | 1 + src/shared/w_para.qc | 1 + src/shared/w_sg550.qc | 3 ++- src/shared/w_sg552.qc | 3 ++- src/shared/w_tmp.qc | 3 ++- src/shared/w_ump45.qc | 1 + src/shared/w_usp45.qc | 2 ++ 20 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/client/defs.h b/src/client/defs.h index f73ae3d..b94079e 100644 --- a/src/client/defs.h +++ b/src/client/defs.h @@ -50,6 +50,10 @@ var string g_cs_scope6; var string g_cs_scope7; var string g_cs_scope8; +var float SHELL_PISTOL; +var float SHELL_RIFLE; +var float SHELL_RIFLELARGE; + struct { /* viewmodel stuff */ @@ -57,6 +61,7 @@ struct entity m_eMuzzleflash; int m_iVMBones; int m_iVMEjectBone; + float m_fEjectModel; int m_iLastWeapon; int m_iOldWeapon; float m_flBobTime; diff --git a/src/client/init.qc b/src/client/init.qc index a757d5a..b080e65 100644 --- a/src/client/init.qc +++ b/src/client/init.qc @@ -132,6 +132,10 @@ ClientGame_RendererRestart(string rstr) g_cs_scope7 = spriteframe("sprites/bottom.spr", 0, 0.0f); g_cs_scope8 = spriteframe("sprites/bottom_right.spr", 0, 0.0f); + SHELL_PISTOL = getmodelindex("models/pshell.mdl"); + SHELL_RIFLE = getmodelindex("models/rshell.mdl"); + SHELL_RIFLELARGE = getmodelindex("models/rshell_big.mdl"); + Obituary_Precache(); FX_Blood_Init(); diff --git a/src/shared/w_ak47.qc b/src/shared/w_ak47.qc index 75a7df5..4cb1d65 100644 --- a/src/shared/w_ak47.qc +++ b/src/shared/w_ak47.qc @@ -126,6 +126,7 @@ w_ak47_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_RIFLE, 0); int r = (float)input_sequence % 3; switch (r) { diff --git a/src/shared/w_aug.qc b/src/shared/w_aug.qc index d469a70..fdaa250 100644 --- a/src/shared/w_aug.qc +++ b/src/shared/w_aug.qc @@ -126,6 +126,7 @@ w_aug_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_RIFLE, 0); int r = (float)input_sequence % 3; switch (r) { diff --git a/src/shared/w_deagle.qc b/src/shared/w_deagle.qc index e64545e..6f2bb8a 100644 --- a/src/shared/w_deagle.qc +++ b/src/shared/w_deagle.qc @@ -129,6 +129,7 @@ w_deagle_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_PISTOL, 0); if (pl.deagle_mag <= 0) { Weapons_ViewAnimation(DEAGLE_SHOOT_EMPTY); diff --git a/src/shared/w_elites.qc b/src/shared/w_elites.qc index afcbd1a..70c106a 100644 --- a/src/shared/w_elites.qc +++ b/src/shared/w_elites.qc @@ -144,6 +144,8 @@ w_elites_primary(void) int r = (float)input_sequence % 5; if (pl.mode_temp) { + View_EjectShell(SHELL_PISTOL, 1); + if (pl.elites_mag <= 0) { Weapons_ViewAnimation(ELITES_SHOOT_LEFTLAST); } else { @@ -166,6 +168,7 @@ w_elites_primary(void) } } } else { + View_EjectShell(SHELL_PISTOL, 0); if (pl.elites_mag <= 0) { Weapons_ViewAnimation(ELITES_SHOOT_RIGHTLAST); } else { diff --git a/src/shared/w_fiveseven.qc b/src/shared/w_fiveseven.qc index 9d65851..7bd4755 100644 --- a/src/shared/w_fiveseven.qc +++ b/src/shared/w_fiveseven.qc @@ -129,6 +129,7 @@ w_fiveseven_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_PISTOL, 0); if (pl.fiveseven_mag <= 0) { Weapons_ViewAnimation(FIVESEVEN_SHOOT_EMPTY); diff --git a/src/shared/w_g3sg1.qc b/src/shared/w_g3sg1.qc index 78c6868..c75ecba 100644 --- a/src/shared/w_g3sg1.qc +++ b/src/shared/w_g3sg1.qc @@ -124,6 +124,7 @@ w_g3sg1_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_RIFLE, 0); int r = (float)input_sequence % 2; switch (r) { diff --git a/src/shared/w_glock18.qc b/src/shared/w_glock18.qc index 970f42b..d545566 100644 --- a/src/shared/w_glock18.qc +++ b/src/shared/w_glock18.qc @@ -159,6 +159,7 @@ w_glock18_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_PISTOL, 0); #else if (pl.flags & FL_CROUCHING) diff --git a/src/shared/w_m4a1.qc b/src/shared/w_m4a1.qc index 7c02186..366aec0 100644 --- a/src/shared/w_m4a1.qc +++ b/src/shared/w_m4a1.qc @@ -146,6 +146,7 @@ w_m4a1_primary(void) } else { View_SetMuzzleflash(MUZZLE_RIFLE); } + View_EjectShell(SHELL_RIFLE, 0); /* this stuff is predicted */ int r = (float)input_sequence % 3; diff --git a/src/shared/w_mac10.qc b/src/shared/w_mac10.qc index b0134a1..b7e059d 100644 --- a/src/shared/w_mac10.qc +++ b/src/shared/w_mac10.qc @@ -125,6 +125,7 @@ w_mac10_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_PISTOL, 0); int r = (float)input_sequence % 3; switch (r) { diff --git a/src/shared/w_mp5.qc b/src/shared/w_mp5.qc index 1d4c563..cad5222 100644 --- a/src/shared/w_mp5.qc +++ b/src/shared/w_mp5.qc @@ -125,6 +125,7 @@ w_mp5_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_RIFLE, 0); int r = (float)input_sequence % 3; switch (r) { diff --git a/src/shared/w_p228.qc b/src/shared/w_p228.qc index f5b6daf..41e8f57 100644 --- a/src/shared/w_p228.qc +++ b/src/shared/w_p228.qc @@ -129,6 +129,7 @@ w_p228_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_PISTOL, 0); if (pl.p228_mag <= 0) { Weapons_ViewAnimation(P228_SHOOT_EMPTY); diff --git a/src/shared/w_p90.qc b/src/shared/w_p90.qc index 4ffb710..b77f1b3 100644 --- a/src/shared/w_p90.qc +++ b/src/shared/w_p90.qc @@ -125,6 +125,7 @@ w_p90_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_PISTOL, 0); int r = (float)input_sequence % 3; switch (r) { diff --git a/src/shared/w_para.qc b/src/shared/w_para.qc index cfe67db..cd1c23d 100644 --- a/src/shared/w_para.qc +++ b/src/shared/w_para.qc @@ -124,6 +124,7 @@ w_para_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_RIFLE, 0); int r = (float)input_sequence % 2; switch (r) { diff --git a/src/shared/w_sg550.qc b/src/shared/w_sg550.qc index fe50794..effa083 100644 --- a/src/shared/w_sg550.qc +++ b/src/shared/w_sg550.qc @@ -124,6 +124,7 @@ w_sg550_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_RIFLE, 0); int r = (float)input_sequence % 2; switch (r) { @@ -282,7 +283,7 @@ weapon_t w_sg550 = .primary = w_sg550_primary, .secondary = w_sg550_secondary, .reload = w_sg550_reload, - .release = w_cstrike_weaponrelease, + .release = w_sg550_release, .crosshair = w_sg550_hud, .precache = w_sg550_precache, .pickup = w_sg550_pickup, diff --git a/src/shared/w_sg552.qc b/src/shared/w_sg552.qc index 1034e8d..b0dc01b 100644 --- a/src/shared/w_sg552.qc +++ b/src/shared/w_sg552.qc @@ -125,6 +125,7 @@ w_sg552_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_RIFLE, 0); int r = (float)input_sequence % 3; switch (r) { @@ -290,7 +291,7 @@ weapon_t w_sg552 = .primary = w_sg552_primary, .secondary = w_sg552_secondary, .reload = w_sg552_reload, - .release = w_cstrike_weaponrelease, + .release = w_sg552_release, .crosshair = w_sg552_hud, .precache = w_sg552_precache, .pickup = w_sg552_pickup, diff --git a/src/shared/w_tmp.qc b/src/shared/w_tmp.qc index f55d6e2..df4d9ca 100644 --- a/src/shared/w_tmp.qc +++ b/src/shared/w_tmp.qc @@ -127,6 +127,7 @@ w_tmp_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_PISTOL, 0); int r = (float)input_sequence % 3; switch (r) { @@ -267,7 +268,7 @@ weapon_t w_tmp = .primary = w_tmp_primary, .secondary = __NULL__, .reload = w_tmp_reload, - .release = w_cstrike_weaponrelease, + .release = w_tmp_release, .crosshair = w_tmp_hud, .precache = w_tmp_precache, .pickup = w_tmp_pickup, diff --git a/src/shared/w_ump45.qc b/src/shared/w_ump45.qc index aa4488b..8f4960a 100644 --- a/src/shared/w_ump45.qc +++ b/src/shared/w_ump45.qc @@ -127,6 +127,7 @@ w_ump45_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShell(SHELL_PISTOL, 0); #else TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 30, [accuracy,accuracy], WEAPON_UMP45); diff --git a/src/shared/w_usp45.qc b/src/shared/w_usp45.qc index 04841df..2328a5c 100644 --- a/src/shared/w_usp45.qc +++ b/src/shared/w_usp45.qc @@ -154,6 +154,8 @@ w_usp45_primary(void) } else { View_SetMuzzleflash(MUZZLE_SMALL); } + + View_EjectShell(SHELL_PISTOL, 0); #else /* Different sounds without silencer */ if (pl.mode_usp45 == 1) {