Реф ничего не знает о луа коде. Эта же проблема есть и на UjAPI.
Чтоб игра присвоила юниту глобальную переменную, необходимо в редакторе переменных гуи создать переменную типа unit.
Далее создаём триггер, и поочерёдно присваиваем этой переменной нужных юнитов прям в гуи.
мойЮнит = Юнит
мойЮнит = Юнит1
мойЮнит = Юнит2
// К сожалению нет варкрафта под рукой, надеюсь кто-либо создаст скриншот.
Компилятор варкрафта не очень умён. Увидев присваивание юнита переменной, он поместит его в war3map.doo и создаст глобальную переменную в war3map.lua, к которой можно будет обратиться.
do
function MarkGameStarted()
print('pfff print')
end
end
результат
Круто, сработало. Почему вообще эта функция решила запуститься? Тогда почему в моем коде не работает измененная функция InitGlobals? И насколько мне известно все инструкции скрипта выполняются в любом случае при старте так почему тогда не работают мои принты в самой внешней области?(До этого на карте созданной warcraft-vscode подобное сработало) крче я немного запутался
капец, 2022 год, можно уже такие прикольные вещи всякие мутить, а не вот эти вот пик-пик мышка воть я туть спелльчик жму коробочки ламаются даются предметики рандомные шансики ляля
Не уверен, что это за случай, но попробуй проверку написать так - GetUnitName(UU[i]) == null . У меня тоже где-то не проверялось по дефолту на null и я стал использовать этот способ.
Я просмотрел, что там есть. Это как-то поможет с устранением дёрганья на стыках клифов? Просто у меня такое чувство, что нет. Но библиотека выглядит удобной, надо поставить
Выше был скрин с формулой вычисления. Всё же стало нормально работать с ровной местностью. То есть, если это прогиб под воду, то он летит на своей высоте, а не резко прогинается вниз. Вот только на пересечениях клифов поддёргивает. Тут уже больше похоже на механику вара, а не баг (
Спасибо, поменял. Теперь всё стало ясно. На обычных клифах и воде теперь высота нужная(без прогинаний), но на пересечении клифов(там где обрыв) идут поддёргивания высоты. Там юнит как будто по очень крутой траектории спускаеться(поднимается). Как это пофиксить хз, если это вообще можно пофиксить просто подбирая высоту
call MoveLocation( LFZ, x, y )
return GetLocationZ( LFZ )
Все равно не хочет работать, шар все равно прогинается под воду, когда пролетает над ней. При этом diffZ принимает нормальные значения(т. е. на такой же высоте, как и откуда он вылетел - 0, а если высота отклоняется от начальной, о 20, 86 и тд). В startZ - начальная высота местности откуда произошел каст. А в diffZ - разность между текущей высотой местности и начальной и это добавляеться к изменению высоты юнита. По логике вещей он должен не прогинаеться под воду, но так все равно происходит.
если "летящий шарик" это юнит, то делай его изначально плавающим, добавляя абилку 'Arav'
высоту ты можешь узнать через общепринятую функцию:
globals
location LFZ = Location( 0.00, 0.00 )
endglobals
function GetLocZ takes real x, real y returns real
call MoveLocation( LFZ, x, y )
return GetLocationZ( LFZ )
endfunction
Ну, я юнита через SetUnit(X/Y) двигаю, поэтому плавающий он мне не нужен, наверное? Я вообще узнаю высоту юнита через GetUnitFlyHeight, а ставлю через SetUnitFlyHeight. Что-то принципиально изменится, если я буду Z координату использовать? Типо Z координата независима, а FlyHeight начинает считаться от текущего уровня подъема?
Извиняюсь, не очень вник изначально в эту функцию. Перечитал и понял, о чем вы)
Сначала просто создай способность на основе способности "Канал" и в разрешённых целях поставь те, к кому она может прыгать. Потом сделай способность на основе "Ауры выносливости" Вождя минотавров и сделай разрешенные цели - только сам герой. Затем создай способность на основе "Книги заклинаний" и положи в эту книгу свою другую созданную способность. Сделай 2 триггера - 1-ый реагирует на применения твоего скилла - телепортирует героя к цели способности, даёт мортре способность на основе книги заклинаний, блокирует для игрока мортры эту способность на основе книги заклинаний и запускает новую переменную таймера на время действия бонуса к атакспиду.
2-й триггер реагирует на истечение таймера - разблокирывает и удаляет способность на основе книги заклинаний у мортры. Всё
действие вызывается в условии, вот в этом куске кода
Name_Struct - параметр действия (дефайном подставляется Hook.act())
define ... Struct_Cond(ABILITY,Name_Struct) = {
private bool cond(){
if GetSpellAbilityId()==ABILITY {
Name_Struct // заменится на Hook.act()
}
return false
}
}
...
Struct_Cond(ABILITY,Hook.act()) // вот эта линия превращается в то что выше но с подстановкой этих параметров
Мне бы хоть какой намёк, где тут реализуются действия(реакция на событие) Я вижу, как инициализатор инициализирует события и кондишн для тригера t. Но в каком участке кода идёт намёк(добавление) на "действия"? До этого я лишь с TriggerAddAction работал.
Отредактирован NatriY
» WarCraft 3 / Утечка
» WarCraft 3 / Вычислительная геометрия часть 2
» WarCraft 3 / Как достучаться в коде до юнита на карте lua
» WarCraft 3 / Не работает Lua код
» WarCraft 3 / Не работает Lua код
» WarCraft 3 / Не работает Lua код
» WarCraft 3 / Не работает Lua код
» WarCraft 3 / Помогите сделать способность
» WarCraft 3 / Почему не работает условие null на цикле?
» WarCraft 3 / Как перекинуть jass script на другую карту
Отредактирован NatriY
» WarCraft 3 / Карта вылетает когда тестирую её в jnpg
» WarCraft 3 / Высота подъема
» WarCraft 3 / Высота подъема
» WarCraft 3 / Высота подъема
» WarCraft 3 / Высота подъема
» WarCraft 3 / Поглотить с эффектом
Отредактирован NatriY
» WarCraft 3 / Высота подъема
» WarCraft 3 / Высота подъема
» WarCraft 3 / Высота подъема
» WarCraft 3 / Помогите сделать способность
2-й триггер реагирует на истечение таймера - разблокирывает и удаляет способность на основе книги заклинаний у мортры. Всё
» WarCraft 3 / Как удалить всех юнитов у бота?
» WarCraft 3 / Хэш-таблица 1.26a
» WarCraft 3 / Объясните код
» WarCraft 3 / Объясните код
» WarCraft 3 / Объясните код