В общем хочу запустить звук для одного игрока только, и в итоге получается дессинхрон
function PlayLocalSound takes string s, integer p returns nothing
local sound snd
if GetLocalPlayer() != Player(p) then
set s = ""
endif
set snd = CreateSound(s,false, false, false,10,10,"")
call SetSoundChannel(snd,5)
call SetSoundVolume(snd,127)
call SetSoundPitch(snd, 1)
call StartSound(snd)
call KillSoundWhenDone(snd)
set snd = null
endfunction
local sound snd
if GetLocalPlayer() != Player(p) then
set s = ""
endif
set snd = CreateSound(s,false, false, false,10,10,"")
call SetSoundChannel(snd,5)
call SetSoundVolume(snd,127)
call SetSoundPitch(snd, 1)
call StartSound(snd)
call KillSoundWhenDone(snd)
set snd = null
endfunction
Код функции, который использую для звука
На скрине запуск
Принятый ответ
если тебе звук нужен только для обладателя героя, то ты используешь вместо current camera view
position of hero[GetPlayerId(GetLocalPlayer())]
где hero - массив героев, индекс это номер игрока начиная с нуля
то есть hero[0] красный геро, hero[1] синий и т.д.
тогда это вернет позицию локального героя, а если герой не существует то центр карты
position of hero[GetPlayerId(GetLocalPlayer())]
где hero - массив героев, индекс это номер игрока начиная с нуля
то есть hero[0] красный геро, hero[1] синий и т.д.
тогда это вернет позицию локального героя, а если герой не существует то центр карты
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
еще скрин твой не видно, нажми кнопку "вставить ссылку на файл" рядом с ним
Отредактирован biridius
Я думаю проблема в условии target of current camera view (оно проверяется у локального игрока, и из-за этого создается объект только у какого-то из игроков), но я не понимаю что этот триггер должен делать
biridius: Нууу, типо если рядом смотришь камерой, то звук проигрывается, вот так
Отредактирован biridius
biridius: Ты прямо сейчаас озвучил принцип действия моей функции или что?