Всем привет!
Делаю карту по мотивам WH40k где в зависимости от Ордена на космодесантика навешиваются соответсвующие доспехи и оружие (сделано путем простого добавления абилки с соответствующим спецэффектом при появлении юнита)
Скриншот триггера, вроде как очень простого, приведен на скриншоте. При этом если включено больше чем 21 такой триггер, например 23 то карта багается - сами триггеры перестают работать, юниты сливаются в одну кучу и игра жутко лагает и Warcraft 3 пересатет отвечать.
Неужели в редакторе есть ограничение на количество триггеров начинающихся с Unit enters playable map area с которым может справитсья игра?
При этом, на карте вообще может не быть юнитов которые бы запускали триггер, однако само их наличие во включенном состоянии крашит карту.
Кто-то может помочь разобраться в чем проблема? Задача очень простая - в при появлении юнита, давать ему N абилок в зависимости от игрока владельца. Но уже самих орденов сделано около 30..И это не считая хаоситов. Таких триггеров нужно много...
Карта прилагается (ссылка внизу) в варианте который который заставляет игру глючить при запуске. Для того чтобы все было нормально нужно отключить пару любых триггеров на обвес маринов. Сама карта еще достаточно пустая, но я сделал очень много моделей и решил начать собирать их в игре.

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
4 года назад
0
У тебя лимит потока просто, из за того что много триггеров.
Принятый ответ
0
11
4 года назад
0
quq_CCCP, спасибо!
А что можно с этим сделать?
То есть я вообще не могу в карте включить больше триггеров с событием Unit enters region?
1
26
4 года назад
1
Нужно объединять. Делаешь вместо всех 23 триггеров 1 с событием входа, условия убираешь, а в действиях ставишь много If/Then/Else (multiple...), куда ставишь условия и действия триггеров, Else оставляй пустым.

В If/Then/Else тоже делай объединение, например, первым If проверяешь орден, если Black Templars, Then дать чёрный цвет юниту, Armour и Shoulders (если общие для всех), потом опять If/Then/Else уже с проверкой на тип юнита, когда навешиваешь остальное.
0
3
4 года назад
0
23 триггера это конечно жестоко, объедини все в один и все норм будет, вырезаешь и вставляешь, и все
0
11
4 года назад
Отредактирован Diazon
0
8gabriel8, lizzardfyll, Спасибо за мнение!
Именно так и было у меня изначально. Да, когда у меня было 5 огромных триггеров карта работала но..
Сам триггер получался очень лагучим сам по себе. Любое действие внутри него подгружалось секунды 3 и что-то в нем искать было тоже трудно когда этих If/Then/Else стало больше 40
И это только на обычных Десатников.............
Я тогда решил разбить на мелкие...
Что можно в итоге суммировать? Даже делая огромные триггеры с перебором условий мне нужно деражть в голове что не более 20 таких может быть?

2
17
4 года назад
Отредактирован Vlod
2
Diazon, под какую делаешь версию вара, владеешь каким-нибудь языком программирования?
0
11
4 года назад
Отредактирован Diazon
0
Vlod, привет! Нет, я умею делать модели и текстуры рисовать. В триггерах только на ГУИ разбираюсь :х
Делаю в Рефорджевском редакторе карт
0
3
4 года назад
0
если ты шаришь в модельках, то в варике тогда лучше делать все это через смену скинов, а не добавлении способностей
0
7
4 года назад
Отредактирован Morningstar
0
зачем ты даешь им абилки? я полагаю у тебя есть очень веская причина не добавлять их через РО. Но некоторую оптимизацию ты всё же можешь сделать.
во-первых, если у всех космодесантников есть общие абилки (рюкзак, общие айтемы), то их добавь в РО, чтобы в триггерах было как можно меньше строчек.
Во-вторых не обязательно сразу давать абилку, как только он появился. Можешь сделать систему очереди. То есть когда юнит появляется, он ставится в очередь. А очередь определяет тип юнита и вызывает необходимую функцию добавления абилок.
Как сделать?
1. Добавляются в очередь юниты как раз таки событием Unit enters playable map area и "Занести в очередь".
2. Очередь вызывается таймером каждые (0.05, условно) сек и проходится по юнитам, которые в неё добавлены.
Тут всё обойдется минимальным джассом, но это не сложно и будет тебе только в большой плюс.
Определяет их тип, допустим десантник хаоса и добавлят ему абилки которые ему нужны.
Допустим у тебя будет массив переменных Desantnik_chaos из ability, и там будут нужные для него абилки. Так вот триггер пройдется по массиву и каждый раз будет добавлять абилку, до окончания массива. (Допустим у него 4 способности, то цикл будет состоять из 4х итераций и по итогу добавится 4 абилки).
Условно, когда юнит заносится в очередь она вытаскивает абилки из этого массива и добавляет их юниту.
Если сказать просто, то у тебя будет база данных для каждого юнита. И очередь будет смотреть что это десантник хаоса и вытаскивать из базы какие абилки у него есть и добавлять ему.
Таким образом ты избавишься от создания кучи триггеров и получишь что-то вроде базы данных, когда не надо будет в случае патча менять во всех триггерах, а просто настроить кому что будет даваться. Убиваешь сразу много зайцев.
Разумеется я полагаю у тебя все несколько сложнее, но и структуру ты должен сформировать локально чисто для твоего случая.
1
32
4 года назад
1
Кароче надо все переписать на жасс или луа, и сделать через добавление эффектов а не абил
2
17
4 года назад
2
quq_CCCP:
У тебя лимит потока просто, из за того что много триггеров.
Разве каждый триггер не в отдельном потоке?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.