По каким причинам может не воспроизводиться позиционный звук? Внизу я привёл код, который должен был воспроизвести звук, но он не работает.
	local sound s = CreateSound("war3mapImported\\GeneratorWork.wav",false,true,true,10,10,"CombatSoundsEAX")
    
    call SetSoundChannel(s, 25)
    call SetSoundVolume(s, 127)
    call SetSoundPitch(s, 1.0)
    call SetSoundDistances(s, 600.0, 7000.0)
    call SetSoundDistanceCutoff(s, 3000.0)
    call SetSoundConeAngles(s, 0.0, 0.0, 127)
    call SetSoundConeOrientation(s, 0.0, 0.0, 0.0)
    call SetSoundPosition(s,GetUnitX(u),GetUnitY(u),0)
    call StartSound(s)

rsfghd, вариант хороший, но мне не подходит. Проблема в том, что один звук у меня на карте может производиться много раз. Если я сделаю как по твоему коду, то у меня будут воспроизводиться не все звуки, которые должны были.

Всё же я нашёл решение проблемы. Сама проблема оказалась нелепой: позиционный звук не воспроизводился, поскольку он был сделан под стереоканал (а нужно было моно).
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
~8gabriel8:
Добавь в текст ссылки на все файлы, только AnimLookups.slk могу скачать.


И длительность звука сократил, и не с первого кадра анимации, как и у Стрелка сделал, и поместил внутри war3x.mpq, а не просто в карту импортировал, и поместил звук в модели отдельно, как и у Стрелка, а не привязал к кости, и много чего ещё пробовал, но так и не воспроизводит звук, да.
Уже удалил всё, но сейчас пришло в голову, что может быть таблицы надо было не в war3x.mpq помещать, а в war3Patch.mpq. Только это вряд ли, потому что даже при импорте в карту ничего не было.

28
Звук нужно прелоадить

Но звук всё равно утекает, юзай глобалки

вот это я юзаю в своей карте
globals
    sound array ShamanSnd
    integer ShamanSndC = 0
endglobals

private function ShamanSndReset takes nothing returns nothing
    set ShamanSndC = 0
    call DestroyTimer(GetExpiredTimer())
endfunction

function PlaySoundEx takes sound s, real x, real y, real z, integer vol, real cutoff returns nothing
    if s == ShamanSnd[ShamanSndC] then
        if ShamanSndC == 0 then
            call TimerStart(CreateTimer(),4.,false,function ShamanSndReset)
        elseif ShamanSndC > 5 then
            call BJDebugMsg("PlaySoundEx: ShamanSndC > 5")
            return
        endif
        set ShamanSndC = ShamanSndC+1
	endif
    
    call StopSound(s,false,false)
    call SetSoundChannel(s,GetRandomInt(25,35))
    call SetSoundPosition(s,x,y,z)
    call SetSoundDistanceCutoff(s,cutoff)
    call SetSoundVolume(s,vol)
    call StartSound(s)
endfunction

function onInit takes nothing returns nothing
	local integer i = 0
	loop
        set ShamanSnd[i] = CreateSound("Units\\Orc\\Shaman\\ShamanYesAttack4.wav",false,true,true,10,10,"CombatSoundsEAX")
        call SetSoundPitch(ShamanSnd[i], 1)
        call SetSoundDistances(ShamanSnd[i], 600., 10000.)
        call SetSoundConeAngles(ShamanSnd[i], 0.0, 0.0, 127)
        call SetSoundConeOrientation(ShamanSnd[i], 0.0, 0.0, 0.0)
		set i = i+1
	endloop
endfunction
а запускается так
call PlaySoundEx(ShamanSnd[ShamanSndC],x,y,z,127,3000.)

система костыльная кривая и т.д. и т.п. но я хз, работает не утекает и пофиг, по сути как бд работает

глобалки прелоадить кста не нужно
1
rsfghd, вариант хороший, но мне не подходит. Проблема в том, что один звук у меня на карте может производиться много раз. Если я сделаю как по твоему коду, то у меня будут воспроизводиться не все звуки, которые должны были.

Всё же я нашёл решение проблемы. Сама проблема оказалась нелепой: позиционный звук не воспроизводился, поскольку он был сделан под стереоканал (а нужно было моно).
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.