Проигрывание/Изменение звуков
| |
_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);
Код 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; - вы изменили какие-то параметры, например громкость и тд.
Наверно есть какие-то звуки, которыми нельзя так манипулировать, нужно тестировать разные варианты, чтобы узнать.
|
|
| |
Naykon
|
Дата: Воскресенье, 26.02.2012, 18:34:33 | Сообщение # 2 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Пример пожалуйста проигрывания звука слышного всем, не перебивается другими звуками при определенном событии... к примеру RoundStart или say... Так трудно представить какой Длины код получиться)))))))))
|
|
| |
_wS_
|
Дата: Воскресенье, 26.02.2012, 19:17:17 | Сообщение # 3 |
|
Хм, это же просто, и подобный код очень часто используется (цикл):
Код 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 [ +/- ]
|
|
Народ умаляю вас дайте код для проигрывания звука взрыва, не как не могу прикрутить к плагину мины, там все есть а вот звука нет, когда кто то на ней подрывается тупо тишина, я вас очень прошу помогите пожалуйста, я уже все перелопатил, ради этого научился чучуть писать.
Гости не могут скачивать файлы
|
|
|
| |
volodya
|
Дата: Среда, 20.02.2013, 15:03:24 | Сообщение # 6 |
|
Сообщений: 14
Репутация: 0 [ +/- ]
|
|
Как сделать чтоб один раз за раунд звук проигрывался?
|
|
| |
dron216
|
Дата: Среда, 20.02.2013, 16:44:56 | Сообщение # 7 |
|
Сообщений: 151
Репутация: 18 [ +/- ]
|
|
Lik, пробуй.Добавлено (20.02.2013, 16:44:56) ---------------------------------------------
Цитата (volodya) Как сделать чтоб один раз за раунд звук проигрывался?
Что ты имеешь ввиду?
Гости не могут скачивать файлы
|
|
|
| |
BeatMaker_R1KO_
|
Дата: Четверг, 18.07.2013, 19:53:59 | Сообщение # 8 |
|
Сообщений: 60
Репутация: 0 [ +/- ]
|
|
Как можно узнать длину звука ?
|
|
| |
TEIN
|
Дата: Пятница, 19.07.2013, 09:36:34 | Сообщение # 9 |
|
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
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 [ +/- ]
|
|
и всё таки (Возможно ли проиграть звук в определенном радиусе ?) и как это сделать??
|
|
| |
TEIN
|
Дата: Среда, 27.11.2013, 17:43:45 | Сообщение # 12 |
|
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
цикл -> 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 |
|
Сообщений: 141
Репутация: 1 [ +/- ]
|
|
Вопрос есть кусочек кода : Код #define sound_freeze "physics/glass/glass_impact_bullet4.wav" ... EmitSoundToClient(... , sound_freeze, ...); А есть такой : Код ... EmitSoundToClient(... , "physics/glass/glass_impact_bullet4.wav", ...); Вопрос, где лучше использовать #define (плюсы и минусы). Смотря исходники вижу и такой вариант и такой не знаю , что лучше в каких то целях своих.
|
|
| |
|