Сразу предупреждаю, вопрос туповат, так как я сам в редакторе не мастер. Мне нужно сделать, чтобы определённая группа юнитов бежала в сторону одной области, а достигая её, сразу же начинала бежать в другую, но через миниальное количество триггеров. Я это делаю так - создаю новый триггер с событием "юнит входит в зону" и в условии я уже выбираю нужного юнита а потом действие. Проблема в том, что в группе 20 юнитов, следовательно для каждого из них нужно делать отдельный триггер, в итоге получается 20 почти одинаковых триггеров, и так каждый раз когда я хочу реализовать что-нибудь в таком духе. Есть ли способ делать такие вещи, но проще и с меньшим количеством триггеров?

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

На. Это более-менее костыльный вариант, но зато оптимизированное движение через бд и цикл в 1 триггере.
Увы на гуи нельзя отследить через условие в какую именно область зашел юнит, только через jass, но я сделал тебе через кс чтобы было понятней.
Globals это мы создаем регион, чтобы можно было обращаться к нему из любого триггера.
Инициализация создаем БД и события "юнит вошел в регион"
Через ESC создаем случайного юнита из БД
Int region самое сложно что тебе придется понять. Там нет события, но мы его создали триггерно в инициализации, так что представь что оно там есть.
Дальше через цикл прогоняются все 9 областей, через условие выясняем в какой именно регион зашел юнит. Дальше еще один цикл прогоняет всех юнитов, чтобы мы могли обратиться к конкретном. В данном случае юниты с индексом 6 и 7 - это грифон и вертолет, они будут двигаться против часовой стрелки, когда все остальные по часовой.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
23
3 года назад
0
Базы данных. Достаточно 1 триггера на вход в область для каждого региона
2
1
3 года назад
2
Obelick:
Базы данных. Достаточно 1 триггера на вход в область для каждого региона
А можно поподробнее что это и как реализуется? про базы данных в редакторе я до этого не слышал
0
23
3 года назад
0
БД это когда ты хранишь все необходимые данные о юнитах, способностях и т.д. в массиве. При обращении к БД прогоняешь все циклом и находишь нужные тебе значения по индексу.
2
1
3 года назад
Отредактирован QuestionsGuy
2
Obelick:
БД это когда ты хранишь все необходимые данные о юнитах, способностях и т.д. в массиве. При обращении к БД прогоняешь все циклом и находишь нужные тебе значения по индексу.
блин друг, спасибо что пытаешься помочь, но я сейчас как будто на другом языке комментарий прочитал. то что ты описываешь делается на гуи или только на джассе? потому что если на джассе, то это 100% не мой вариант. массив это, насколько я понял, делается через переменные? про цикл тоже без понятия
1
23
3 года назад
1
На гуи в том числе. Тебе что надо сделать? Движение юнитов на областям? Зачем тебе отдельный триггер на каждого юнита? Ты создаешь 1 триггер с 1 событием "юнит входит в область" и в этом триггере уже через ифы выполняешь свои необходимые действия. Но на каждый регион нужен отдельный триггер
2
1
3 года назад
2
в этом триггере уже через ифы выполняешь свои необходимые действия.
вот именно это мне и надо, можешь тут по подробнее? что такое ифы?
1
23
3 года назад
1
ща сделаю тебе
1
27
3 года назад
Отредактирован MpW
1
Ну можно сделать так. Регистр события обычно вешают на регион, а не на область!!!
В регион записываем все области. Область - прямоугольник (rect). А в регион можно записать все эти области. Расставляем все эти прямоугольные области в разные места на карте. Когда юнит заходит в одну из этих областей, срабатывает событие вход в регион. И нужно проверить в какую область, есть спец нативка проверяющая какая область. Циклом можно пробежаться по индексу/номеру области. Области можно пронумеровать, короче бд.
re[0]=Область..
re[1]=Область..
И вы задаете юниту номер направления, или номер области. Когда юнит входит в регион, чекаем область и номер какой, у него записываете номер, и отправляете дальше в след номер бежать.
5
23
3 года назад
5
На. Это более-менее костыльный вариант, но зато оптимизированное движение через бд и цикл в 1 триггере.
Увы на гуи нельзя отследить через условие в какую именно область зашел юнит, только через jass, но я сделал тебе через кс чтобы было понятней.
Globals это мы создаем регион, чтобы можно было обращаться к нему из любого триггера.
Инициализация создаем БД и события "юнит вошел в регион"
Через ESC создаем случайного юнита из БД
Int region самое сложно что тебе придется понять. Там нет события, но мы его создали триггерно в инициализации, так что представь что оно там есть.
Дальше через цикл прогоняются все 9 областей, через условие выясняем в какой именно регион зашел юнит. Дальше еще один цикл прогоняет всех юнитов, чтобы мы могли обратиться к конкретном. В данном случае юниты с индексом 6 и 7 - это грифон и вертолет, они будут двигаться против часовой стрелки, когда все остальные по часовой.
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.