В луа не работает бредовый "синтаксис" когда кажддому триггеру создается функция инициализации т.к. не генерируется вызов этих функций, в отличии от жасса, в котором каждому триггеру автоматически генерируется функция инициализации и добавляется вызов этой функции в скрытую от пользователя общую функцию инициализации.
Рекомендую прочитать эту статью чтобы разобраться как обеспечить себе место в коде, которое выполнится при старте карты и куда можно добавить в том числе и инициализацию своего триггера.
Если лень читать статью про инжект точки входа, сделай так:
Создай гуи триггер с событием "Инициализация карты" (Map Initialization), добавь туда действие "Custom script" и вставь в текст скрипта это:
entryPoint()
Потом объяви где-то функцию entryPoint:
function entryPoint()
InitTrig_PickHeroes( )
end
И вызови из неё инит своего триггера, и руками туда добавляешь инит всех своих кастомных триггеров. Если у тебя есть общий код инициализации карты то функцию инициализации тоже вызови из entryPoint
В луа все триггеры ты создаешь вручную, инициализируешь вручную, вызываешь их инит тоже вручную как указано выше. Но глобальные переменные объявлять не надо если что, всё что не локалка - то глобалка.
ScopteRectuS, Drulia_san, Вот только такая конструкция вызывается ДО инициализации и при срабатывании сборщика мусора триггеры созданые таким образом могут потеряться. Будете потом ловить странный сложно воспроизводимый баг "триггеры вдруг перестали работать, что делать". Поэтому нужен инжект в оригинальный процесс инициализации.
ScopteRectuS, Drulia_san, Вот только такая конструкция вызывается ДО инициализации и при срабатывании сборщика мусора триггеры созданые таким образом могут потеряться. Будете потом ловить странный сложно воспроизводимый баг "триггеры вдруг перестали работать, что делать". Поэтому нужен инжект в оригинальный процесс инициализации.
Сборщик мусора уничтожает луашные объекты и ссылки, объекты типа триггер, юнит и прочее - живут совсем в других местах, которые сборщик мусора не имеет права трогать, они уничтожаются по ссылке функциями типа DestroySomething Он может максимум обнулить глобальную ссылку на триггер gg_trg_MyTrigger, но сам триггер никто не зачистит. Он останется жив и будет работать, функции которые он дергает впитать в себя он уже успел, если вдруг триггер станет nil - на него просто нельзя будет получить ссылку, он останется изолирован в памяти, но по сути его трогать-то больше и не надо.
Показан только небольшой набор комментариев вокруг указанного.
Перейти к актуальным.
В TriggerAdAction уберите еще скобки у второго аргумента.
Рекомендую прочитать эту статью чтобы разобраться как обеспечить себе место в коде, которое выполнится при старте карты и куда можно добавить в том числе и инициализацию своего триггера.
prog:
Ред. Drulia_san
Создай гуи триггер с событием "Инициализация карты" (Map Initialization), добавь туда действие "Custom script" и вставь в текст скрипта это:
Ред. Drulia_san
Ред. scopterectus
Ред. Drulia_san