97 lines
2.1 KiB
SourcePawn
97 lines
2.1 KiB
SourcePawn
/**
|
|
* ====================
|
|
* Zombie:Reloaded
|
|
* File: ambience.inc
|
|
* Author: Greyscale
|
|
* ====================
|
|
*/
|
|
|
|
new bool:soundValid = false;
|
|
|
|
new Handle:tAmbience = INVALID_HANDLE;
|
|
|
|
LoadAmbienceData()
|
|
{
|
|
new bool:ambience = GetConVarBool(gCvars[CVAR_AMBIENCE]);
|
|
if (!ambience)
|
|
{
|
|
return;
|
|
}
|
|
|
|
decl String:sound[64];
|
|
GetConVarString(gCvars[CVAR_AMBIENCE_FILE], sound, sizeof(sound));
|
|
Format(sound, sizeof(sound), "sound/%s", sound);
|
|
|
|
soundValid = FileExists(sound, true);
|
|
|
|
if (soundValid)
|
|
{
|
|
AddFileToDownloadsTable(sound);
|
|
}
|
|
else
|
|
{
|
|
ZR_LogMessage("Ambient sound load failed", sound);
|
|
}
|
|
}
|
|
|
|
RestartAmbience()
|
|
{
|
|
if (tAmbience != INVALID_HANDLE)
|
|
{
|
|
CloseHandle(tAmbience);
|
|
}
|
|
|
|
CreateTimer(0.0, AmbienceLoop, _, TIMER_FLAG_NO_MAPCHANGE);
|
|
}
|
|
|
|
public Action:AmbienceLoop(Handle:timer)
|
|
{
|
|
new bool:ambience = GetConVarBool(gCvars[CVAR_AMBIENCE]);
|
|
|
|
if (!ambience || !soundValid)
|
|
{
|
|
return;
|
|
}
|
|
|
|
decl String:sound[64];
|
|
GetConVarString(gCvars[CVAR_AMBIENCE_FILE], sound, sizeof(sound));
|
|
|
|
EmitAmbience(sound);
|
|
|
|
new Float:delay = GetConVarFloat(gCvars[CVAR_AMBIENCE_LENGTH]);
|
|
tAmbience = CreateTimer(delay, AmbienceLoop, _, TIMER_FLAG_NO_MAPCHANGE);
|
|
}
|
|
|
|
StopAmbience()
|
|
{
|
|
new bool:ambience = GetConVarBool(gCvars[CVAR_AMBIENCE]);
|
|
|
|
if (!ambience)
|
|
{
|
|
return;
|
|
}
|
|
|
|
decl String:sound[64];
|
|
GetConVarString(gCvars[CVAR_AMBIENCE_FILE], sound, sizeof(sound));
|
|
|
|
new maxplayers = GetMaxClients();
|
|
for (new x = 1; x <= maxplayers; x++)
|
|
{
|
|
if (!IsClientInGame(x))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
StopSound(x, SNDCHAN_AUTO, sound);
|
|
}
|
|
}
|
|
|
|
EmitAmbience(const String:sound[])
|
|
{
|
|
PrecacheSound(sound);
|
|
|
|
StopAmbience();
|
|
|
|
new Float:volume = GetConVarFloat(gCvars[CVAR_AMBIENCE_VOLUME]);
|
|
EmitSoundToAll(sound, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, volume, SNDPITCH_NORMAL, -1, NULL_VECTOR, NULL_VECTOR, true, 0.0);
|
|
} |