XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
makkad

offline
Опыт: 21,880
Активность:
Проигрывание нескольких одинаковых звуков через малый промежуток времени
Цель: Проиграть несколько однотипных звуков в разных точках через маленький отрезок времени. (конкретнее звук из списка в редакторе звуков... в моём примере LightningBolt1.wav)
Что я делал:
  • В редакторе для искомого файла сделал ''Использовать как звук''.
  • Создал тригер.
function Action_Sound takes nothing returns nothing
local sound soundHandle
local real x=GetRandomReal(-100,100)
local real y=GetRandomReal(-100,100)
set soundHandle = CreateSound("LightningBolt1.wav", false, true, true, 12700, 12700, "")
call SetSoundPosition(soundHandle,x,y, 0)
call SetSoundVolume(soundHandle, 125)
call StartSound(soundHandle)
set soundHandle=null
endfunction

function Trig_gg_trg_Sound_Actions takes nothing returns nothing
local timer t=CreateTimer()
call TimerStart(t,0.5, true, function Action_Sound)
set t=null
endfunction

function InitTrig_Sound takes nothing returns nothing
    set gg_trg_Sound = CreateTrigger(  )
    call TriggerRegisterTimerEventSingle( gg_trg_Sound, 3 )
    call TriggerAddAction( gg_trg_Sound, function Trig_gg_trg_Sound_Actions )
endfunction
Вообще ничего не проигрывается в центре карты через 3 секунды.
P.S Более того, тут вроде утечка (саунд не удаляется после проигрывания). Как её лучше исправить?

Отредактировано makkad, 07.03.2011 в 05:44.
Старый 07.03.2011, 05:17
J64_

offline
Опыт: 4,724
Активность:
Юзай статичный звук. Ну или killsoundwhendone юзай, НО это вызывает утечки...
Старый 07.03.2011, 06:17
Hanabishi
COOL STATUS
offline
Опыт: отключен
makkad, я испоьзую вот такую конструкцию
function normal_sound takes string s, boolean is3d, real x, real y returns nothing
    local sound snd = CreateSound(s, false, is3d, true, 10, 10, "CombatSoundsEAX")
    call SetSoundChannel(snd, 5)
    call SetSoundVolume(snd, 127)
    call SetSoundPitch(snd, 1)
    if 3d==true then
        call SetSoundDistances(snd, 600, 10000)
        call SetSoundDistanceCutoff(snd, 2100)
        call SetSoundConeAngles(snd, 0.0, 0.0, 127)
        call SetSoundConeOrientation(snd, 0.0, 0.0, 0.0)
        call SetSoundPosition(snd, x, y, 50)
    endif
    call StartSound(snd)
    call KillSoundWhenDone(snd)
    set snd = null
endfunction
Старый 07.03.2011, 09:22
makkad

offline
Опыт: 21,880
Активность:
Hanabishi:
makkad, я испоьзую вот такую конструкцию
Cпасибо. Так работает. Хотя отмечу, что мне надо было вводить полный путь к файлу.
 call normal_sound("Doodads\\Cinematic\\LightningBolt\\LightningBolt1.wav",true,x,y)
Старый 07.03.2011, 15:20
Hanabishi
COOL STATUS
offline
Опыт: отключен
мне надо было вводить полный путь к файлу
естественно, по другому и быть не может
Старый 07.03.2011, 15:29
makkad

offline
Опыт: 21,880
Активность:
Проверил на утечки. Похоже появляются...
Старый 07.03.2011, 15:47
Hanabishi
COOL STATUS
offline
Опыт: отключен
makkad, хендл звука обнуляется, а других здесь нет
Старый 07.03.2011, 16:02
makkad

offline
Опыт: 21,880
Активность:
Hanabishi:
makkad, хендл звука обнуляется, а других здесь нет
Ну в теории может и так... но вот тебе конкретно карта. Там каждые 0.75 сек. создаётся звук длящейся 3 сек. Итого одновременно играют только 4 звука.... но вот хандл объектов увеличивается безгранично.
Прикрепленные файлы
Тип файла: w3m SoundExample.w3m (17.6 Кбайт, 7 просмотров )
Старый 07.03.2011, 16:13
Hanabishi
COOL STATUS
offline
Опыт: отключен
да, вызывает утечку в 1 ячейку, но другого способа я не знаю(
Старый 07.03.2011, 16:59
makkad

offline
Опыт: 21,880
Активность:
Hanabishi:
да, вызывает утечку в 1 ячейку, но другого способа я не знаю(
Может через ''Заводного пингвина''?
Старый 07.03.2011, 17:08
Elf_Stratigo

offline
Опыт: 4,699
Активность:
makkad:
StartSound(soundHandle)
может привести к десинку клиента, если у клиента нет звука
"LightningBolt1.wav"
а у ведущей машины - есть
у близов же не зря там стоит проверка, не null ли звук
Старый 07.03.2011, 17:23
J64_

offline
Опыт: 4,724
Активность:
Говорю же делай статичный звук и вопроизводи его кода надо ну или сделай сис-му звуков...
Старый 07.03.2011, 23:41
makkad

offline
Опыт: 21,880
Активность:
AdamanTX:
Говорю же делай статичный звук и вопроизводи его кода надо ну или сделай сис-му звуков...
Я бы с радостью, но чуть-чуть поподробнее, если можно.
Старый 08.03.2011, 00:09
J64_

offline
Опыт: 4,724
Активность:
Делай то что и делает редактор звука:
globals
sound s
endglobals
function initsounds takes void returns void
s=createsound(...)
endfunction
...
PlaySound(s)
...
Ну а вот про систему расказать сложно...
я сам сделал+плеер на варике хд
Старый 08.03.2011, 02:54
Hanabishi
COOL STATUS
offline
Опыт: отключен
AdamanTX, абсолютно тоже самое получается
Старый 08.03.2011, 10:40
J64_

offline
Опыт: 4,724
Активность:
Hanabishi:
AdamanTX, абсолютно тоже самое получается
в смысле? Тоге самое что и редактор звуков? Если так то да, И он НЕ дает утечек...
Старый 08.03.2011, 12:09
Hanabishi
COOL STATUS
offline
Опыт: отключен
AdamanTX, этот способ так же вызывает утечки
Старый 08.03.2011, 12:18
J64_

offline
Опыт: 4,724
Активность:
Почему? Ибо playsound дает утечки?
Старый 08.03.2011, 15:14
Hanabishi
COOL STATUS
offline
Опыт: отключен
похоже само создание звука даёт утечку, т.к. у него нет деструктора
Старый 08.03.2011, 15:15
J64_

offline
Опыт: 4,724
Активность:
Hanabishi:
похоже само создание звука даёт утечку, т.к. у него нет деструктора
а что я делаю: создаю звуки В НАЧАЛЕ и воспроизвожу их кода нада, но похоже это ты не вкурил...
Старый 08.03.2011, 16:35
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 17:32.