Шаблонные решения систем триггеров

Содержание:
Эта система позволит сделать так, чтобы войска противника "искали" игрока всегда, без простаивания.
Глобальные переменные
Units = (Empty unit group) <Unit Group>
Сам триггер
Attack Nearby Enemy for Units
    Events
        Timer -Every 1.0 seconds of Game Time
    Local Variables
        _targetPlayer = 1 <Integer>
    Conditions
    Actions
        Unit Group -Pick each unit in Units and do (Actions)
            Actions
            	Unit -Order (Picked unit) to ( Attack targeting (Position of (Closest unit to (Position of (Picked unit)) in (Any units in (Entire map) owned by player _targetPlayer matching Excluded: Missile, Dead, Hidden, with at most Any Amount)))) (Replace Existing Orders)

Пояснение к коду
  1. Для начала нам нужен отдельный триггер, который будет заниматься поиском ближайших целей для каждой единицы в группе.
Здесь в примере он назван как Attack Nearby Enemy for Units
  1. На этот триггер добавляется периодическое событие Periodic Event. Вообще лучше бы завести свой отдельный таймер с переменной для него, так вы сможете динамично изменять частоту обновления приказов, но для примера пойдет и обычное периодическое событие.
  1. Возможно понадобится одна локальная переменная для атакуемого игрока. Почему возможно? Да в целом потому, что обычно принято хранить номера активных игроков в отдельных глобальных константах, которые уже всюду во все системы триггеров и подставляются
  1. Также нам понадобится одна глобальная переменная такая как Units, в ней будут все единицы которые должны будут искать своих врагов
  1. Сразу же, мы начинаем перебор всех единиц из группы Units
  1. Каждой единицы из группы отдаём приказ "Attack" с помощью действия issue order, только отдаём мы этот приказ как "приказ направленный на точку" (Order Targeting Point, а не Order With No Target). Именно на точку нужно, чтобы приказ атаки отдавался не как "фокус единицы", а скорее как "в направлении единицы", ведь если указывать на конкретно единицу, то наша атакующая единица пойдёт целенаправленно атаковать указанную единицу, а если указывать на точку, то атакующая единица пойдет в направлении цели, параллельно атакуя всех кто встретится на пути
  1. В качестве точки выбираем функцию Position Of Unit. Это вернёт позицию указанного в параметр юнита.
  1. А в параметр мы передадим функцию Closest Unit To Point. Она принимает группу единиц и точку, а отдаёт единицу из этой группы, которая расположена ближе всех остальных к переданной точке
  1. Точку укажем как Position Of Unit с указанным в ней текущим Picked Unit юнитом. Это для того чтобы определить ближайшую цель к нашей перебираемой в цикле атакующей единицей
  1. А в качестве группы единиц укажем функцию Units In Region Matching Condition с переданным в параметром игрока как наша локальная переменная _targetPlayer, а регионом как Entire Map. Этим мы получим всех единиц целевого атакуемого игрока, которых будут атаковать наши атакующие единицы

Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...