Например, вы хотите чтобы на карте de_dust2, после старта раунда, играл один звук, а на карте de_nuke другой. Это легко устроить с помощью глобальных переменных, хотя, можно и без них. Ниже примеры.
Код
#include <sourcemod>
#include <sdktools_sound>
public OnPluginStart()
{
HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
}
public round_start(Handle:event, const String:name[], bool:dontBroadcast)
{
decl String:MaP[75];
GetCurrentMap(MaP, 75);
if (StrEqual(MaP, "de_dust2")) EmitSoundToAll("1.mp3");
else if (StrEqual(MaP, "de_nuke")) EmitSoundToAll("1.mp3");
}
Это совсем просто, обычные условия: 'если' и 'то'.
Если у вас много карт и разные звуки для них, то можно сделать так:
Код
#include <sourcemod>
#include <sdktools_sound>
#define MAPS_NUM 3
new String:Maps[MAPS_NUM][] =
{
"de_dust2",
"de_nuke",
"de_tides"
};
new String:Sounds[MAPS_NUM][] =
{
"1.mp3",
"2.mp3",
"3.mp3"
};
public OnPluginStart()
{
HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
}
public round_start(Handle:event, const String:name[], bool:dontBroadcast)
{
decl String:MaP[75];
GetCurrentMap(MaP, 75);
for (new i = 0; i < MAPS_NUM; i++)
{
if (StrEqual(MaP, Maps[i]))
{
EmitSoundToAll(Sounds[i]);
break;
}
}
}
На de_dust2 будет проигрываться 1.mp3, на de_nuke 2.mp3, на de_tides 3.mp3
Можно и так:
Код
#include <sourcemod>
#include <sdktools_sound>
new String:Sound[75];
public OnPluginStart()
{
HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
}
public OnMapStart()
{
decl String:MaP[75];
GetCurrentMap(MaP, 75);
if (StrEqual(MaP, "de_dust2")) Sound = "1.mp3";
else if (StrEqual(MaP, "de_cbble")) Sound = "2.mp3";
else Sound = "-";
}
public round_start(Handle:event, const String:name[], bool:dontBroadcast)
{
if (!StrEqual(Sound, "-")) EmitSoundToAll(Sound);
}