В общем хочу запустить звук для одного игрока только, и в итоге получается дессинхрон
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
Код функции, который использую для звука
На скрине запуск

Принятый ответ

если тебе звук нужен только для обладателя героя, то ты используешь вместо current camera view
position of hero[GetPlayerId(GetLocalPlayer())]
где hero - массив героев, индекс это номер игрока начиная с нуля
то есть hero[0] красный геро, hero[1] синий и т.д.
тогда это вернет позицию локального героя, а если герой не существует то центр карты
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
21
7 лет назад
Отредактирован biridius
0
если тебе звук нужен только для обладателя героя, то ты используешь вместо current camera view
position of hero[GetPlayerId(GetLocalPlayer())]
где hero - массив героев, индекс это номер игрока начиная с нуля
то есть hero[0] красный геро, hero[1] синий и т.д.
тогда это вернет позицию локального героя, а если герой не существует то центр карты
Принятый ответ
0
14
7 лет назад
0
biridius:
если тебе звук нужен только для обладателя героя, то ты используешь вместо current camera view
position of hero[GetPlayerId(GetLocalPlayer())]
где hero - массив героев, индекс это номер игрока начиная с нуля
то есть hero[0] красный геро, hero[1] синий и т.д.
тогда это вернет позицию локального героя
Я опять ничерта не понял, какая же эта функция конченная. Ладно, вернемся к моей.
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
Она ведь осталась неизменной, следовательно десинхрон останется, что поменять?
0
21
7 лет назад
Отредактирован biridius
0
не остается
десинк не в этой функции а в твоем гуи триггере, из-за current camera view и создания объекта только для части игроков
0
14
7 лет назад
0
не остается
десинк не в этой функции а в твоем гуи триггере
В очередной раз я не понял где ошибка в гуитриггере
0
21
7 лет назад
Отредактирован biridius
0
у тебя еще цикл только для красного и синего игроков (номер 0 и 1)
ошибка в том, что нельзя создавать объекты в локальном коде (current camera view в условии делает действия от этого условия локальным кодом, выполняющимся по разному у разных игроков)
это не из-за PlayLocalSound, а из-за current camera view
пример: у красного игрока который смотрит куда надо комп создаст объект, а у синего нет
и теперь у красного номера объектов в памяти на один больше, и происходит десинк
поэтому создание звука должно быть вне условия, а условием менять только строку
триггер который я скинул выше будет работать правильно, потому что он создает объект звука в любом случае, но если игрок смотрит не туда звук будет пустой
Чтобы оставить комментарий, пожалуйста, войдите на сайт.