WarCraft 3: Как сделать чтобы монстры шли по определенному пути.

База примеров на GUI
Триггер вроде бы и простой но иногда ставящий людей в ступор. Пример основывается на создании области при попадании в которую крип перенаправляется в ту или иную сторону. Уверен вы уже создали область в которой появляются крипы
скажем "Область1"

Крипы идут из области в область

Пример А. Крипы нападают на все что попадется им на пути

Теперь создадим еще 1 область, при попадании в которую крипы будут перенаправляться в центр карты.:
скажем "Область2"
И поставим что крипы появившиеся в "Область1" идут в "Область2" и поворачивают в центр карты.

> ??Событие:??
> -Боевая единица - A unit enters "область1"
> ??Условие:??
> ??Действие:??
> -Боевая единица - Order (Triggering unit) to перейти, нападая на противников (Center of "Область2")


> ??Событие:??
> -Боевая единица - A unit enters "Область2"
> ??Условие:??
> ??Действие:??
> -Боевая единица - Order (Triggering unit) to перейти, нападая на противников (Center of (Playable map area))

!!Если за место "перейти, нападая на противников" поставить "Двигаться" то монстры будут идти к месту приказа не отвлекаясь.

Пример Б. Монстры идут из А в Б через определенное время

(периодический приказ)

> ??Событие:??
> -Время - Every 10.00 seconds of game time
> ??Условие:??
> ??Действие:??
> -Боевая единица - Order (Triggering unit) to Двигаться (Center of (Playable map area))

Подведем итог

  1. Если использовать переодический приказ, юниты начинут "тупить", чтобы этого небыло требуется добавлять их в переменную типа "Отряд" и управляйть уже ими через переменную.
  1. Очень важно в условии во всех примера это указать кому принадлежит юнит иначе триггер будет действовать безраздельно на всех юнитов
  1. Если во всех примера за место "перейти, нападая на противников" поставить "Двигаться" то юниты будут идти к месту приказа не отвлекаясь на когото, и обходить все припятсятвия.
  1. Не забываем что выше перечисленное это простые примеры, а при сложных это не только дойти из пункта "А" в пункт "Б". а например:
Из А в Г через Д в конечную точку Б
Из А по условии времени в точки Б или В в точку Д через Г
Из А в Б по условии Условия через точку Г в точку Д или конечная точка В
Как видите фантазия в ваших головах.

Просмотров: 6 756

