Добавлен ClotPh
Из-за лимита операций периодически отключаются триггеры.
Новых уже давно не создаётся глобально, всё пишется в кастом коде карты сверху.
Но "старые" глобальные триггеры периодически продолжают отключаться.
Пожимая плечами, прописываю соответствующий call InitTrig_XX() в глобальном триггере на инициализацию карты (он один из первых, так что в ближайшее время отключаться не собирается, а если отключится, это станет видно мгновенно), переписываю триггер на локальный и пихаю в кастом код, заодно и уменьшая обфускацию текстовыми подсказками и по возможности оптимизируя код.
Но немного утомило уже. Обфускация уменьшена немало, производительность и так явно не худшая в мире.
А вопросов, короче, два.
- Допустим, обнаруживаю я, что триггер KUKARACHA какой-нибудь глобальный отключается (из-за лимита операций, больше не из-за чего). Достаточно ли оставить его глобальным, ничего не менять и просто пропихнуть call InitTrig_KUKARACHA() в тот самый глобальный триггер на инициализацию?
- Если я так и буду продолжать все пихать в один триггер на инициализацию, возможно ли, что у меня из-за лимита и там все отключаться начнёт? Надо ли по частям распихивать? (В принципе так-то есть куда...)
Я так думаю, что:
- Да, можно оставить триггер глобальным и просто перенести его инициализацию вверх, т. к. триггер остаётся работоспособным, из-за лимита отключается-то только его инициализация. Фактически машина рабочая, просто топливо до нее не доносят.
- Вот тут хз, но скорее думаю, что да, возможно. Тогда надо будет сделать подсказочные блоки "Инициализация первого блока доп. триггеров", "Инициализация второго блока доп. триггеров" и т. д.
А, и ВОТ ЕЩЕ!!! ТРЕТЬЕ!!! Что будет, если функция, создающая ГЛОБАЛЬНЫЙ триггер, будет вызвана ДВАЖДЫ?
Мой вариант ответа: 3. Т. к. строго говоря, триггер - это глобалка в теле карты, такая же, как глобальные переменные, глобальный триггер просто перезапишется и ничего страшного не произойдёт (ну кроме утечки триггера, мб).
Принятый ответ
в самой последней строке самой последней функции присваивай какое-то значение глобалке и будет тебе счастье знать, что всё закончилось успешно
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован ClotPh
Меня интересуют конкретные и максимально четкие ответы на вопросы.
//////////
Отредактирован ClotPh
При дополнительной инициализации удалять из существующего глобального триггера события, условия и действия и рушить его?
А не будет фатала, если такого триггера не существует?
Просто ведь если он перестанет инициализироваться через InitCustomTriggers, его, ятп, просто не будет существовать...
////////////////////
call InitTrig_EffortsForMulticast()
call InitTrig_FelaAll()
call InitTrig_NastyLightForMulticast()
call InitTrig_DepressionAll()
call InitTrig_LostVikingsAll()
call InitTrig_WaterInTheFaceForMulticast()
call InitTrig_HighTideAll()
call InitTrig_ConsciencePangsForMulticast()
call InitTrig_ChaplainAll()
call InitTrig_ColossusAll()
call InitTrig_KumbhakarnaAll()
call InitTrig_RelictAll()
call InitTrig_ZoroAll()
call InitTrig_AstronomerAll()
call InitTrig_RookieAll()
call InitTrig_PotentAll()
call InitTrig_OuroborosAll()
call InitTrig_MinisnakeAll()
endfunction
Отредактирован ClotPh
-разбивать все InitTrig_XXX на несколько блоков;
-проверять, сработала ли самая нижняя инициализация в каждом блоке.
Если она сработала, значит, в этом блоке лимит операций превышен не был.
Все правильно? Ятп - ДА.