Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/core/managers/entity_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -313,9 +313,9 @@ void DetourFireOutputInternal(CEntityIOOutput* const pThis,
}
}

SndOpEventGuid_t EntityEmitSoundFilter(IRecipientFilter& filter, uint32 ent, const char* pszSound, float flVolume, float flPitch)
SndOpEventGuid_t EntityEmitSoundFilter(CBitRecipientFilter& filter, uint32 ent, const char* pszSound, float flVolume, float flPitch)
{
if (true)
if (!CBaseEntity_EmitSoundFilter)
{
CSSHARP_CORE_ERROR("[EntityManager][EmitSoundFilter] - Failed to emit a sound. Signature for \'CBaseEntity_EmitSoundFilter\' is "
"not found. The latest update may have broken it.");
Expand All @@ -325,7 +325,7 @@ SndOpEventGuid_t EntityEmitSoundFilter(IRecipientFilter& filter, uint32 ent, con
EmitSound_t params;
params.m_pSoundName = pszSound;
params.m_flVolume = flVolume;
params.m_nPitch = flPitch;
params.m_nPitch = flPitch; // not working, can't fix, i think the game abandon it

return CBaseEntity_EmitSoundFilter(filter, ent, params);
}
Expand Down
23 changes: 21 additions & 2 deletions src/core/managers/entity_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -232,10 +232,29 @@ struct SndOpEventGuid_t
{
SoundEventGuid_t m_nGuid;
uint64 m_hStackHash;
uint64 pad; // size might be incorrect
};

inline SndOpEventGuid_t(FASTCALL* CBaseEntity_EmitSoundFilter)(IRecipientFilter& filter, CEntityIndex ent, const EmitSound_t& params);
class CBitRecipientFilter
{
public:
CBitRecipientFilter() : m_Recipients(0), m_bInitMessage(false), m_nBufType(BUF_RELIABLE) {}
CBitRecipientFilter(uint64 recipients) : m_Recipients(recipients), m_bInitMessage(false), m_nBufType(BUF_RELIABLE) {}
virtual ~CBitRecipientFilter() {}
virtual bool IsInitMessage() { return m_bInitMessage; }
virtual NetChannelBufType_t GetType() { return m_nBufType; }
virtual uint64* GetRecipients() { return &m_Recipients; }

void AddRecipientsFromMask(uint64 mask) { m_Recipients = mask; }

private:
uint64 m_Recipients;
NetChannelBufType_t m_nBufType;
bool m_bInitMessage;
};

inline SndOpEventGuid_t(FASTCALL* CBaseEntity_EmitSoundFilter)(CBitRecipientFilter& filter, CEntityIndex ent, const EmitSound_t& params);

SndOpEventGuid_t
EntityEmitSoundFilter(IRecipientFilter& filter, uint32 ent, const char* pszSound, float flVolume = 1.0f, float flPitch = 1.0f);
EntityEmitSoundFilter(CBitRecipientFilter& filter, uint32 ent, const char* pszSound, float flVolume = 1.0f, float flPitch = 1.0f);
} // namespace counterstrikesharp
2 changes: 1 addition & 1 deletion src/scripting/natives/natives_entities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ SoundEventGuid_t EmitSoundFilter(ScriptContext& script_context)
auto volume = script_context.GetArgument<float>(3);
auto pitch = script_context.GetArgument<float>(4);

CRecipientFilter filter{};
CBitRecipientFilter filter{};
filter.AddRecipientsFromMask(filtermask);

SndOpEventGuid_t ret = EntityEmitSoundFilter(filter, ent, sound, volume, pitch);
Expand Down
Loading