Столкнулся со специфической ситуацией: при добавлении триггера перестаёт работать ряд других триггеров. Между собой они не взаимосвязаны. Триггеры отключающиеся завязаны на переменных (локальных или как правильно называются, когда переменной устанавливаются через область?).
При удалении этого триггера все вновь работает.
В чём причина?

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
48
7 лет назад
2
Сталкивался с такой же ситуацией, помогла оптимизация переменных (занес все в массив). По триггерам не знаю, но стараюсь триггеры делать общие (одно условия для разных случаев, к примеру таймера).
0
32
7 лет назад
0
Есть лимит операций, а так же кривое гуи.
Вы превысили лимит операций напихав 100500 триггеров которые, функция инициализации которых уходит в обрыв потока, т.к превышает лимит операций потока.
Выход, подумывать о переходе на jass или более правильно использовать триггеры, не создавая овер 100500 штук.
0
12
7 лет назад
0
molot39, quq_CCCP:
Есть лимит операций, а так же кривое гуи.
Вы превысили лимит операций напихав 100500 триггеров которые, функция инициализации которых уходит в обрыв потока, т.к превышает лимит операций потока.
Выход, подумывать о переходе на jass или более правильно использовать триггеры, не создавая овер 100500 штук.
Снизить общее число триггеров?
"функция инициализации которых уходит в обрыв потока"
а можно по-русски, для ламера, буду благодарен.
Данные триггеры основаны основаны на условии "юнит атакован", в этом причина? Поможет ли изменение на условие юнит атакует?
0
32
7 лет назад
0
GRESHNIK1, все ваши красивые гуи - переводятся в jass интерпретатором в момент сохранения карты, все триггеры - это такие обьекты, как к примеру юниты которых вы видите, триггеры нужно сначала создать, потом добавить в них события и дейсвия, а их овер дофига.
Для инициализации гуи триггеров используется отдельная функция InitCustomTriggers( ), в нее записываются все триггеры которые нужно создать, перед стартом игры, в момент когда загрузка почти завершилась. В jass есть лимит операций, когда в одной функции очень много действий, которые превышают этот лимит, функция считается зависшей, и движок перестает её выполнять. Вот почему триггеры перестали работать - да их просто не создали.
Потом вопрос зачем вам столько триггеров?
0
12
7 лет назад
0
Ну, в целом триггеров очень много потому что в карте охватывается период с кампании Рока до начала ВОВ классик. Море квестов для 9 фракций, сюжетно связанных. Различные системы, триггерные способности и прочее...
Прошу подтвердить мое понимание:
В качестве решения получится ли использовать такую конструкцию:
Событие:
Юнит атакован
Условие:-
Действие:
Если атакованный юнит типа Х то ..... иначе если атакованный юнит У то ... - и так пока все объекты не будут перечислены?

Таким громоздким триггером заменить 10-к простых, будет ли эффект?
Я недоконца уверен, что понял суть - проблема в начинке или количестве триггеров?
quq_CCCP, прошу немного уделить внимания , сам всегда ввел сюжетную часть и юнитов. Триггерить пришлось с уходом омновного триггерщика.
1
32
7 лет назад
1
Дело именно в количестве триггеров а не в их начинки и назначении, создавать триггеры динамически по мере надобности в гуях нельзя, так что переходите на jass.
Принятый ответ
1
12
7 лет назад
1
quq_CCCP, попробую, благодарю за помощь.
0
48
7 лет назад
Отредактирован N7 Molot
0
GRESHNIK1: я имел ввиду что можно все функции вызывать общими событиями, к примеру: юнит атакован -> - -> развилка (if condition the\если событие то) и в них выставляем, кто, когда и почему. Или каждую секунду дается золото, меняются таблицы (2 шт.), и так далее.
Так же я чувствую что оптимизация не помешает. К примеру: юнит появился на карте - заносим в переменную и делаем отлов приказа через цикл выдаем действие.
И да, кстати, все GUI переписывается в JASS, посмотрите на карту глазом MPQ.
спасибо за лайки =)
0
26
7 лет назад
0
GUI-шные триггер по-мойму имеют лимит в 1000 штук.
Но это ограничение самого WE-TE
0
21
7 лет назад
0
GRESHNIK1, "Таким громоздким триггером заменить 10-к простых, будет ли эффект?" - да
и постепенно придется так сжимать все сильнее и сильнее
дальше тебе будет пока не понятно, но напишу:
а в конце концов вообще придется в custom code все писать и/или разбивать инициализацию на несколько потоков
вообще в идеале как понимаю программирование все должно быть в custom code
это как "истые геометры" транспортиры не любят, слишком казуальный прибор и ненадёжный
Но! Это все только потому, что ты овердохрена триггеров сделал. Если чуть-чуть триггеров для небольшой по сути задачи и игры - можно спокойно делать в гуи и даже с определенным уровнем утечек, разница по сравнению с JASS будет не заметна почти. А вот уж чем больше кода, тем больше требований к его качеству ;)
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.