24

» WarCraft 3 / Использования юнита как снаряд

Bergi_Bear, говорят, у эффектов есть недостаток в отсутствии интерполяции для них, лично я не заметил большой разницы когда сравнивал, но говорят что на юнитах снаряды плавнее движутся чем на эффектах. Так что, возможно есть смысл по прежнему делать на юнитах отдельные снаряды, особенно если они движутся быстро.
24

» WarCraft 3 / Официально стал доступен PTR 1.31

А были нативки которы не начинали с нуля? o_O Я всегда был уверен что такое только в BJ функциях встречается.
24

» WarCraft 3 / Официально стал доступен PTR 1.31

H, код покажу позже, за другой машиной сейчас. Юзкейс для которого полезна замена Tick функции в рантайме - снаряд который меняет свое поведение в полете, например сперва снаряд движется по окружности привязаной к юниту и ищет цель в радиусе от себя, а после обнаружения цели летит к ней по параболе игнорируя столкновения. Ну и не люблю я плодить таймеры на каждый снаряд, поэтому у меня они все на одном таймере.
24

» WarCraft 3 / Официально стал доступен PTR 1.31

H, константы знает, айдишникам юнитов не учил ибо нафиг не нужно, может в каком-то из инструментов умеет и айдишники из коробки - это не вопрос IDE, это вопрос фреймворка который надстроен над возможностями вара. Вызов функций связанных с юнитами через переменные юнитов видел в одном из инструментов, себе не ставил т.к. собираюсь свою такую обертку делать над юнитами.
Вейт на скрытом таймере с самоуничтожением - можно реализовать, чуть с другим синтаксисом, но можно, готовой такой функции нет. естественно, но пишется за пять минут один раз и потом используется.

Зато у меня в Lua есть ассоциативные и обычные массивы, работающие очень быстро и без ограничений на размер массива и возможность завернуть или заменить любую "нативку" своей функцией, а также хранение функций в переменных, передача функций и массивов в параметры и все это без синтаксического сахара, прямо на уровне языка.

Есть яркий пример - система движения снарядов, которую я недавно делал и которую еще допиливать и допиливать. У меня таймер перебирает все снаряды в системе и для каждого вызывает его индивидуальную функцию движения. Функция вызывается напрямую, с передачей параметров и без скрытого за синтаксическим сахаром триггера. Причем я в любой момент в рантайме могу поменять эту функцию на другую, взятую где угодно, при желании даже из чата или прелоада могу получить код функции. Пока эта система рассчитана на снаряды на основе эффектов, но научить её работать с юнитами это вопрос пары лишних строк кода.

А Док вон вобще полностью код карты перезагружает без перезапуска вара и рестарта карты. Банально за счет прелоада и превращения текста в код в рантайме.
24

» WarCraft 3 / Официально стал доступен PTR 1.31

H, о, так значит я живу в будущем? Черт, боюсь за мной уже выехали. Да, полного дефайна ВСЕГО вплоть до террейна я пока не видел, только юнитов и абилки и то не стал ставить потому как мне это не нужно, а вот полноценной работой с Lua на уровне языкового сервера плюс запуском карты из IDE я пользуюсь уже сейчас и это даже не самый топовый инструментарий из существующих, а просто две фиговины которые я прикинул что проще будет курочить как руки дойдут.
24

» WarCraft 3 / Очередной депротект...

Astra, они переносятся в код из данных редактора при сохранении и в игре именно кодом создаются.
24

» WarCraft 3 / Триггерный ИИ

Насколько я знаю - это передача в ИИ скрипт кастомных данных и обработка этой команды должна быть сперва реализована в самом ИИ скрипте чтобы что-то происходило в ответ на эту команду.
24

» WarCraft 3 / Улучшения на юнитах другого клана

Отлавливаеш момент завершения улучшения и триггерно выдаеш такое-же улучшение тому чьи юниты.
24

» WarCraft 3 / Увеличение размеров карты и нестандартных тайлов рельефа.

1.. В настройках карты, но не выше лимита доступного редактору той версии с которой вы работаете.
  1. В редакторе тайлов, но только до 16.
24

» WarCraft 3 / Как переходить на lua?

ScopteRectuS, я сам так начинал. Потом надоело и я починил jasshelper на PTR и научил его работать с Lua. А потом вышел релиз и жассхелпер убрали из луа режима полностью и я пересел на плагин warcraft-vscode. Теперь у меня запуск карты на тестирование выглядит так - в vscode F1 и выбор кнопки "запустить варкрафт". Надоест нажимать две кнопки - подправлю плагин и назначу на это какой-то хоткей.
24

