Добавлен KlounDoink
Перестали работать триггеры связанные с регионами такие как юнит вошел в область, даже те которые работали до этого.
Заметил что они перестают работать по мере добавления новых триггеров (Не только связанные с регионами)
Есть ли предел размера карты или количество триггеров? Такие ощущения что я достиг макс - предела, карта весит 470кб
Еще заметил что после теста карты (КАРТА НЕ ЗАВИСАЕТ) я не могу выйти из варкрафта 3(Варкрафт не отвечает).. приходится выключать вар в диспетчере, а стоит удалить ЛЮБЫЕ(АБСОЛЮТНО ЛЮБЫЕ) триггеры из карты так всё прекрасно работает! (Словно я освободил место)
Как то так
Итог.. Триггеры все рабочие.. но с добавлением новых триггеров перестают работать старые триггеры связанные с регионами даже такие как
Юнит Вошел В зону
Игра показать текст: Бла бла бла
PS Использую GUI NewGen WE
Заметил что они перестают работать по мере добавления новых триггеров (Не только связанные с регионами)
Есть ли предел размера карты или количество триггеров? Такие ощущения что я достиг макс - предела, карта весит 470кб
Еще заметил что после теста карты (КАРТА НЕ ЗАВИСАЕТ) я не могу выйти из варкрафта 3(Варкрафт не отвечает).. приходится выключать вар в диспетчере, а стоит удалить ЛЮБЫЕ(АБСОЛЮТНО ЛЮБЫЕ) триггеры из карты так всё прекрасно работает! (Словно я освободил место)
Как то так
Итог.. Триггеры все рабочие.. но с добавлением новых триггеров перестают работать старые триггеры связанные с регионами даже такие как
Юнит Вошел В зону
Игра показать текст: Бла бла бла
PS Использую GUI NewGen WE
Принятый ответ
Я думаю, все дело в лимите потока, ибо 193 триггера - это много.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. nvc123
кроме того если изначально не делать кучу триггеров, а делать более универсальные системы то это экономит кучу времени т.к. немного подумать и написать триггер на 20 строк намного быстрее чем написать 10 триггеров по 10 строк каждый
хотя выигрыш во времени сильно зависит от скорости мышления
при загрузке карты стартует поток main в котором устанавливается большинство начальных параметров карты (расставляются юниты по карте, создаются триггеры и прочее)
каждая строка кода вызывающаяся в пределах этого потока (создание триггера, добавление к нему условий и действий, создание юнита и т.д.) занимает некоторое количество операций
как только количество выполненных операций в потоке достигает определённого количества (лимит потока) то поток обрывается и все последующие строки не выполняются
при срабатывании триггера (например юнит вошёл в регион, прошло 10 секунд с начала игры и прочее) для действия этого триггера создаётся новый поток
таким образом объединять стоит лишь схожие по смыслу триггеры т.к. триггер с большим количеством строк и вложенными циклами также может достичь лимита потока
большинство новичков делают его по принципу: 1 рецепт - 1 триггер
что очень плохо как с точки зрения затраченного времени на создание этих триггеров
так и с точки зрения ресурсов компьютера (компьютеру необходимо пройтись по всем триггерам и проверить условие каждого из них)
в то время как правильно продуманная система позволяет обойтись лишь 1 триггером
Ред. nvc123
Ред. KlounDoink
Еще вопрос.. условно 1 триггер занимает 1 поток.. а если в один триггер добавить 3 условия.. то триггер будет занимать как один поток или как 3 ? Надеюсь понятно написал.. у меня просто много регионов и для каждого не хочется писать отдельный триггер... если что я пишу триггеры НЕ на jass)
Ред. PT153
15к строк кода, капец, даже в моей карте 9к строк vJass.
При срабатывании события создаётся "поток" для функции, где находятся все условия триггера. Если все условия выполнены, то создаётся "поток" для функции, где находятся все действия. Про лимит потока тебе уже сказали выше.
Ещё поток обрывается, если делаешь какую-то дичь, вроде деления на 9 или взятие значения переменной, у которой этого значения нет.