Создание карт типа Hero Arena. Некоторым может показаться, что World Editor – это очень простая среда для создания собственных карт. Через некоторое время большинство понимают, что это не так и начинают плотно изучать эту среду, остальные же просто бросают свои карты и занимаются своими делами. Эта статья написана в помощь тем, кто недавно начал создавать карты и ещё не совсем освоился в среде World Editor’а. Создание арен можно разделить на три этапа: 1) создание рельефа 2) герои 3) создание триггеров. Каждый из этих пунктов мы будем рассматривать отдельно. 1. Создание рельефа. Первое, что необходимо создать - рельеф. Для карт типа Hero Arena необходима несколько иная обстановка внешнего вида, чем для обычных сражений (например, большинство всех декораций ставится симметрично). С чего же начать? Для начала неплохо бы представить себе размер карты. Когда я начал заниматься созданием карт, то столкнулся с небольшой проблемой. Я создал карту типа Hero Arena размером 96х96. Небольшая карта, для развлечения. А потом захотел пихнуть туда наработку DimonT’а - вещмешок. Но для этой наработки необходимо было 18 свободных клеток на карте. Естественно на моей маленькой карте я такого места не нашёл и пришлось увеличивать свою карту, а после этого её внешний вид стал гораздо хуже. Ну как, представили? Если нет, предлагаю создать карту размером 96х96 с ландшафтом – Летний Лордерон. Она будет не слишком маленькая и не слишком большая, т.е. – в самый раз. Теперь нужно придумать цель для нашей карты (можно делать карты совсем без цели, просто – стенка на стенку; но в такую карту будут играть максимум два дня). Мы цель брать не будем. Представим себе рельеф карты. Если некоторым это поможет, можете набросать примерный план на бумаге. Если в голову ничего не лезет, сделайте так: 1) По краям карты сделайте ограничения, просто поднимая уровень поверхности 2) По углам сделайте две базы (например, в верхнем правом углу ваша база, а в нижнем левом – вашего противника), но сделайте их так, что бы между базой и самой ареной были проходы, через которые может свободно пройти герой. 3) По центру, от одного края до другого, проведите полосу мелководья воды, шириной около 2 жёлтых клеток 4) С левой и правой сторон, ближе к краям, сделайте два спуска, чтобы, если кто-то захочет перебежать на другую половину карты, обязательно бежал через воду 5) В центре уже созданной нами полосы поставьте какого-нибудь монстра (например – Забытого (если не можете найти какой-то объект, делайте так: зайдите в редактор объектов, выберите там соответствующую вкладку и нажмите Правка --> Поиск; в появившемся окошке введите нужное вам название, а когда редактор найдёт его, просто щёлкните по нему правой кнопкой мыши и выберите "Выбрать на панели инструментов")). Итак, небольшой рельеф готов. Конечно, он получился несколько невзрачный, но вы ведь не собираетесь посылать его куда-то. =) Каждый может делать рельеф как ему нравиться, но нельзя забывать о железобетонных принципах строения рельефа. Например, вам ведь не понравиться видеть совершенно разные куски от ландшафта "Город", разбросанные как попало, а тем более в аренах такое вообще категорически запрещается (если так не было задумано)! Надо думать в первую очередь о том, что понравиться не вам, а игроку, играющему в вашу карту. В таких картах совсем не обязательна прорисовка мелких деталей, таких, как бочки, доски, камни и т.д. и т.п. Надо лишь создать играбельность (не многим понравиться карта, в которой после воскрешения приходится бежать час до нужного места). На этом о рельефе пока всё. Если вы хотите, можете почитать статьи о рельефе, которые содержат больше информации (например "Заметки натуралиста" Mefist'а), а пока, мы переходим к следующему этапу создания карты – герои. 2. Герои. Нам нужно выбрать героев для нашей карты. Залог её успеха – многообразие и разнообразие героев и способностей. Но о втором можно пока не беспокоиться (если вы не знакомы с понятием "триггерное заклинание"), потому, что лучше не делать своих способностей в редакторе объектов. Да, это легко, но они получаются однообразными, ведь делаются они на основе стандартных спеллов. Советую почитать статью, переведённую Markiz’ом - "Триггерные заклинания" (автор оригинала - linkmaster23). В ней описывается создание простеньких, но нестандартных триггерных заклинаний. Остановимся на героях. Главное – использовать нестандартных героев. Когда игрок видит перед собой новые модели, он хочет посмотреть, как они движутся, атакуют, какие есть спецэффекты. Если вы знакомы с моделированием в War3, то можете сами отредактировать стандартную модель. Если у вас возникает вопрос "А где же взять героев?", то советую открыть глаза и перейти в раздел "Моделинг". Конечно, героев там не будет, но будут разные модели, которые подходят для новых героев. Второй принцип – героев должно быть много (в нашем случае этот принцип не играет никакой роли, ведь карта маленькая, и соответственно героями на ней не похвастаешься). Также необходимо несколько увеличить уровень героя (хотя бы 20). Для этого нужно зайти в "Игровые константы" (Дополнительно --> Игровые константы) и найти там строчку "Максимальный уровень героя". Что бы изменить её, поставьте галочку возле "Использовать нестандартные игровые константы". Поставьте там своё значение. Но это ещё не всё! Найдите строчку "Набранный героем опыт: таблица сокращения монстров". Там будет пять строчек, в каждой из которых своё значение. За что они отвечают? Возможно, вы не замечали, но в картах для сражений герой не раскачивается на монстрах выше 5 уровня, и даже если убить с десяток Древних Красных Драконов ничего не измениться. Проведите параллель: пять строчек в константах --------- пять уровней. Догадались? Правильно! Каждая из строчек отвечает за свой уровень: первая за 1, вторая за 2, и т.д. В первой строчке стоит цифра 80. Это процент. За каждого убитого крипа (монстра) даётся определённое количество опыта. Цифра 80 означает, что на этом уровне герой получит 80% опыта от этой цифр. Например, за крипа дают 100 опыта, тогда, если убить его на первом уровне дадут 80 опыта, на втором – 70, и т.д. Если нужно, что бы герой раскачивался на крипах до какого-то определённого уровня – добавьте столько строк, сколько нужно уровней. Непременный атрибут для героев – предметы. Предметы можно создать в обычном редакторе объектов, но иконки лучше скачать новые. При создании новых предметов лучше не использовать банальные названия типа "Крутой меч" и т.д. Но хватит уже о героях, пора и про триггеры вспомнить. [CENTER]3. Создание триггеров.[/CENTER] Эту часть статьи я разделил на два раздела: 1) триггеры непосредственно для игры 2) прочие триггеры. В разделе "триггеры непосредственно для игры" будут описываться те триггеры, которые превращаю нашу карту в арену, а в "Прочие триггеры" – всё остальное. Начнём по порядку. Что такое триггеры? Это своеобразная связь между человеком, ничего не понимающем о языках программирования и JASS'ом, который использует War3. С помощью этого редактора можно сделать очень многое, но не всё (об остальном узнаешь из других статей). Если хочешь узнать об устройстве триггеров, советую почитать статью RESPONSOR'а "Редактор триггеров". А мы начнём с самого начала. Выбор героев. Заходим в редактор War3. На панели инструментов выбираем "Панель областей" и создаём на карте новую область. Поставьте её на своей базе где-нибудь в уголке и назови FaerLord. Рядом поставь, например, светлячка. Затем переходим в редактор триггеров. Для выбора героев нам понадобиться всего одно событие. Итак, создаём папку (предварительно удалив папку "Инициализация", нам ведь не нужен городской центр в игре =) "Выбор героев" и в ней событие "SelectFaerLord". Заготовка готова. Пока это лишь пустое событие, но это ненадолго. Итак, смотрим несколько выше, и ищем кнопку с красным флажком. Эта кнопка добавляет события. Нажмите на неё и в выпадающем списке выберите "Боевая единица – Unit Enters Region". Ниже появить красная надпись Region. Нажмите на неё и в появившемся окне нажмите кнопку "Выбрать". Появиться ваша карта, где надо найти свой регион и щёлкнуть по нему. Это означает что, событие сработает, когда юнит войдёт в наш регион. Но событию без разницы, какой это будет юнит и для этого существуют условия. Снова поднимаем глаза вверх (да не в потолок!), на кнопку "Новое событие". Справа от неё можно найти кнопку с зелёной стрелкой. Эта кнопка добавляет условия (оно добавляется так же, как действие). Теперь добавим условие: 1) Тип: Unit Type Comparison. 2) Нажмите на строчку (Unit-type of (Triggering unit)). В появившемся окне нажмите на надпись Triggering unit. И теперь, в выпадающем списке выберите Entering Unit. 3) Теперь нажимайте OK, пока не придёте к первоначальному окну, но теперь в нём будет написано не (Unit-type of (Triggering unit)), а (Unit-type of (Entering Unit)). Надпись "равно"[U] не трогайте, а сразу переходите к надписи [U]"Пехотинец"[U]. Вместо пехотинца нужно выбрать светлячка (я думаю несложно догадаться, как это сделать). 4) Теперь у нас есть условие: (Unit-type of (Entering Unit)) равно Светлячок. Теперь расшифрую первые три пункта. Unit Type Comparison – сравнить тип указанного юнита (у нас [U]Entering Unit) с тем, кто нам нужен (со светлячком) и если эти два значения совпадут, начнутся действия. Действия мы начнём с того, что перейдём на нашу карту и добавим ещё кое-что. Сначала найдите на панели юнитов Повелителя Огня (он будет в нейтрально-пассивных) и поставь на свою карту рядом с областью FaerLord (желательно сзади, что бы наш светлячок подходил к герою спереди). Пока Повелитель Огня никому не подчиняется, он сам по себе. Но это пока. Затем, для индикации своей области поставьте над ней какой-нибудь объект. Предлагаю выбрать "Магический Круг" (он тоже находится в нейтрально-пассивных, но что бы его увидеть нужно строчку "сражение" изменить на строчку "кампания"). Теперь поставьте ещё одну область в центре базы, и назовите её "Start". Наши приготовления готовы. Теперь переходим в редактор триггеров. Добавляем первое действие: Боевая единица – Change Owner. В нём вместо юнита ставим нашего Повелителя Огня. Нажимаем на строчку с Player'ом. Там, в выпадающем списке выбираем "Owner of unit" и несколько ниже появиться строка "Owner of Triggering unit" нажимаем на синенькую надпись и там выбираем "Entering unit". Расшифрую. Передать Повелителя Огня игроку, которому принадлежит вошедший юнит. Следующее наше действие – "Боевая единица – Move Unit". Там их будет три, выберите первое действие. Затем вместо Triggering unit подставьте нашего Повелителя огня, а затем нажмите на вторую синенькую надпись. Там нажмите на ещё одну надпись Playable Map Area и нажмите на кнопку "Выбрать". Найдите свою область Start и щёлкните на неё. Это значит, что выбранный нами Повелитель Огня переместиться в область Start. Не слишком нужное действие, но так красивее. Последним действием мы уничтожаем светлячка. Делаем это обязательно действием Remove, а не Kill (так как при втором действии юнит просто умирает и остаётся в памяти игры, что её и засоряет; конечно, светлячок - не такие уж и большие потери, но при длительно игре таких трупов собирается всё больше и больше, а в этом случае могут начаться тормоза). Создаём действие "Боевая единица - Remove". А вместо Triggering unit ставим Entering unit. Последним действием нужно отключить этот триггер (вам ведь не хочется, что бы вашего героя вдруг нагло отобрали). Для этого, мы создаём действие Триггер – Turn of Далее оставляем всё как есть и нажимаем OK. Наш выбор героя готов. Для других героев проделай тоже самое, но с нужными героями и новыми областями. Следующее событие в арене – воскрешение после смерти. Принцип его действия: 1) Боевая единица умирает. 2) Боевая единица воскрешается в указанном месте. Для начала, давайте разделим игроков на две команды. Пусть будет один герой за игрока красного – это будет команда 1, и второй игрок-компьютер за команду 2. Создаём событие Боевая единица – умирает, для практики поищите его сами (небольшая справка: там есть два разных события со смертью, но в одном нужно указывать умершего юнита, а во втором - нет; нам нужно второе). Кстати, запомните это событие, оно вам ещё понадобиться (и не только в арене)! Затем нужно проверить, какому игроку принадлежит умерший юнит и если он принадлежит команде один (игроку красному), воскресить в точке старт на базе игрока красного. Проверяем, кому принадлежит юнит: 1) Создаём новое условие: "Player Comparison". 2) В нём вместо Triggering Unit ставим Dying Unit. 3)Указываем игрока 1 (себя). Я думаю, здесь нет ничего сложного. Теперь воскресим умершего героя. Для этого есть событие: Герой – Revive (instantly). Мы будем воскрешать нашего героя, так что в качестве точки возрождения укажите точку старта на ВАШЕЙ базе (ведь вам неприятно будет очутиться на базе врага). Ну а в качестве героя, естественно, Dying Unit – умерший юнит. Тот же триггер нужно создать для воскрешения другого героя (естественно игрока и точку воскрешения нужно поменять). Следующий этап нашей арены – крипы. Но так как, некоторые предпочитают карту ТОЛЬКО с героями, можно их не ставить. Мы поставим. Сначала нужно выбрать время, через которое будут появляться наши крипы. Для начала возьмём 2 минуты (если кто-то не знает, время в War3 измеряется в секундах, так что вместо 2 минут мы ставим 120 секунд). В редакторе War3 создай две области: одна размером с половину карты и будет находиться на половине компьютера, а вторая, такая же – на вашей. Назовём их "Map1" и "Map2". Конечно, можно было бы использовать Playable Map Area, но тогда все юниты могут появиться где угодно – хоть на вашей половине, хоть на половине противника. Мы этого не допустим. Создадим новое событие с периодичностью раз в 120 секунд (событие: Periodic Events). В действии создадим цикл, с помощью действия For each Integer A do Multiple Action. Оставьте всё как есть, то есть не изменяйте числа (от 1 до 10). Это значит, что событие, записанное в цикле, будет повторяться от 1 одного до 10, т. е. – 10 раз. В цикле создаём юнита на случайной точке одной из областей Map (1 или 2). Для этого вам нужно создать событие вида: Create 1 (Random level 1 creep unit-type) for Нейтрально-Враждебный at (Random point in (Map1)) facing (Random point in (Playable map area)). Я думаю, не надо разъяснять, что и почему, но остановлюсь на этой части: [U]facing (Random point in (Playable map area)). Это, в данном случае, не играет никакой роли. Надеюсь, слово facing хоть о чём-нибудь напоминает? Эта часть показывает, куда будет смотреть наш юнит, нам это не важно, ведь он всё равно куда-нибудь побежит. Наш юнит создан. Теперь заставим его побегать. Для этого есть действие: Боевая единица – issue Order Targeting A Point. Доведите его до вида: Order (Last created unit) to Патрулировать (Random point in (Playable map area)). Ну а так как у нас цикл, то все события будут повторяться 10 раз, т.е. у нас появиться 10 разных юнитов 1 уровня. Тоже самое сделайте для другой половины карты. Теперь кое-что о прочих триггерах. Я не буду описывать их в этой статье, так как они не являются обязательными. Например, дуэль. Но если вы хотите, можете сами попробовать её сделать. Простенькая карта типа Hero Arena готова. Если есть время и желание можно поработать над некоторыми тонкостями карты (доработать рельеф и т.д.). Редактор триггеров открывает перед нами огромные возможности. Например, если совместить случайные числа (использовать как уровень) и действие "создание случайных юнитов определённого опыта", может получиться очень прикольно. Также с помощью триггеров можно сделать ИИ для компьютерного героя. Но здесь выбор такой большой, что даже не буду говорить. Конечно, мой ИИ не великолепен, я не отрицаю наличие кучи ошибок в нём, но всё же… С чего-то начать же надо?!