» WarCraft 3 / Как переходить на lua?

ScopteRectuS, лучше не выделываться и поставить vscode и плагины к нему - заодно и подсветка синтаксиса Lua будет и все удобства нормальной среды разработки. Запуск тестирования карты чуть менее удобен оттуда, чем просто нажать кнопку в WE, но это стоит тех плюсов которые дает внешний редактор кода.
24

» WarCraft 3 / Как переходить на lua?

ScopteRectuS, сразу скажу - все они работают вне WE, других вариантов нет кроме как дособриать карту внешним инструментом не полагаясь на WE.
24

» WarCraft 3 / Как переходить на lua?

ScopteRectuS, я пользуюсь vscode для работы с кодом и плагином warcraft-vscode для сборки и запуска тестирования карты. Он берет код карты и код из всех внешних файлов в определенном месте и собирает это все в одну кучу на основе заданых шаблонов. Если убрать все лишнее из шаблонов, то получается что наш код помещается в код карты после оригинального кода и за счет этого я просто делаю вот так
local alpha_main = main
function main()
    alpha_main()
    Locales:Init()
    Libraries:Init()
end
Но есть и другие инструменты, в том числе такие которые копируют синтаксис инжекта в мейн из жассхелпера.
24

» WarCraft 3 / Как переходить на lua?

NazarPunk, да в принципе ничем, кроме того факта что инициализация через функцию дает чуть больше потенциальных возможностей - например позволяет иметь две версии одной библиотеки и выбирать нужную и двух по какому-то критерию и уже её записывать в глобальную переменную с именем библиотеки.
24

» WarCraft 3 / Как переходить на lua?

ScopteRectuS, в вашем варианте нельзя, в моем можно.
Если с анонимной функцией непонятно, можно переписать так
local function InitMath()
	local math = {}
	math.pi = 3.14 --паблик
	local secretvar = 42 --приват
	
	function math.abs( a )
	    if a >= 0 then
	        return a
	    else
	        return -a
	    end
	end
	return math
end
math = InitMath()
Есть и другие варианты, но они еще сложнее)
24

» WarCraft 3 / Как переходить на lua?

ScopteRectuS, сойдет.
Еще можно как-то так - завернуть в вызов анонимной функции:
math = function()
  local math = {}
  math.pi = 3.14
  local secretvar = 42

function math.abs( a )
    if a >= 0 then
        return a
    else
        return -a
    end
end
return math
end ()
Это позволит использовать локальные переменные уровня библиотеки, недоступные внешнему миру
24

» WarCraft 3 / Стартовая локация игроков и создание юнитов на ней

8gabriel8, ну вот и ответ, видимо - не пытаться создавать юнитов для пустых слотов или гарантировать что все слоты не пустые.
24

» WarCraft 3 / Стартовая локация игроков и создание юнитов на ней

8gabriel8, я имел в виду стандартное действие которое всем сразу выдает стартовых юнитов, а не отдельному игроку. Которое не спрашивает куда создавать, а само перебирает стартовые точки.
24

» WarCraft 3 / Стартовая локация игроков и создание юнитов на ней

А работает ли оно исправно со стандартными стартовыми юнитами из стандартного триггера инициализации карты? Если нет - что-то пошло совсем не так, может вы main меняли через inject? А если работает со стандартными, а с кастомными не хочет, то я даже не знаю что думать.
24

» WarCraft 3 / Редактор Карт, смена цвета текстуры.

Гримбольд, скорее всего - нужно поменять порядок тайлов в тайлсете, от этого зависит края от какого из двух соприкасающихся тайлов будут отрисованы сверху. Скрин не смотрел - bmp не качаю из принципа
24

» WarCraft 3 / Скилл на неуязвимость

Рекомендую использовать трюк с выдачей руны в которую засунуто зелье неуязвимости. (руна - имеется в виду предмет настроенный на автоматическое использование при получении, стандартные предметы с такими настройками это именно руны)
Если у цели нет инвентаря - выдавать способность инвентарь, выдавать предмет и сразу забирать инвентарь.
Если у цели есть инвентарь, но без права применять пердметы - придется немного по возиться и выдать этому инвентарю дополнительный уровень, на котором будут права применять предметы и перед выдачей руны поднимать уровень инвентаря, а потом снижать обратно.