[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Проигрывание/Изменение звуков (Взято с world-source.ru)
Проигрывание/Изменение звуков
rootДата: Воскресенье, 03.02.2013, 01:31 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Есть несколько вариантов, как можно проиграть звук. 

// Звук будет проигран от начала до конца, и ничто его не перебьет, кроме старта нового раунда 
// Так могут играть несколько звуков одновременно 
ClientCommand(client, "playgamesound buttons/blip2.wav"); 

// Звук может быть перебит другим звуком (прошлый не играет, только новый) 
ClientCommand(client, "play buttons/blip2.wav"); 

EmitAmbientSound(1, 2, 3, 4, 5, 6, 7, 8); 

Код
1 const String:name[] - звук  
2 const Float:pos[3] - координаты, где будет проигран  
3 entity = SOUND_FROM_WORLD - индекс объекта, который издает звук  
4 level = SNDLEVEL_NORMAL - уровень звучания от 0 до 255  
5 flags = SND_NOFLAGS - флаги  
6 Float:vol = SNDVOL_NORMAL - громкость от 0.0 до 1.0  
7 pitch = SNDPITCH_NORMAL - шаг от 0 до 255  
8 Float:delay = 0.0 - задержка в секундах перед проигрыванием


EmitSoundToAll(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); - Объект издает звук для всех игроков 

Код
1 const String:sample[] - звук  
2 entity = SOUND_FROM_PLAYER - кто издает  
3 channel = SNDCHAN_AUTO - канал  
4 level = SNDLEVEL_NORMAL  
5 flags = SND_NOFLAGS  
6 Float:volume = SNDVOL_NORMAL  
7 pitch = SNDPITCH_NORMAL  
8 speakerentity = -1 - неизвестное  
9 const Float:origin[3] = NULL_VECTOR  
10 const Float:dir[3] = NULL_VECTOR - направление звука  
11 bool:updatePos = true - неизвестное  
12 Float:soundtime = 0.0 - Альтернативное время воспроизведения звука


EmitSoundToClient(client, <те же 12 параметров, что и выше>); - Звук для 1 игрока. 

Еще есть возможность изменять/блокировать стандартные звуки в игре. 
Если заложник ранен, он не будет кричать: 

Код
#include <sourcemod>  
#include <sdktools>  

public OnPluginStart()  
{  
      AddNormalSoundHook(NormalSHook:HookSound_Func);  
}  

public Action:HookSound_Func(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags)  
{  
      //PrintToChatAll("sample = %s", sample);  

      if (StrContains(sample, "hostage/hpain") != -1) return Plugin_Stop;  
      return Plugin_Continue;  
}


return Plugin_Stop; - запретить звук 
return Plugin_Continue; - разрешить, чтобы проигрывался 
return Plugin_Changed; - вы изменили какие-то параметры, например громкость и тд. 

Наверно есть какие-то звуки, которыми нельзя так манипулировать, нужно тестировать разные варианты, чтобы узнать.


Цитата
Пример пожалуйста проигрывания звука слышного всем, не перебивается другими звуками при определенном событии... к примеру RoundStart или say... Так трудно представить какой Длины код получиться)))))))))

Цитата
Хм, это же просто, и подобный код очень часто используется (цикл):
 

Код
for (new i = 1; i <= MaxClients; i++)  
{  
      if (IsClientInGame(i)) ClientCommand(i, "playgamesound buttons/blip2.wav");  
}
 
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Проигрывание/Изменение звуков (Взято с world-source.ru)
  • Страница 1 из 1
  • 1
Поиск: