Триггеры инициализации перестали работать, любые, даже если все отключить и создать новые с дебагом просто всё равно ничего работать не будет.
Условие почему это происходит известно.
В игре есть босс, и всё связанное с ним вынесено в отдельную либу, как и все механики игры разделены по либам (утилиты, дамми, снаряды, босс и тд)
У него есть встроенный инициализатор private void Init()
И всё ок, но если вдруг взять из этой либы и убрать инициализатор и перенести его в основной глобальный инит, то карта будто обижается на весь мир и игнорирует любую инициализацию (кроме post-init который триггерится когда карта загрузилась)
Причем не важно куда его ставить в инит хоть в начало хоть в конец, его можно вообще не ставить и вообще и закомментить, инит работать не будет до тех пор пока я не верну его в initializer для либы Boss, только тогда он работать будет.
Какое вообще третьесортная либа имеет отношение к общей инициализации? Она просто не работает если я уберу или перенесу инициализацию. Ни одна строчка кода не выполняется, инициализации будто не существует пока я не верну в либу Boss то что убрал.

Смотрите код main после сохранения карты, там походу где то обрыв потока...
`
ОЖИДАНИЕ РЕКЛАМЫ...
32
Смотрите код main после сохранения карты, там походу где то обрыв потока...
Принятый ответ
28
Ну это смешно уже.
Drulia_san, знаешь, как работает инициализаторы библиотек и что такое потоки?
Инициализация происходит в таком порядке, если не править её инжектом.
раскрыть
function main takes nothing returns nothing
    call SetCameraBounds(...)  // Устанавливаются границы камеры.
    call SetDayNightModels(...)  // Какие-то модели дня и ночи, не знаю, что это точно делает.
    // Ниже идут звуки окружения и музыка.
    call NewSoundEnvironment("Default")
    call SetAmbientDaySound("LordaeronSummerDay")
    call SetAmbientNightSound("LordaeronSummerNight")
    call SetMapMusic("Music", true, 0)
    call InitBlizzard()  // Инициализация различных звуков, некоторых переменных, лимитов и много чего.
    // Инициализация структур с помощью ExecuteFunc().
    // Инициализация библиотек с помощью ExecuteFunc().
    // Инициализация блоков (scope) с помощью call.
    call InitGlobals()  // Инициализация глобалок, что сделаны в меню переменных.
    // Тут вызываются функции, что создают юнитов, разрушаемые объекты, области, камеры и все их параметры.
    call InitCustomTriggers()  // Создание триггеров, добавление действий, условий и событий.
    call RunInitializationTriggers()  // Запуск триггеров инициализации.
endfunction
Скорее всего в твоём инициализаторе происходит деление на 0 или использование необъявленной переменной, или количество действий в нём выходит за лимит операций. Пока эти действия были в инициализаторе библиотеки, они происходили в отдельном от main потоке (потому что инициализатор библиотеки вызывается через ExecuteFunc(), что не ломало всё остальное, но как только ты их вынес из него, ломался уже поток main или его дочерний из RunInitializationTriggers().
15
Скорее всего в твоём инициализаторе происходит деление на 0 или использование необъявленной переменной, или действий там столько, что они выходят за лимит операций. Вот только пока эти действия были в инициализаторе библиотеки, они происходили в отдельном от main потоке (потому что инициализатор библиотеки вызывается через ExecuteFunc(), что не ломало всё остальное.
Так я убираю эту инициализацию, это лишь разгружает общую инициализацию. Я вообще её убрал как и функционал библиотеки, а оно всё равно не работает. Возвращаю как было - и начинает работать.
28
Так я убираю эту инициализацию, это лишь разгружает общую инициализацию.
Что убираешь и куда? Ещё раз, инициализатор библиотеки выполняется в отдельном потоке, и если там что-то ломается, то ломается только поток инициализатора.

Было бы хорошо приложить скриншоты, когда работает, что и куда перемещается, что после этого не работает.

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

Drulia_san, ты скажи, решил или не решил проблему, а то уже который вопрос у тебя баг, в котором ты сначала отвечаешь, а потом пропадаешь, так и не дав понять, разрешилась ли проблема. Жду новостей, короче.

Есть новости?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.