Untitled diff

생성일 비교 결과 만료 없음
1 삭제
193 행
18 추가
210 행
/**
/**
* vim: set ts=4 :
* vim: set ts=4 :
* =============================================================================
* =============================================================================
* EmitSoundAny
* EmitSoundAny
* Play sounds in a cross-game friendly way CS:GO and DOTA2 friendly way.
* Play sounds in a cross-game friendly way CS:GO and DOTA2 friendly way.
*
*
* EmitSoundAny (C)2014 AlliedModders and Powerlord (Ross Bemrose)
* EmitSoundAny (C)2014 AlliedModders and Powerlord (Ross Bemrose)
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
* =============================================================================
* =============================================================================
*
*
* This program is free software; you can redistribute it and/or modify it under
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the
* the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation.
* Free Software Foundation.
*
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* details.
*
*
* You should have received a copy of the GNU General Public License along with
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
* this program. If not, see <http://www.gnu.org/licenses/>.
*
*
* As a special exception, AlliedModders LLC gives you permission to link the
* As a special exception, AlliedModders LLC gives you permission to link the
* code of this program (as well as its derivative works) to "Half-Life 2," the
* code of this program (as well as its derivative works) to "Half-Life 2," the
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
* by the Valve Corporation. You must obey the GNU General Public License in
* by the Valve Corporation. You must obey the GNU General Public License in
* all respects for all other code used. Additionally, AlliedModders LLC grants
* all respects for all other code used. Additionally, AlliedModders LLC grants
* this exception to all derivative works. AlliedModders LLC defines further
* this exception to all derivative works. AlliedModders LLC defines further
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
* or <http://www.sourcemod.net/license.php>.
* or <http://www.sourcemod.net/license.php>.
*
*
* Version: 1.0.2
* Version: 1.0.3
*/
*/
#if defined _emitsoundany_included
#if defined _emitsoundany_included
#endinput
#endinput
#endif
#endif
#define _emitsoundany_included
#define _emitsoundany_included


#include <sdktools>
#include <sdktools>


static bool:g_bCheckedEngine = false;
static bool:g_bCheckedEngine = false;
static bool:g_bNeedsFakePrecache = false;
static bool:g_bNeedsFakePrecache = false;


stock static EmitSoundCheckEngineVersion()
stock static EmitSoundCheckEngineVersion()
{
{
if (g_bCheckedEngine)
if (g_bCheckedEngine)
{
{
return;
return;
}
}


new EngineVersion:engVersion = GetEngineVersion();
new EngineVersion:engVersion = GetEngineVersion();
if (engVersion == Engine_CSGO || engVersion == Engine_DOTA)
if (engVersion == Engine_CSGO || engVersion == Engine_DOTA)
{
{
g_bNeedsFakePrecache = true;
g_bNeedsFakePrecache = true;
}
}
g_bCheckedEngine = true;
g_bCheckedEngine = true;
}
}


stock static bool:FakePrecacheSoundEx( const String:szPath[] )
stock static bool:FakePrecacheSoundEx( const String:szPath[] )
{
{
decl String:szPathStar[PLATFORM_MAX_PATH];
decl String:szPathStar[PLATFORM_MAX_PATH];
Format(szPathStar, sizeof(szPathStar), "*%s", szPath);
Format(szPathStar, sizeof(szPathStar), "*%s", szPath);
AddToStringTable( FindStringTable( "soundprecache" ), szPathStar );
AddToStringTable( FindStringTable( "soundprecache" ), szPathStar );
return true;
return true;
}
}


stock bool:PrecacheSoundAny( const String:szPath[], bool:preload=false)
stock bool:PrecacheSoundAny( const String:szPath[], bool:preload=false)
{
{
EmitSoundCheckEngineVersion();
EmitSoundCheckEngineVersion();
if (g_bNeedsFakePrecache)
if (g_bNeedsFakePrecache)
{
{
return FakePrecacheSoundEx(szPath);
return FakePrecacheSoundEx(szPath);
}
}
else
else
{
{
return PrecacheSound(szPath, preload);
return PrecacheSound(szPath, preload);
}
}
}
}


stock EmitSoundAny(const clients[],
stock EmitSoundAny(const clients[],
numClients,
numClients,
const String:sample[],
const String:sample[],
entity = SOUND_FROM_PLAYER,
entity = SOUND_FROM_PLAYER,
channel = SNDCHAN_AUTO,
channel = SNDCHAN_AUTO,
level = SNDLEVEL_NORMAL,
level = SNDLEVEL_NORMAL,
flags = SND_NOFLAGS,
flags = SND_NOFLAGS,
Float:volume = SNDVOL_NORMAL,
Float:volume = SNDVOL_NORMAL,
pitch = SNDPITCH_NORMAL,
pitch = SNDPITCH_NORMAL,
speakerentity = -1,
speakerentity = -1,
const Float:origin[3] = NULL_VECTOR,
const Float:origin[3] = NULL_VECTOR,
const Float:dir[3] = NULL_VECTOR,
const Float:dir[3] = NULL_VECTOR,
bool:updatePos = true,
bool:updatePos = true,
Float:soundtime = 0.0)
Float:soundtime = 0.0)
{
{
EmitSoundCheckEngineVersion();
EmitSoundCheckEngineVersion();


decl String:szSound[PLATFORM_MAX_PATH];
decl String:szSound[PLATFORM_MAX_PATH];