Я хочу в этой статье представить способ создания простейшего AI, который будет управлять вражескими героями и\или героями ваших союзников. Этот материал направлен на то, чтобы помочь новичкам создать свой первый AI. ---------- Для начала давайте разберёмся, за что будет отвечать каждый триггер по отдельности. Триггер 1 – отвечает за патрулирование случайной точки карты. Триггер 2 – отвечает за атаку противников, находящихся в небольшом радиусе от героя. Триггер 3 – отвечает за движение героя к источнику жизни, если у него менее 100 здоровья. И, наконец, триггер 4 – отвечает за воскрешение героя, в случае его внезапной смерти… Хочу добавить, что если в вашей карте много героев, то процесс воскрешения можно делать не отдельно для каждого героя, а уместить в один общий триггер. ---------- Вы должны знать, что в своей статье я не привожу пример идеального AI, здесь предложены лишь только его основы. (Но ведь это лучше, чем ничего). В своей статье я не описываю подробное создание карты и героев в ней. Я только лишь описываю создание триггерного AI. ---------- Итак, начнём-с! Выберем на панели инструментов какого-нибудь героя (например, повелитель огня). Пусть он будет нашим врагом. Заходим в редактор триггеров. Создаём там отдельную категорию, в которой будет находиться AI для вражеского героя. Назовём её “PovelFireAI”. Внутри этой категории создаём четыре триггера: “Patrul”, “Attack”, “Life” и “Voskreshenie”. А также создадим переменную “Vrag” с типом “Боевая единица”, она нам понадобится чуть позже. * Patrul * - пишем событие для первого триггера: Время – Every 10 seconds of game time Действие: Боевая единица – Order <вражеский герой> to Патрулировать (Random point in (Playable map area)) //<вражеский герой> - герой, для которого вы пишете AI * Attack * Событие: Боевая единица – A unit comes within 1700.00 of <вражеский герой> Действие: Set <переменная “vrag”> = (Entering unit) Боевая единица – Order <вражеский герой> to Атаковать <переменная “vrag”> //<переменная “vrag”> - переменная, которую вы создавали чуть ранее, не забыли про неё??? //<вражеский герой> - герой, для которого вы пишете AI * Life * Событие: Время – Every 5 seconds of game time Действие: If Здоровье <вражеского героя> меньше 100 Then Триггер - Turn off Patrul Триггер - Turn off Attack Боевая единица – Order <вражеский герой> to Двигаться (Center of <созданная область возле источника>) Wait 60.00 seconds Триггер - Turn on Patrul Триггер - Turn on Attack Else Триггер - Turn on Patrul Триггер - Turn on Attack //<созданная область возле источника> - небольшая область, которую нужно создать возле источника жизни * Voskreshenie * Событие: Боевая единица – <вражеский герой> умирает Действие: Герой - Instantly revive <вражеский герой> at (Random point <созданная область возле источника>) Показать revival graphics
|