From a31b3b0e4796ae8c037183ef9cf1566927f7a033 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Thu, 23 Apr 2020 03:41:56 +0200 Subject: [PATCH] Counter-Strike: Updated the WEAPON_SMOKEGRENADE smoke particle effect. --- .../data.pk3dir/particles/fx_smokenade.cfg | 14 +++++++++++++ src/client/cstrike/game_event.c | 7 +++++++ src/client/cstrike/init.c | 1 + src/shared/cstrike/fx_impact.c | 2 ++ src/shared/cstrike/fx_smokenade.c | 20 ++++++++++++++----- src/shared/cstrike/w_smokegrenade.c | 1 + src/shared/valve/fx_blood.c | 2 ++ src/shared/valve/fx_breakmodel.c | 2 ++ src/shared/valve/fx_explosion.c | 2 ++ src/shared/valve/fx_gibhuman.c | 2 ++ src/shared/valve/fx_impact.c | 2 ++ src/shared/valve/fx_spark.c | 2 ++ 12 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 cstrike/data.pk3dir/particles/fx_smokenade.cfg diff --git a/cstrike/data.pk3dir/particles/fx_smokenade.cfg b/cstrike/data.pk3dir/particles/fx_smokenade.cfg new file mode 100644 index 00000000..e5449caa --- /dev/null +++ b/cstrike/data.pk3dir/particles/fx_smokenade.cfg @@ -0,0 +1,14 @@ +r_part effect +{ + texture ball + count 1 + scale 512 + scalefactor 1 + die 3 + alpha 0.7 + rgb 128 128 128 + spawnmode ball + gravity -25 + veladd -20 + randomvel 64 -64 +} diff --git a/src/client/cstrike/game_event.c b/src/client/cstrike/game_event.c index da88deae..0b7c5340 100644 --- a/src/client/cstrike/game_event.c +++ b/src/client/cstrike/game_event.c @@ -88,6 +88,13 @@ switch (fHeader) { FX_Impact(iType, vOrigin, vNormal); break; + case EV_SMOKE: + vector vSmokePos; + vSmokePos[0] = readcoord(); + vSmokePos[1] = readcoord(); + vSmokePos[2] = readcoord(); + FX_Smokenade(vSmokePos); + break; case EV_CHAT: float fSender = readbyte(); float fTeam = readbyte(); diff --git a/src/client/cstrike/init.c b/src/client/cstrike/init.c index 13baac12..86c29985 100644 --- a/src/client/cstrike/init.c +++ b/src/client/cstrike/init.c @@ -122,6 +122,7 @@ Game_RendererRestarted(string rstr) FX_GibHuman_Init(); FX_Spark_Init(); FX_Impact_Init(); + FX_Smokenade_Init(); precache_model("sprites/640hud1.spr"); precache_model("sprites/640hud2.spr"); diff --git a/src/shared/cstrike/fx_impact.c b/src/shared/cstrike/fx_impact.c index 7419a906..8a6b92c1 100644 --- a/src/shared/cstrike/fx_impact.c +++ b/src/shared/cstrike/fx_impact.c @@ -14,6 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef CLIENT var float DECAL_SHOT; var float DECAL_GLASS; var float PARTICLE_PIECES_BLACK; @@ -40,6 +41,7 @@ FX_Impact_Init(void) PARTICLE_SMOKE_GREY = particleeffectnum("part_smoke_grey"); PARTICLE_SMOKE_BROWN = particleeffectnum("part_smoke_brown"); } +#endif void FX_Impact(int iType, vector vecPos, vector vNormal) diff --git a/src/shared/cstrike/fx_smokenade.c b/src/shared/cstrike/fx_smokenade.c index 42bbeaa6..46360262 100644 --- a/src/shared/cstrike/fx_smokenade.c +++ b/src/shared/cstrike/fx_smokenade.c @@ -14,14 +14,24 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef CLIENT +var int PARTICLE_SMOKEGRENADE; + +void +FX_Smokenade_Init(void) +{ + PARTICLE_SMOKEGRENADE = particleeffectnum("fx_smokenade.effect"); +} +#endif + void FX_Smokenade(vector vecPos) { #ifdef SERVER WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); WriteByte(MSG_MULTICAST, EV_SMOKE); - WriteCoord(MSG_MULTICAST, vecPos[0]); - WriteCoord(MSG_MULTICAST, vecPos[1]); + WriteCoord(MSG_MULTICAST, vecPos[0]); + WriteCoord(MSG_MULTICAST, vecPos[1]); WriteCoord(MSG_MULTICAST, vecPos[2]); msg_entity = self; multicast([0,0,0], MULTICAST_ALL); @@ -35,9 +45,9 @@ FX_Smokenade(vector vecPos) if (self.frame <= 0) { remove(self); return; - } - -// pointparticles(PARTICLE_SMOKEGRENADE, self.origin, [0,0,0], 1); + } + + pointparticles(PARTICLE_SMOKEGRENADE, self.origin, [0,0,0], 1); self.frame--; self.nextthink = time + 0.2f; self.skin = getstatf(STAT_GAMETIME); diff --git a/src/shared/cstrike/w_smokegrenade.c b/src/shared/cstrike/w_smokegrenade.c index 0ab74fd2..7e6e8814 100644 --- a/src/shared/cstrike/w_smokegrenade.c +++ b/src/shared/cstrike/w_smokegrenade.c @@ -101,6 +101,7 @@ void w_smokegrenade_throw(void) { static void smokegrenade_explode(void) { + FX_Smokenade(self.origin); Sound_Play(self, CHAN_BODY, "weapon_smokegrenade.explode"); remove(self); } diff --git a/src/shared/valve/fx_blood.c b/src/shared/valve/fx_blood.c index 23429e98..92fd9e5f 100644 --- a/src/shared/valve/fx_blood.c +++ b/src/shared/valve/fx_blood.c @@ -14,6 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef CLIENT var float PARTICLE_BLOOD; void @@ -23,6 +24,7 @@ FX_Blood_Init(void) precache_model("sprites/blood.spr"); PARTICLE_BLOOD = particleeffectnum("part_blood"); } +#endif void FX_Blood(vector pos, vector color) diff --git a/src/shared/valve/fx_breakmodel.c b/src/shared/valve/fx_breakmodel.c index 2d3793d1..3d498466 100644 --- a/src/shared/valve/fx_breakmodel.c +++ b/src/shared/valve/fx_breakmodel.c @@ -14,6 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef CLIENT void FX_BreakModel_Init(void) { @@ -39,6 +40,7 @@ FX_BreakModel_Init(void) precache_sound("debris/bustconcrete2.wav"); precache_sound("debris/bustceiling.wav"); } +#endif void FX_BreakModel(int count, vector vMins, vector vMaxs, vector vVel, float fStyle) diff --git a/src/shared/valve/fx_explosion.c b/src/shared/valve/fx_explosion.c index 785dd237..07ff38ec 100755 --- a/src/shared/valve/fx_explosion.c +++ b/src/shared/valve/fx_explosion.c @@ -14,6 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef CLIENT void FX_Explosion_Init(void) { @@ -22,6 +23,7 @@ FX_Explosion_Init(void) precache_sound("weapons/explode5.wav"); precache_model("sprites/fexplo.spr"); } +#endif void FX_Explosion(vector vecPos) diff --git a/src/shared/valve/fx_gibhuman.c b/src/shared/valve/fx_gibhuman.c index e8a4a97f..2df6fbcb 100644 --- a/src/shared/valve/fx_gibhuman.c +++ b/src/shared/valve/fx_gibhuman.c @@ -14,6 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef CLIENT string g_hgibs[] = { "models/gib_b_bone.mdl", "models/gib_legbone.mdl", @@ -32,6 +33,7 @@ FX_GibHuman_Init(void) precache_model("models/gib_b_gib.mdl"); precache_sound("common/bodysplat.wav"); } +#endif void FX_GibHuman(vector pos) diff --git a/src/shared/valve/fx_impact.c b/src/shared/valve/fx_impact.c index 21adee35..8093048c 100644 --- a/src/shared/valve/fx_impact.c +++ b/src/shared/valve/fx_impact.c @@ -14,6 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef CLIENT var float DECAL_SHOT; var float DECAL_GLASS; var float PARTICLE_PIECES_BLACK; @@ -35,6 +36,7 @@ FX_Impact_Init(void) PARTICLE_SMOKE_GREY = particleeffectnum("part_smoke_grey"); PARTICLE_SMOKE_BROWN = particleeffectnum("part_smoke_brown"); } +#endif void FX_Impact(int iType, vector vecPos, vector vNormal) diff --git a/src/shared/valve/fx_spark.c b/src/shared/valve/fx_spark.c index 507e1eb6..dfd0a460 100644 --- a/src/shared/valve/fx_spark.c +++ b/src/shared/valve/fx_spark.c @@ -14,6 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef CLIENT var float PARTICLE_SPARK; void @@ -27,6 +28,7 @@ FX_Spark_Init(void) precache_sound("buttons/spark6.wav"); PARTICLE_SPARK = particleeffectnum("part_spark"); } +#endif void FX_Spark(vector pos, vector ang)