Как работает стандартное событие триггера "Map initialization"? Просто при его добавления в ГУИ, в jass-коде ничего не меняется, а действия выполняются. Я думал, что там хотя бы будет функция TriggerExecute, но нет...

Принятый ответ

В джасс коде конвертировав триггер сверху галочка есть, "продолжается при инициализации", вот что меняется

Оно просто запускает триггер ещё когда карта подгружается

С помощью библиотек можно инициализировать функцию без создания триггера, даже в шапке карты, например
library mylib initializer init{

   private void init(){
       BJDebugMsg("1")
   }

}

Оно добавляет функцию в main варика если не ошибаюсь, это место инициализации (или это onInit() зинка добавляет туда функцию..)

упс, написано только что вызывается при инициализации карты, надо будет по коду посмотреть что к чему
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
3 года назад
0
Похожие вопросы:

ответ
Была прям один в один ситуация. Игра крашица скорее всего от того, что что bounds выходит за пределы карты. Оставляй отступ от краев.
и даже не границы карты, а границы обзора вродебы ломают все

попробуй rect создать на карте, чтобы он был внутри границы обзора. И bounds выставляй по нему.
ответ
~8gabriel8:
Вроде работает, но не знаю, так ли у тебя работало ранее. Проверь. Касательно проблем с триггерами не уверен, но вроде бы видел триггеры с одинаковым названием на русском. На всякий случай изменил все названия триггеров с кириллицей на латиницу, так как проблемы с этим уже упоминали. В триггере инициализации было два события, что в итоге приводило бы к двойному срабатыванию, одно из них удалил. Также удалил несколько ретурнов, чтобы с одной стороны увидеть работоспособность триггеров, так удалил ретурн перед постановкой заданий в инициализации, с другой сомневался, что они корректно работают, а проверять было некогда, например, в цикле от 1 до 350 ретурн мог не пустить выполнение цикла дальше первого элемента. Но главное в том, что ты вводишь лишнии глобальные переменные вместо указателей (Triggering unit) или (Item being manipulated), причём их порой даже не используешь, просто устанавливаешь сначала, а в конце обнуляешь. Так не надо делать, пользуйся стандартными указателями на юнитов, типа (Triggering unit) или (Attacking unit), не удаляя или обнуляя их, а то только лишнюю нагрузку создаёшь для памяти, процессора и очереди операций. Обычно (Triggering player) по умолчанию является владельцем (Triggering unit), тоже используй сразу, а не плоди переменные. После удаления точки, не обнуляй её. А ещё попробуйте использовать какие-то оптимизаторы для карты, потому что её загрузка просто жесть - более 50 тысяч переменных для объектов редактор показывал) Только после оптимизации карта будет годна лишь для игры, а в редакторе не будет открываться.

Печатал уточнение и заснул)
Не указал, что вроде бы видел два триггера Безымянный триггер 002 или Безымянный триггер 005, одинаковые имена как раз могли быть причиной проблемы.

Самым лучшим комментарием считаю 17 от Hate.
ответ
Уже как задал вопрос вспомнил о статье на сайте
do
	local InitGlobalsOrigin = InitGlobals
	function InitGlobals()
        InitGlobalsOrigin()
        print("Инициализация")
    end
end
ответ
Спасибо всем за ответы.
PT153 подсказал в чем проблема.
Я использовал функции blizzard.j, но не вызвал в мейне call InitBlizzard()

1
27
3 года назад
Отредактирован rsfghd
1
В джасс коде конвертировав триггер сверху галочка есть, "продолжается при инициализации", вот что меняется

Оно просто запускает триггер ещё когда карта подгружается

С помощью библиотек можно инициализировать функцию без создания триггера, даже в шапке карты, например
library mylib initializer init{

   private void init(){
       BJDebugMsg("1")
   }

}

Оно добавляет функцию в main варика если не ошибаюсь, это место инициализации (или это onInit() зинка добавляет туда функцию..)

упс, написано только что вызывается при инициализации карты, надо будет по коду посмотреть что к чему
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.