Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 212»
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Проигрывание/Изменение звуков
Проигрывание/Изменение звуков
_wS_ Дата: Воскресенье, 26.02.2012, 11:16:17 | Сообщение # 1
Есть несколько вариантов, как можно проиграть звук.

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

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

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

Code
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); - Объект издает звук для всех игроков

Code
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 игрока.

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

Code
#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; - вы изменили какие-то параметры, например громкость и тд.

Наверно есть какие-то звуки, которыми нельзя так манипулировать, нужно тестировать разные варианты, чтобы узнать.
 
Naykon Дата: Воскресенье, 26.02.2012, 18:34:33 | Сообщение # 2
Сообщений: 439
Репутация: -5 [ +/- ]
Пример пожалуйста проигрывания звука слышного всем, не перебивается другими звуками при определенном событии... к примеру RoundStart или say... Так трудно представить какой Длины код получиться)))))))))
 
_wS_ Дата: Воскресенье, 26.02.2012, 19:17:17 | Сообщение # 3
Хм, это же просто, и подобный код очень часто используется (цикл):

Code
for (new i = 1; i <= MaxClients; i++)
{
     if (IsClientInGame(i)) ClientCommand(i, "playgamesound buttons/blip2.wav");
}
 
sssw Дата: Воскресенье, 18.03.2012, 03:06:42 | Сообщение # 4
Сообщений: 123
Репутация: 14 [ +/- ]
EmitAmbientSound не нравиться тем что определенный звук могут услышать те для кого он не предназначен.
(Наверно рождается точка(Entity) звука в голове)
 
Lik Дата: Пятница, 20.04.2012, 09:08:43 | Сообщение # 5
Сообщений: 2
Репутация: 0 [ +/- ]
Народ умаляю вас дайте код для проигрывания звука взрыва, не как не могу прикрутить к плагину мины, там все есть а вот звука нет, когда кто то на ней подрывается тупо тишина, я вас очень прошу помогите пожалуйста, я уже все перелопатил, ради этого научился чучуть писать.
plach

Прикрепления: tripmines.sp(9Kb)
 
volodya Дата: Среда, 20.02.2013, 15:03:24 | Сообщение # 6
Сообщений: 14
Репутация: 0 [ +/- ]
Как сделать чтоб один раз за раунд звук проигрывался?
 
dron216 Дата: Среда, 20.02.2013, 16:44:56 | Сообщение # 7
Сообщений: 152
Репутация: 18 [ +/- ]
Lik, пробуй.

Добавлено (20.02.2013, 16:44:56)
---------------------------------------------

Цитата (volodya)
Как сделать чтоб один раз за раунд звук проигрывался?


Что ты имеешь ввиду?

Прикрепления: 2415902.sp(9Kb)
 
BeatMaker_R1KO_ Дата: Четверг, 18.07.2013, 19:53:59 | Сообщение # 8
Сообщений: 60
Репутация: 0 [ +/- ]
Как можно узнать длину звука ?
 
TEIN Дата: Пятница, 19.07.2013, 09:36:34 | Сообщение # 9
Сообщений: 551
Репутация: 73 [ +/- ]
http://forums.alliedmods.net/showthread.php?t=105816
 
rasav Дата: Понедельник, 29.07.2013, 08:58:22 | Сообщение # 10
Сообщений: 58
Репутация: 0 [ +/- ]
Цитата (_wS_)
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 - Альтернативное время воспроизведения звука


Возможно ли проиграть эту функцию в определенном радиусе ?
 
«SeReGa»☆ Дата: Вторник, 26.11.2013, 19:18:44 | Сообщение # 11
Сообщений: 395
Репутация: 37 [ +/- ]
и всё таки (Возможно ли проиграть звук в определенном радиусе ?) и как это сделать?? vopros
 
TEIN Дата: Среда, 27.11.2013, 17:43:45 | Сообщение # 12
Сообщений: 551
Репутация: 73 [ +/- ]
цикл -> GetVectorDistance
 
«SeReGa»☆ Дата: Четверг, 28.11.2013, 23:45:55 | Сообщение # 13
Сообщений: 395
Репутация: 37 [ +/- ]
Цитата TEIN ()
цикл -> GetVectorDistance


И куда мне это прописать или как его использовать?


Сообщение отредактировал «SeReGa»☆ - Суббота, 30.11.2013, 23:28:00
 
Loco Дата: Воскресенье, 26.01.2014, 12:31:44 | Сообщение # 14
Сообщений: 42
Репутация: 0 [ +/- ]
Помогите поменять звук оружия пожалуйста! Выдает ошибку.
Код:
Код
public Action:PlaySound(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags)
{
    new Owner = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity");
    if(Owner > 0 && Owner <= MaxClients && IsCustom[Owner])
    {
     if(StrEqual(sample, "weapons/knife/knife_hitwall1.wav"))
     {
      EmitSoundToAll("mymusic/knife.wav", Owner, channel, level, flags, volume);
      return Plugin_Handled;
     }
}
}

Выдает ошибку:
Цитата

[SM] [0] Line 111, C:\***\scripting\test_3.sp::PlaySound()
[SM] Native "GetEntPropEnt" reported: Property "m_hOwnerEntity" not found (entity 134/cs_ragdoll)


Сообщение отредактировал Loco - Воскресенье, 26.01.2014, 12:32:33
 
Vitaminoz Дата: Воскресенье, 02.02.2014, 21:36:32 | Сообщение # 15
Сообщений: 135
Репутация: 1 [ +/- ]
Вопрос есть кусочек кода :
Код
  #define sound_freeze "physics/glass/glass_impact_bullet4.wav"
   ...
   EmitSoundToClient(... , sound_freeze, ...);

А есть такой :
Код
  ...
   EmitSoundToClient(... , "physics/glass/glass_impact_bullet4.wav", ...);

Вопрос, где лучше использовать #define (плюсы и минусы).
Смотря исходники вижу и такой вариант и такой не знаю , что лучше в каких то целях своих.
 
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Проигрывание/Изменение звуков
Страница 1 из 212»
Поиск: