StopSound: final fix for !stopmusic ?

This commit is contained in:
BotoX 2017-04-19 19:55:18 +02:00
parent be756398c4
commit 77c983d265

View File

@ -166,19 +166,6 @@ public void Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast
CPrintToChat(client, "%t %t", "Chat Prefix", "Map music disabled");
}
public void DelayedStopForEntity(DataPack pack)
{
pack.Reset();
char sSample[PLATFORM_MAX_PATH];
pack.ReadString(sSample, sizeof(sSample));
int entity = pack.ReadCell();
CloseHandle(pack);
StopSoundFromEntity(sSample, entity);
}
public Action Command_StopSound(int client, int args)
{
if(client == 0)
@ -670,11 +657,27 @@ public Action Hook_AmbientSound(char sample[PLATFORM_MAX_PATH], int &entity, flo
g_MapMusic.SetString(sEntity, sample, true);
DataPack pack = new DataPack();
pack.WriteString(sample);
pack.WriteCell(entity);
// Check which clients need to be excluded.
int[] newClients = new int[MaxClients];
int newTotal = 0;
bool bEmitNew = false;
RequestFrame(DelayedStopForEntity, pack);
for(int i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i))
continue;
if(!g_bStopMapMusic[i])
newClients[newTotal++] = i;
else
bEmitNew = true;
}
if(bEmitNew && newTotal)
{
EmitSound(newClients, newTotal, sample, entity, SNDCHAN_STATIC, level, flags, volume, pitch);
return Plugin_Handled;
}
return Plugin_Continue;
}