Is there a better way to intercept ctwin and terwin radio commands?
PHP Code:
#include <sdktools>
#include <cstrike>
#define MAX_STR_LEN 128
...
public OnPluginStart()
{
// Um: RadioAudio
if ((g_umSendAudio = GetUserMessageId("SendAudio")) != INVALID_MESSAGE_ID)
HookUserMessage(g_umSendAudio, UserMsgSendAudio, true);
else
SetFailState("GetUserMessageId for SendAudio");
HookEvent("round_end", EventRoundEnd);
}
// No sound
public Action UserMsgSendAudio(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)
{
if (GetConVarInt(cvarRoundStartSounds) == 1)
{
char msg_str[MAX_STR_LEN];
BfReadString(bf, msg_str, sizeof(msg_str));
if (StrEqual(msg_str, "radio.go", false) || StrEqual(msg_str, "radio.locknload", false) || StrEqual(msg_str, "radio.moveout", false) || StrEqual(msg_str, "radio.letsgo", false))
return Plugin_Handled;
}
return Plugin_Continue;
}
public EventRoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
for (new i = 1; i < MaxClients; i++)
{
if (IsClientInGame(i) && !IsFakeClient(i))
{
StopSound(i, SNDCHAN_STATIC, "radio/ctwin.wav");
StopSound(i, SNDCHAN_STATIC, "radio/terwin.wav");
}
}
}