22

» WarCraft 3 / Баг констант в JNGP

У меня было такое, скопировал мили карту, константы не трогал, написал код (никак к рудникам не относящийся), сохранил w3x, рудники на нуле.
22

» WarCraft 3 / Как узнать цель предмета

Пробуй событие на использование способности (той что у предмета) и отслеживание цели способности
22

» WarCraft 3 / call ForGroup()

нельзя, используй глобальные переменные для передачи аргументов
22

» WarCraft 3 / Дублируется текст

if GetLocalPlayer() == Player(p) { a = 0 }
т.е. текст невидим для нужного игрока? 0 альфы это же 100% прозрачность
а текст неверный потому что накладывается мб от разных игроков
22

» WarCraft 3 / Как сделать триггер "-zoom"

  1. эти подстроки (substring) от пустых строк в событиях не нужны
  2. высоту камеры настраивай через Set Camera Field, а не Pan Camera
22

» WarCraft 3 / Можно ли узнать позицию курсора?

Мемхак или Trackabl'ы
хз в первом не разбираюсь, а от большого числа трекейблов будут тормоза
22

» WarCraft 3 / Locals в if/then/else

на гуи без жнгп, вот эти вот все переборы и условия преобразуются в несколько функций.
с For group даже с jngp придется использовать глобалки, так как там всегда выполняется отдельная функция от той, в которй вызывают For group
поэтому нужно сделать глобальные переменные, а внутри For group заново объявлять локальные, и передавать в них значения через глобальные. И не забывать обнулять объектные локалки внутри ForGroup тоже.
22

» WarCraft 3 / Проблемы с определением мертв ли герой ли нет

GetWidgetLife( unit ) > 0.405 как раз и выдает true если юнит жив
а если поставить знак < то должно быть правильно
22

» WarCraft 3 / Как создать многомерные хранилища?

тот код должен работать и с отрицательным третьим индексом (вместо 0), но не с отрицательным равкодом
rawcode + 0 * (max_rawcode - min_rawcode)
min_rawcode поставить как самый отрицательный равкод
ошибка может быть только при переполнении целого числа, когда вся эта сумма стане столь огромной что уйдет в минус
22

» WarCraft 3 / Как создать многомерные хранилища?

многомерность можно имитировать, делая расчет одного из индексов из двух других, как в жнгп реализованы двумерные массивы
то есть SaveUnitHadle(udg_Hash, id, rawcode, 0, u)
преобразуется в SaveUnitHadle(udg_Hash, id, rawcode + 0 * max_rawcode, u)
но будет ограничение по размеру, max_rawcode должно быть константой которая больше чем все rawcod'ы
22

» WarCraft 3 / Можно ли получить тип урона в ивенте получения юнитов урона?

Такой функции нет, но можно наносить весь урон от заклинаний триггерно, и создать базу данных типов атаки, где хранить у какого юнита какой тип
22

» WarCraft 3 / Функция GetLocal вызывает дессинхрон

у тебя еще цикл только для красного и синего игроков (номер 0 и 1)
ошибка в том, что нельзя создавать объекты в локальном коде (current camera view в условии делает действия от этого условия локальным кодом, выполняющимся по разному у разных игроков)
это не из-за PlayLocalSound, а из-за current camera view
пример: у красного игрока который смотрит куда надо комп создаст объект, а у синего нет
и теперь у красного номера объектов в памяти на один больше, и происходит десинк
поэтому создание звука должно быть вне условия, а условием менять только строку
триггер который я скинул выше будет работать правильно, потому что он создает объект звука в любом случае, но если игрок смотрит не туда звук будет пустой
22

» WarCraft 3 / Функция GetLocal вызывает дессинхрон

не остается
десинк не в этой функции а в твоем гуи триггере, из-за current camera view и создания объекта только для части игроков
22

» WarCraft 3 / Функция GetLocal вызывает дессинхрон

если тебе звук нужен только для обладателя героя, то ты используешь вместо current camera view
position of hero[GetPlayerId(GetLocalPlayer())]
где hero - массив героев, индекс это номер игрока начиная с нуля
то есть hero[0] красный геро, hero[1] синий и т.д.
тогда это вернет позицию локального героя, а если герой не существует то центр карты
22

» WarCraft 3 / Функция GetLocal вызывает дессинхрон

вот у красного игрока камера там где нужно, и его комп поставит правильную строку
а вот синий смотрит не туда, и его копм сделает пустую строку
оба компа создают звук, но у красного звук есть, а у синего звука нет потому что путь пустой
22

» WarCraft 3 / Функция GetLocal вызывает дессинхрон

ты не поймешь
но напишу еще раз: каждый компьютер (монитор, процессор) каждого игрока выполняет этот код
но каждый по своему, потому что камера у каждого в разном месте
22

» WarCraft 3 / Функция GetLocal вызывает дессинхрон

вот это код, в котором ты NecromancerPissed2 меняешь на свой звук и вставляешь в свою карту
GetPlayerId(GetLocalPlayer()) вместо целого в той функции.
22

» WarCraft 3 / Функция GetLocal вызывает дессинхрон

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 надо задать как путь к звуку если дальность подходит