Нужна помощь с тригерами, а именно сделать следующее:
  1. У нас есть спец. здание (далее радар)
  2. Когда радар построен одним из игроков, то вокруг радара появляется круг видимости размером X
  3. Если радар уничтожен, то поле убирается.
---- Проблемы ----
Я уже делал через простые триггеры подобное, но вечно были проблемы и ошибки в работе, например:
  1. Убиралось поле видимости не того радара. (Не уничтоженного, а того который был построен последним, несмотря на то что все триггеры указывали на "умирающего юнита")
  2. Поле видимости не пропадало.
  3. Поле видимости появлялось сразу после начала строительства радара, т.е можно было не достраивать его, а видимость всё равно была.

Так делал модификатор видимости для постройки:

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

Значит, что-то неверно делаешь.
А, ну да, Extremator забыл указать, что модификатор нужно уничтожить перед обнулением.
Extremator всё указал, но незаметно.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
7
26
5 лет назад
Отредактирован Extremator
7
Нужно произвести запись пары юнит+модификатор
И в нужный момент находить спаренный с ним модификатор
При окончании строительства здания добавляй ячейку массива и записывай пару.
set R_Max = R_Max + 1
set R_unit[R_Max] = построенный юнит
set R_vision[R_Max] = последний созданный модификатор видимо ти
или сразу... = создать модификатор
В нужный момент определяешь что радар разрушен, и ищешь его пару
Цикл А от 1 до R_Max
если умерший юнит = R_unit[A]
set N = A
удалить модификатор R_vision[N]
И перезапись делаешь
if R_Max > 1 then
set R_unit[N] = R_unit[R_Max]
set R_vision[N] = R_vision[R_Max]
endif
set R_unit[R_Max] = null
set R_vision[R_Max] = null
set R_Max = R_Max - 1
Ну как-то так, я делаю обычно.
Всё работает. И принцип простой.
0
26
5 лет назад
0
Сделай два радара, один с нужным обзором, другой без. Триггер:
С: Юнит Завершает строительство
У: Тип юнита (Построенный юнит) равно Радар1
Д: Боевая единица - Заменить (Построенный юнит) на Радар2
Но могут быть проблемы с картой пути, когда какой-нибудь юнит встанет вплотную, тогда радар сместится.
0
21
5 лет назад
0
8gabriel8, я думаю автор хочет чтобы радиус обзора зависел от чего то, вроде разума героя. поэтому он не может просто использовать юнитов с заранее заданным радиусом обзора в РО.
0
26
5 лет назад
0
Как вариант, можно скрывать юнитов рядом, делать замену, потом раскрывать.
biridius, да, это меняет дело. Жаль, что автор мало описал принцип работы. Вообще представляю, что радар должен видеть невидимых юнитов и всё такое, тут уже так просто не получится, когда радиус обзора переменный.
0
26
5 лет назад
0
модифицировать радиус видимости можно подзорной трубой. при постройке выдавай абилку с нужным радиусом
0
28
5 лет назад
0
Hate:
модифицировать радиус видимости можно подзорной трубой. при постройке выдавай абилку с нужным радиусом
Ею нельзя обойти кап в 1800, если нужно больше, то только способом Extremator.
Но я бы вместо R_Max проверял, что R_Max != N.
0
3
5 лет назад
0
biridius:
8gabriel8, я думаю автор хочет чтобы радиус обзора зависел от чего то, вроде разума героя. поэтому он не может просто использовать юнитов с заранее заданным радиусом обзора в РО.
Нет, у меня будет юнит - статичный радар. Он просто будет давать обзор, пока жив.
PT153:
Hate:
модифицировать радиус видимости можно подзорной трубой. при постройке выдавай абилку с нужным радиусом
Ею нельзя обойти кап в 1800, если нужно больше, то только способом Extremator.
Но я бы вместо R_Max проверял, что R_Max != N.
1800 для меня и в правду очень мало, примерные размеры это 3000-6000 радиус обзора.
Extremator:
Нужно произвести запись пары юнит+модификатор
И в нужный момент находить спаренный с ним модификатор
При окончании строительства здания добавляй ячейку массива и записывай пару.
set R_Max = R_Max + 1
set R_unit[R_Max] = построенный юнит
set R_vision[R_Max] = последний созданный модификатор видимо ти
или сразу... = создать модификатор
В нужный момент определяешь что радар разрушен, и ищешь его пару
Цикл А от 1 до R_Max
если умерший юнит = R_unit[A]
set N = A
удалить модификатор R_vision[N]
И перезапись делаешь
if R_Max > 1 then
set R_unit[N] = R_unit[R_Max]
set R_vision[N] = R_vision[R_Max]
endif
set R_unit[R_Max] = null
set R_vision[R_Max] = null
set R_Max = R_Max - 1
Ну как-то так, я делаю обычно.
Всё работает. И принцип простой.
Извиняюсь сразу, но можно немного более подробно/наглядно? Я хоть и знаком с редактором многие года, однако в массивах, переменных и прочем не очень хорошо разбираюсь, точнее вообще не разбираюсь. :с
3
26
5 лет назад
3
Создай три переменные, например, нажав кнопку с жёлтым Х в редакторе триггеров:
  • R_Max - Целочисленная;
  • R_unit - Боевая единица, поставив галку массив;
  • R_vision - Модификатор видимости, тоже поставив галку массив.
Далее, наверное, осилишь, раз много лет редактор знаешь.
0
26
5 лет назад
0
FeeBeey, сейчас - нет, не могу ничего наглядного дать. Нет возможности.
0
3
5 лет назад
0
Вроде сделал всё как нужно, но всё никак не могу понять откуда, и что такое null, подскажет кто?
0
26
5 лет назад
0
Пустое значение. Если для юнита можно выбрать Нет боевой единицы, то для модификатора видимости даже не знаю, не делай ничего.
Либо не используй модификатор видимости R_vision[0], к нему приравнивай более не нужный R_vision[R_Max]. Только всё это теория, надо в игре смотреть, нужно ли это вообще.
0
3
5 лет назад
0
Как не делаю, всё выходит одинаково. Построил радар - видимость появилась. Уничтожил радар - видимость осталась.
1
28
5 лет назад
Отредактирован PT153
1
Значит, что-то неверно делаешь.
А, ну да, Extremator забыл указать, что модификатор нужно уничтожить перед обнулением.
Extremator всё указал, но незаметно.
Загруженные файлы
Принятый ответ
0
26
5 лет назад
0
PT153, найди на странице фразу "удалить модификатор".
Чтобы оставить комментарий, пожалуйста, войдите на сайт.