diff --git a/core/MenuStyle_Base.cpp b/core/MenuStyle_Base.cpp index 6c966f1e..34ad88ff 100644 --- a/core/MenuStyle_Base.cpp +++ b/core/MenuStyle_Base.cpp @@ -331,6 +331,9 @@ void BaseMenuStyle::ClientPressedKey(int client, unsigned int key_press) ATTN_NORM, 0, PITCH_NORM, +#if SOURCE_ENGINE == SE_ORANGEBOXVALVE + 0, +#endif &pos); } } diff --git a/extensions/sdktools/vnatives.cpp b/extensions/sdktools/vnatives.cpp index c33a9b19..d078c05e 100644 --- a/extensions/sdktools/vnatives.cpp +++ b/extensions/sdktools/vnatives.cpp @@ -528,7 +528,12 @@ static cell_t SlapPlayer(IPluginContext *pContext, const cell_t *params) CellRecipientFilter rf; rf.SetToReliable(true); rf.Initialize(player_list, total_players); + +#if SOURCE_ENGINE == SE_ORANGEBOXVALVE + engsound->EmitSound(rf, params[1], CHAN_AUTO, sound_name, VOL_NORM, ATTN_NORM, 0, PITCH_NORM, 0, &pos); +#else engsound->EmitSound(rf, params[1], CHAN_AUTO, sound_name, VOL_NORM, ATTN_NORM, 0, PITCH_NORM, &pos); +#endif } } diff --git a/extensions/sdktools/vsound.cpp b/extensions/sdktools/vsound.cpp index 1c054e31..2da12856 100644 --- a/extensions/sdktools/vsound.cpp +++ b/extensions/sdktools/vsound.cpp @@ -33,8 +33,13 @@ #include SH_DECL_HOOK8_void(IVEngineServer, EmitAmbientSound, SH_NOATTRIB, 0, int, const Vector &, const char *, float, soundlevel_t, int, int, float); -SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 0, IRecipientFilter &, int, int, const char *, float, float, int, int, const Vector *, const Vector *, CUtlVector *, bool, float, int); +#if SOURCE_ENGINE == SE_ORANGEBOXVALVE +SH_DECL_HOOK15_void(IEngineSound, EmitSound, SH_NOATTRIB, 0, IRecipientFilter &, int, int, const char *, float, float, int, int, int, const Vector *, const Vector *, CUtlVector *, bool, float, int); +SH_DECL_HOOK15_void(IEngineSound, EmitSound, SH_NOATTRIB, 1, IRecipientFilter &, int, int, const char *, float, soundlevel_t, int, int, const Vector *, const Vector *, CUtlVector *, bool, float, int); +#else +SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 0, IRecipientFilter &, int, int, const char *, float, float, int, int, int, const Vector *, const Vector *, CUtlVector *, bool, float, int); SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 1, IRecipientFilter &, int, int, const char *, float, soundlevel_t, int, int, const Vector *, const Vector *, CUtlVector *, bool, float, int); +#endif bool g_InSoundHook = false; @@ -252,10 +257,17 @@ void SoundHooks::OnEmitAmbientSound(int entindex, const Vector &pos, const char } } +#if SOURCE_ENGINE == SE_ORANGEBOXVALVE +void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample, + float flVolume, soundlevel_t iSoundlevel, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin, + const Vector *pDirection, CUtlVector *pUtlVecOrigins, bool bUpdatePositions, + float soundtime, int speakerentity) +#else void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample, float flVolume, soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin, const Vector *pDirection, CUtlVector *pUtlVecOrigins, bool bUpdatePositions, float soundtime, int speakerentity) +#endif { SoundHookIter iter; IPluginFunction *pFunc; @@ -293,6 +305,15 @@ void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChann { CellRecipientFilter crf; crf.Initialize(players, size); +#if SOURCE_ENGINE == SE_ORANGEBOXVALVE + RETURN_META_NEWPARAMS( + MRES_IGNORED, + static_cast *, bool, float, int)>(&IEngineSound::EmitSound), + (crf, iEntIndex, iChannel, buffer, flVolume, iSoundlevel, iFlags, iPitch, iSpecialDSP, pOrigin, + pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity) + ); +#else RETURN_META_NEWPARAMS( MRES_IGNORED, static_cast *pUtlVecOrigins, bool bUpdatePositions, + float soundtime, int speakerentity) +#else void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample, float flVolume, float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin, const Vector *pDirection, CUtlVector *pUtlVecOrigins, bool bUpdatePositions, float soundtime, int speakerentity) +#endif { SoundHookIter iter; IPluginFunction *pFunc; @@ -347,6 +376,15 @@ void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChan { CellRecipientFilter crf; crf.Initialize(players, size); +#if SOURCE_ENGINE == SE_ORANGEBOXVALVE + RETURN_META_NEWPARAMS( + MRES_IGNORED, + static_cast *, bool, float, int)>(&IEngineSound::EmitSound), + (crf, iEntIndex, iChannel, buffer, flVolume, SNDLVL_TO_ATTN(static_cast(sndlevel)), + iFlags, iPitch, iSpecialDSP, pOrigin, pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity) + ); +#else RETURN_META_NEWPARAMS( MRES_IGNORED, static_cast(sndlevel)), iFlags, iPitch, pOrigin, pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity) ); +#endif } } } @@ -547,6 +586,7 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params) player[0] = cl_array[i]; crf.Reset(); crf.Initialize(player, 1); +#if SOURCE_ENGINE == SE_ORANGEBOXVALVE if (g_InSoundHook) { SH_CALL(enginesoundPatch, @@ -585,8 +625,92 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params) soundtime, speakerentity); } +#else + if (g_InSoundHook) + { + SH_CALL(enginesoundPatch, + static_cast *, bool, float, int)> + (&IEngineSound::EmitSound)) + (crf, + player[0], + channel, + sample, + vol, + (soundlevel_t)level, + flags, + pitch, + 0, + pOrigin, + pDir, + pOrigVec, + updatePos, + soundtime, + speakerentity); + } + else + { + engsound->EmitSound(crf, + player[0], + channel, + sample, + vol, + (soundlevel_t)level, + flags, + pitch, + 0, + pOrigin, + pDir, + pOrigVec, + updatePos, + soundtime, + speakerentity); + } +#endif } } else { +#if SOURCE_ENGINE == SE_ORANGEBOXVALVE + if (g_InSoundHook) + { + SH_CALL(enginesoundPatch, + static_cast *, bool, float, int)> + (&IEngineSound::EmitSound)) + (crf, + entity, + channel, + sample, + vol, + (soundlevel_t)level, + flags, + pitch, + 0, + pOrigin, + pDir, + pOrigVec, + updatePos, + soundtime, + speakerentity); + } + else + { + engsound->EmitSound(crf, + entity, + channel, + sample, + vol, + (soundlevel_t)level, + flags, + pitch, + 0, + pOrigin, + pDir, + pOrigVec, + updatePos, + soundtime, + speakerentity); + } +#else if (g_InSoundHook) { SH_CALL(enginesoundPatch, @@ -625,6 +749,7 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params) soundtime, speakerentity); } +#endif } return 1; diff --git a/extensions/sdktools/vsound.h b/extensions/sdktools/vsound.h index 0536b558..a11ef219 100644 --- a/extensions/sdktools/vsound.h +++ b/extensions/sdktools/vsound.h @@ -52,6 +52,16 @@ public: bool RemoveHook(int type, IPluginFunction *pFunc); void OnEmitAmbientSound(int entindex, const Vector &pos, const char *samp, float vol, soundlevel_t soundlevel, int fFlags, int pitch, float delay); +#if SOURCE_ENGINE == SE_ORANGEBOXVALVE + void OnEmitSound(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume, + soundlevel_t iSoundlevel, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin, + const Vector *pDirection, CUtlVector *pUtlVecOrigins, bool bUpdatePositions, + float soundtime, int speakerentity); + void OnEmitSound2(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume, + float flAttenuation, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin, + const Vector *pDirection, CUtlVector *pUtlVecOrigins, bool bUpdatePositions, + float soundtime, int speakerentity); +#else void OnEmitSound(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume, soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin, const Vector *pDirection, CUtlVector *pUtlVecOrigins, bool bUpdatePositions, @@ -60,6 +70,7 @@ public: float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin, const Vector *pDirection, CUtlVector *pUtlVecOrigins, bool bUpdatePositions, float soundtime, int speakerentity); +#endif private: size_t _FillInPlayers(int *pl_array, IRecipientFilter *pFilter); void _IncRefCounter(int type);