From b49815872cc683bd2940762487b4b8940e7d3655 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Sat, 13 Mar 2021 04:24:53 +0100 Subject: [PATCH] Sound Shaders: Exit out when we attempt to play a shader that hasn't been precached. --- src/server/entry.qc | 5 +++++ src/shared/sound.qc | 21 ++++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/server/entry.qc b/src/server/entry.qc index fd1e0a50..73ef762d 100644 --- a/src/server/entry.qc +++ b/src/server/entry.qc @@ -440,6 +440,11 @@ initents(void) precache_sound("items/flashlight1.wav"); precache_sound("common/null.wav"); + Sound_Precache("player.gasplight"); + Sound_Precache("player.gaspheavy"); + Sound_Precache("player.waterenter"); + Sound_Precache("player.waterexit"); + Game_InitRules(); Game_Worldspawn(); Decals_Init(); diff --git a/src/shared/sound.qc b/src/shared/sound.qc index 7451fde9..3aa338d3 100644 --- a/src/shared/sound.qc +++ b/src/shared/sound.qc @@ -276,9 +276,14 @@ Sound_Play(entity target, int chan, string shader) int sample; flag = 0; - sample = (int)hash_get(g_hashsounds, shader); + sample = (int)hash_get(g_hashsounds, shader, -1); if (sample < 0) { +#ifdef SERVER + error(sprintf("Sound_Speak: shader %s is not precached (SERVER)\n", shader)); +#else + error(sprintf("Sound_Speak: shader %s is not precached (CLIENT)\n", shader)); +#endif return; } @@ -379,9 +384,14 @@ Sound_PlayAt(vector pos, string shader) int sample; flag = 0; - sample = (int)hash_get(g_hashsounds, shader); + sample = (int)hash_get(g_hashsounds, shader, -1); if (sample < 0) { +#ifdef SERVER + error(sprintf("Sound_Speak: shader %s is not precached (SERVER)\n", shader)); +#else + error(sprintf("Sound_Speak: shader %s is not precached (CLIENT)\n", shader)); +#endif return; } @@ -481,9 +491,14 @@ Sound_Speak(entity target, string shader) int flag; int sample; - sample = (int)hash_get(g_hashsounds, shader); + sample = (int)hash_get(g_hashsounds, shader, -1); if (sample < 0) { +#ifdef SERVER + error(sprintf("Sound_Speak: shader %s is not precached (SERVER)\n", shader)); +#else + error(sprintf("Sound_Speak: shader %s is not precached (CLIENT)\n", shader)); +#endif return; }