В общем хочу запустить звук для одного игрока только, и в итоге получается дессинхрон
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: Нууу, типо если рядом смотришь камерой, то звук проигрывается, вот так
Ред. biridius
biridius: Ты прямо сейчаас озвучил принцип действия моей функции или что?
Ред. biridius
Цикл не нужен, код выполняется на компе каждого из игроков отдельно, и расстояние до камеры у каждого посчитается свое.
в твоей переменной P_S[3401] на компе каждого игрока и без цикла будет лежать его собственный центр камеры, а не чей-то еще
biridius: Я ничерта не понимаю принцип работы GetLocal, ибо она оч нелогична
Ред. biridius
у каждого объекта свой номер, и если создавать звук только для части игроков, у них номера объектов будут неправильные с этого момента
та функция не подойдет т.к. нельзя узнать с одного компа где камера у другого
Ред. biridius
call SetSoundChannel(snd,5)
call SetSoundVolume(snd,127)
call SetSoundPitch(snd, 1)
call StartSound(snd)
call KillSoundWhenDone(snd)
вот этот кусок проигрывает звук по строке s
а перед этим s надо задать как путь к звуку если дальность подходит
biridius:
Мде, то чувство, когда объясняешь мне что делает мой код, вместо того, чтобы объяснить принципы работы гетлокал, и его использование.