if GetLocalPlayer() == Player(p) { a = 0 }
т.е. текст невидим для нужного игрока? 0 альфы это же 100% прозрачность
а текст неверный потому что накладывается мб от разных игроков
на гуи без жнгп, вот эти вот все переборы и условия преобразуются в несколько функций.
с For group даже с jngp придется использовать глобалки, так как там всегда выполняется отдельная функция от той, в которй вызывают For group
поэтому нужно сделать глобальные переменные, а внутри For group заново объявлять локальные, и передавать в них значения через глобальные. И не забывать обнулять объектные локалки внутри ForGroup тоже.
многомерность можно имитировать, делая расчет одного из индексов из двух других, как в жнгп реализованы двумерные массивы
то есть SaveUnitHadle(udg_Hash, id, rawcode, 0, u)
преобразуется в SaveUnitHadle(udg_Hash, id, rawcode + 0 * max_rawcode, u)
но будет ограничение по размеру, max_rawcode должно быть константой которая больше чем все rawcod'ы
у тебя еще цикл только для красного и синего игроков (номер 0 и 1)
ошибка в том, что нельзя создавать объекты в локальном коде (current camera view в условии делает действия от этого условия локальным кодом, выполняющимся по разному у разных игроков)
это не из-за PlayLocalSound, а из-за current camera view
пример: у красного игрока который смотрит куда надо комп создаст объект, а у синего нет
и теперь у красного номера объектов в памяти на один больше, и происходит десинк
поэтому создание звука должно быть вне условия, а условием менять только строку
триггер который я скинул выше будет работать правильно, потому что он создает объект звука в любом случае, но если игрок смотрит не туда звук будет пустой
если тебе звук нужен только для обладателя героя, то ты используешь вместо current camera view
position of hero[GetPlayerId(GetLocalPlayer())]
где hero - массив героев, индекс это номер игрока начиная с нуля
то есть hero[0] красный геро, hero[1] синий и т.д.
тогда это вернет позицию локального героя, а если герой не существует то центр карты
вот у красного игрока камера там где нужно, и его комп поставит правильную строку
а вот синий смотрит не туда, и его копм сделает пустую строку
оба компа создают звук, но у красного звук есть, а у синего звука нет потому что путь пустой
ты не поймешь
но напишу еще раз: каждый компьютер (монитор, процессор) каждого игрока выполняет этот код
но каждый по своему, потому что камера у каждого в разном месте
local sound 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)
вот этот кусок проигрывает звук по строке s
а перед этим s надо задать как путь к звуку если дальность подходит
» WarCraft 3 / Баг констант в JNGP
» WarCraft 3 / Как узнать цель предмета
» WarCraft 3 / Как сделать чтоб когда танк делает выстрелснаряд летел прямо?
» WarCraft 3 / call ForGroup()
» WarCraft 3 / Дублируется текст
т.е. текст невидим для нужного игрока? 0 альфы это же 100% прозрачность
а текст неверный потому что накладывается мб от разных игроков
Ред. biridius
» WarCraft 3 / Как сделать триггер "-zoom"
Ред. biridius
» WarCraft 3 / Столкновение с краем карты
Ред. biridius
» WarCraft 3 / Можно ли узнать позицию курсора?
хз в первом не разбираюсь, а от большого числа трекейблов будут тормоза
» WarCraft 3 / Always
» WarCraft 3 / Как создать многомерные хранилища?
Ред. biridius
» WarCraft 3 / Locals в if/then/else
» WarCraft 3 / Проблемы с определением мертв ли герой ли нет
а если поставить знак < то должно быть правильно
» WarCraft 3 / Как создать многомерные хранилища?
min_rawcode поставить как самый отрицательный равкод
» WarCraft 3 / Как создать многомерные хранилища?
то есть SaveUnitHadle(udg_Hash, id, rawcode, 0, u)
преобразуется в SaveUnitHadle(udg_Hash, id, rawcode + 0 * max_rawcode, u)
но будет ограничение по размеру, max_rawcode должно быть константой которая больше чем все rawcod'ы
Ред. biridius
» WarCraft 3 / Звук повторяется пока не проиграешь другой, как остановить ето?
она же была в той функции PlayLocalSound?
» WarCraft 3 / Можно ли получить тип урона в ивенте получения юнитов урона?
Ред. biridius
» WarCraft 3 / Функция GetLocal вызывает дессинхрон
это не из-за PlayLocalSound, а из-за current camera view
и теперь у красного номера объектов в памяти на один больше, и происходит десинк
поэтому создание звука должно быть вне условия, а условием менять только строку
Ред. biridius
» WarCraft 3 / Функция GetLocal вызывает дессинхрон
десинк не в этой функции а в твоем гуи триггере, из-за current camera view и создания объекта только для части игроков
Ред. biridius
» WarCraft 3 / Функция GetLocal вызывает дессинхрон
position of hero[GetPlayerId(GetLocalPlayer())]
где hero - массив героев, индекс это номер игрока начиная с нуля
то есть hero[0] красный геро, hero[1] синий и т.д.
тогда это вернет позицию локального героя, а если герой не существует то центр карты
» WarCraft 3 / Функция GetLocal вызывает дессинхрон
» WarCraft 3 / Функция GetLocal вызывает дессинхрон
а вот синий смотрит не туда, и его копм сделает пустую строку
оба компа создают звук, но у красного звук есть, а у синего звука нет потому что путь пустой
Ред. biridius
» WarCraft 3 / Функция GetLocal вызывает дессинхрон
но напишу еще раз: каждый компьютер (монитор, процессор) каждого игрока выполняет этот код
но каждый по своему, потому что камера у каждого в разном месте
Ред. biridius
» WarCraft 3 / Функция GetLocal вызывает дессинхрон
GetPlayerId(GetLocalPlayer()) вместо целого в той функции.
Ред. biridius
» WarCraft 3 / Функция GetLocal вызывает дессинхрон
Ред. biridius
» WarCraft 3 / Функция GetLocal вызывает дессинхрон
call SetSoundChannel(snd,5)
call SetSoundVolume(snd,127)
call SetSoundPitch(snd, 1)
call StartSound(snd)
call KillSoundWhenDone(snd)
вот этот кусок проигрывает звук по строке s
а перед этим s надо задать как путь к звуку если дальность подходит