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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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:
У тебя лимит потока просто, из за того что много триггеров.
Разве каждый триггер не в отдельном потоке?
0
26
4 года назад
0
Насколько понял его систему, у него изначально существует одна раса для космодесантников, а при старте игры игроки выбирают орден, за который предстоит выступать. Выбранный орден становится именем игрока. То есть у всех игроков за расу космодесанта одни и те же юниты в казармах, но при завершении обучения на них через способности навешиваются соответствующие элементы.

Diazon, а почему не сделал через разных юнитов в разных казармах у каждого ордена?
0
32
4 года назад
0
Vlod, изучи суть проблемы, ибо 100500 раз опысывалось, а потом про потоки пиши.
0
11
4 года назад
0
8gabriel8, да, так!
Даже если учесть что 10 разных юнитов в ростере, то на 30 орденов получается около 300..
Основа у всех одна. Орден дает визуал + некоторое количество специфических улучшений +/- иногда пару дополнительных юнитов.
В целом, очень удобно в текущей системе.
1
24
4 года назад
Отредактирован prog
1
Есть альтернативный путь - выдать всем юнитам все эти способности с визуалом сразу в РО, но отключить их изначально для всех игроков, а потом включить каждому игроку только те способности, которые соответствуют его ордену. Это позволит полностью избавиться от триггеров на вход юнитов на карту.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.