Sergant1000 #2 - 5 лет назад 0
ок спс
Тимур #3 - 5 лет назад 0
Иногда они не доходят. Например, если юнита, идущего в область окружили враги так, что он не может двигаться, то он перебьёт их (если сможет) и остановится.
Sergant1000 #4 - 5 лет назад 0
Тут я не знаю как поступить, только если не отдавать приказы тригером через опр время.
Zahanc #5 - 5 лет назад 0
Лично я относительно изящно решил эту задачку с перемещением юнитов по маршруту с учётом того, что большое количество приказов может вызвать лаги и с учётом построения. Но алгоритм полностью на jass.
И да, опубликованый пример далёк от идеала. Как, скажем, провести юнита не из пункта А в пункт Б, а по маршруту из пунктов А, Б, В, Г, Д? В старой академии была карта-пример от Msey, но я не могу найти тему.
Sergant1000 #6 - 5 лет назад (отредактировано ) 0
bladget, по маршруту из пунктов А, Б, В, Г, Д мой пример показывает как провести из А в В через Б(всеголишь сокрашенный вариант), а вариантов путей много можно сделать чтобы юнит шел:
Из А в Г через Д в конечную точку Б
Из А по условии времени в точки Б или В в точку Д через Г
Из А в Б по условии Условия через точку Г в точку Д или конечная точка В
Как видишь вариантов много, и еще при варианте когда юниты входят в область перенаправления то они получают индивидуальный приказ не действующий на всех юнитов что в свою очередь не создает таких лагов как в приказе отданом всем через определенно время.
Zahanc #7 - 5 лет назад 0
Чтобы не было лагов при периодическом отдаче приказа нужно заносить юнитов в группы и проверять их текущий приказ, а делать триггер для каждой области для перенаправления очень утомительно + то, что сказал Тимур. Ещё можно ради экономии памяти отдавать приказ не одному юниту, а отряду, правда тогда юниты могут тормозить. Зато будут ходить стройными рядами!
Sergant1000 #8 - 5 лет назад 0
В группы я так понимаю можно заносить математически в массивную переменную, скажем при 20 юнитах в "переменной 1" как тока она заполняется то юниты заносятся в "переменной 2" и так по очереди. А чтоб не рассуждать о Жизни, может все таки попробуем сделать пример???
Zahanc #9 - 5 лет назад 0
Говорю же, есть примеры в старой академии, от Msey, но я не могу их найти, а мои алгоритмы на jass.
Нашёл пример о котором говорил.
Forceek #10 - 5 лет назад 0
Как сделать чтобы шли в зону только те воины, которые только что появились, а не все, которые вошли в эту зону?! я че-то не нашел как указать какому игроку принадлежат эти войка. помогите пожалуйста.
Sergant1000 #11 - 5 лет назад 0
для этого используют (Last created unit)
если тебе нужно чтобы конкретный тип юнита шел туда куда тебе надо, то это надо указывать это в условии.
OchenZloi #12 - 4 года назад 2
а как сделать так например чтобы враждебный юнит появился из области и атаковал ему враждебного
Roman91 #13 - 7 месяцев назад 0
Не работает ваша схема. У меня в карте гидра, мне надо, чтоб она вылезла из озера на сушу. Перепробовал способы, получается только кинуть гидру командой move. На команды типа issue order она не реагирует. Пробовал пикать ее в области и давать приказ выйти на берег, ноль эмоции. А так гидра спокойно выползает на берег, путь не переркрыт
Сейчас карту покажу, сами увидите
ОГО! 4 года назад последний раз тут были
Толку ноль сюда писать
Тимур, Посмотри, если не сложно. Гидра команду не слушает.
Roman91:
Не работает ваша схема. У меня в карте гидра, мне надо, чтоб она вылезла из озера на сушу. Перепробовал способы, получается только кинуть гидру командой move. На команды типа issue order она не реагирует. Пробовал пикать ее в области и давать приказ выйти на берег, ноль эмоции. А так гидра спокойно выползает на берег, путь не переркрыт
Сейчас карту покажу, сами увидите
Тимур, Sergant1000,
прикреплены файлы
Maniac_91 #14 - 7 месяцев назад 0
Roman91, не слушает она команду, потому что спит. Чтобы решить эту проблему, нужно отредактировать всего лишь одно значение:
Редактор объектов - Характеристики - Спит - Нет.
Roman91 #15 - 7 месяцев назад 0
Maniac_91, Спасибо) Я уж думал редактор глючит))
Roman91:
Maniac_91 А ты не поможешь мне. Я хочу, чтоб гидра выходила на сушу либо ночью, либо днем, но днем используя приманку выманить из озера. Просто подскажи, если не сложно
Maniac_91 #16 - 7 месяцев назад (отредактировано ) 0
Roman91, если приманка - это предмет, то можно проверять его наличие в инвентаре входящего юнита. Если способность (в том числе способность предмета) - то проверять её применение и наличие юнита в области. Проверка времени суток - это сравнение реальных чисел (Time of day вроде).
Roman91 #17 - 7 месяцев назад 0
Maniac_91:
Roman91, если приманка - это предмет, то можно проверять его наличие в инвентаре входящего юнита. Если способность (в том числе способность предмета) - то проверять её применение и наличие юнита в области. Проверка времени суток - это сравнение реальных чисел (Time of day вроде).
Я там так подправил приманку.Сделал в любое время суток вызвать можно, и Зелье дня на триггерах. Просто делает время 6 00. Криво правда, на многих триггерах. Потому что гидра опять уплывает в озеро. Но это скорее всего из за того что она нейтрально-враждебная. Вообще хочу, чтоб предмет в определенную область выкладывать, а когда гидра подходит, предмет удалять.А предмету дать вид кролика например. Я с реальными числами вообще не понимаю как работать. Темный лес для меня.
Maniac_91 #18 - 7 месяцев назад 0
Roman91, есть проверка в условиях (логическая - Область содержит предмет). А вообще можно сделать используемый предмет со способностью призыва того же кролика).
Сравнение реальных чисел в условиях: Игра - Time of Day > 6.00 И Time of Day < 18.00