Title 1Title 2Title 3Title 4
Title 1

Title 2

Title 3

Title 4

назад вперед
Информер
Главная » Статьи » Редакторы игрового контента » Статьи редактор WarCraft

Даммикаст или как сделать заклинания лучше
0. Словарик непонятных терминов

Молоток - заклинание 'Молот Бурь'
Спелл - Заклинание, Способность.
Кастануть - использовать спелл, Cast - произнести (англ)
Дамми - юнит, используемый нами как подставной для каста. dummy - кукла (англ.)
Jass - специализированный язык программирования высокого уровня, используемый для создания карт в Warcraft III.
Бафф - Статус юнита, точнее то, что заносится туда после каста на юнита заклинания. В русификации РО это называют Заклинание\Эффект.
Юнит - боевая единица
Невозможно - вычеркните это слово из вашего лексикона. Максимум можно заменить на "можно, но через одно место"
РО - Редактор Обьектов - Лучшее, после jass, что есть в World Editorе. К сожалению, многие мапмейкеры предпочитают строить из себя кул-хацкеров, делая самые примитивные спеллы через триггеры ( даже не через Jass, который действительно рулит, а через банальные тригги).

1. Вступление.

Эта статья, повествует про универсальный способ изготовления триггерных заклинаний, называемого даммикаст.
"А зачем оно мне?" спросишь ты. Хорошо, я отвечу.
Хотел ли ты когда нибуть сделать спелл, который при использовании бьет врага молниями, которые каждые 3 сек бьют вражеского героя сверху? А может, например, ты хотел пустить вокруг своего героя огненные дыхания?
...но скорее всего, тебе казалось, что сделать это - нереально трудно. Нет, не спорю - в первом случае, можно давать вражескому герою абилку, принудительно кастовать её и забирать. Во втором - можно поставить банальный бафф. В третьем - тоже как нибуть выкрутится...
Но зачем? Если можно сделать все это:

1. Быстрее
2. Надежнее
3. Эффективнее.
4. Можно сделать не только это.

Итак, если вам все ещё интересно, переходим к делу.

2. Что-же есть такое этот ваш даммикаст?

На самом деле, этот способ прост до гениального. Юниты могут использовать способности и атаковать. Но иногда нельзя, чтобы это делал именно кастуюший юнит. Это будет некрасиво, криво, да и вообще может не получится.
Что мы делаем? Мы создаем в Редакторе Объектов (Ты ведь знаешь что это такое?) нового юнита - незаметного, неуязвимого, не выделяемого.
Многие из новичков спросят - а как сделать незаметного\не выделяемого? Таки все ак же через Редактор Объектов.
Незаметный:
У каждого юнита есть графа "Файл Модели". Там можно выбрать из стандартного набора варика, можно - из импортированных в карту. Но так же можно задать свой путь... Нам оно и надо. Задаем путь "Qwerty" (можно любую другую белиберду). Так же есть графа "Физический размер" - поставьте 0, иначе юнит может мешаться другим. "Тип передвижения" - Парящий, чтобы не активизировать им мины и другие чисто-наземные эффекты. "Графика - Особый": Не должно быть. Ещё (по совету Орлят) можно поставить высоту полета больше 1750, т.к. это - высота камеры, но необязательно

Неуязвимый\невыделяемый:
Добавьте юниту способности "Москиты" (ВНИМАНИЕ!!! Не геройскую, а юнита.)

Отредактируйте юниту ману и хп. по единички обоих этих параметров будет лучше всего. Скорость передвижения - максимальную(на всякий случай, может понадобится, чтобы юнит быстро бегал.) "Радиус обзора" - нулевой. Возможные атаки: Нету атаки (если не используется даммиатак). Уберите ему все классификации, убейте все возможные апгрейды. Поставьте минимальное время разложения, а в тип разложения: "Нельзя воскресить, разлагается.".
Итак - наш дамми готов! Можете проверить - без специальных действий этот юнит никак не виляет на игру. Его не трогают никакие спеллы, он не может быть поднят в качестве скелетов, сам он не дает обзора и мы не можем его использовать.

Quote ( Подсказка DrKirk)
Чтобы юнит не вызывал взрыв мин, достаточно дать ему классификацию "Нейтральный" в РО. Это дает ещё несколько преимуществ = юнита не будут автоматом бить (а так как модель мы ему убрали - выделить его для направления атаки нельзя, следовательно юнита необязательно делать его неуязвимым. Также можно будет использовать спеллы на самого дамми (пример этого - ульт Crystal Maiden в Доте, там создаются дамми в области вокруг нее, и кастуют сами на себя нову), и использовать фишку с вампиризмом и атакой(см. ниже)).
Ещё, чтобы юнит не умирал, можно дать ему максимальное здоровье равное нулю, а для регистрации смерти - триггерно отслеживать получение урона. Но это используется, когда дамми не удаляются, так что если вы не собираетесь хранить дамми всю игру, этого не делайте.

Что теперь? Зависит от того, что вы хотите реализовать.
Предположим, мы хотим сделать заклинание, которое наносит урон, накладывает молчание и замедляет. При этом к цели летит снаряд, и происходит это все только когда он долетает.

3. Реализация.

Итак, за непосредственно нанесение урона мы возьмем заклинание "Лик смерти".
Quote (Вопрос)
Почему не любимый всеми молоток? Потому-что "фишка" любимых всеми карт, как дота и т.д., когда цель на 0.01 секунды оглушаеться (т.е. сбиваются приказы, требующие поддержки заклинания, прерывается более долгий наложенный до этого стан), на самом деле есть невозможность убрать этот эффект из спелла молотка.

Единственный минус - как не крути, враждебного юнита с классификацией "Нежить" он атаковать не может, но это легко избежать, просто не используя классификацию "Нежить". Но если вы считаете, что так - не готично\гламурно\не_для_эмо\не_по_кулхацкерски, то, как предлагает 0pJl9!Ta, можно использовать спелл "Кислотная Бомба", с радиусом действия 1 - она не только бьет всех кого надо, но ещё и бафф накладывает.
Что у нас будет накладывать молчание и замедлять???
Quote (Ответ)
Именно наш дамми-юнит, посредством переделанного заклинания "Пламя обреченности"
Пламя обреченности было бы универсальным спелом, если бы не молчание, которое у него как и стан на молотке. Ибо он может наносить урон, замедлять\ускорять атаку и передвижение, увеличивать\уменьшать урон... ммм, вкуснятка.)

Что именно нам понадобится изменить?

Во-первых: Допустимые цели на "Лике смерти". Нам же не нужно, чтобы он в добавок ещё и лечил своих? Урон+Манакост+Кулдаун по вкусу.

Quote ( Подсказка DrKirk)
В варике есть универсальный спелл - пустышка под названием "Канал". Более подробно про его использование вы можете почитать в статье ShadowTheAge. Так же если
поставить изначальный урон 0, и паузу между доп уронами меньше времени действия, то
циферок не будет, да ещё и бафф появится.

Во-вторых: "Пламени обреченности" ставим нулевой кулдаун, требования по мане. Радиус цели - 999. Урон в секунду - единицу или меньше, но не 0, и уменьшение атаки. По вкусу выставляем длительность и замедление.

Quote ( Подсказка )
Ускорение достигается путем выставления отрицательных параметров

Quote ( Подсказка )
Если хотите, чтобы карта не вызывала рвотный рефлекс, да и просто было удобнее, баффы лучше настроить

Отлично. Теперь у нас есть готовые спеллы, сам дамми юнит, не хватает только триггеров.
Создание триггеров - это уже, какое никакое, а программирование. Без четкого алгоритма - тут делать нечего. Так что, определимся с алгоритмом.
Даммикаст (Юнит-кастуюший, Юнит-цель, Заклинание)

Шаг1: Определить координаты юнита-цели.
Шаг2: Определить игрока-владельца Юнита-кастуюшего.
Шаг3: Создать по найденным координатам Даммми, принадлежащего найденному игроку.
Шаг4: Приказать Дамми использовать Заклинание на Юнита-цель.
Шаг5: Уничтожить Дамми.
Шаг6: Ловить кайф от проделанной работы.

Собственно, когда есть алгоритм, остается самая простая часть - создание.
Разберем каждый шаг алгоритма по порядку.

Определение координат и игрока: Этот шаг мы пропускаем - при использовании триггеров или языка jass, мы определим их в других действиях. Хотя как нулевой пункт, я бы рассмотрел, на какое событие мы будем совершать наши действия? Естественно, на каст спеллов! В данном случае - на переделанный "Лик смерти", но часто используют пустышки- спеллы, которые ничего не делают.
Создать по найденным координатам Даммми, принадлежащего найденному игроку: Делается действием "Боевая единица - Create Unit Facing Angle"(Можно использовать и Point - ничего фатального не изменится), кол-во создаваемых юнитов - 1(А куда больше? ^^), Тип юнита - наш дамми, позиция - позиция юнита-цели.
Приказать Дамми использовать Заклинание на Юнита-цель: используется действие "Боевая единица - Issue Order Targeting A Unit", где заставляем мы кастовать нашего дамми (Либо - Last Created Unit, либо запоминать созданного дамми в переменную), приказ - "Повелитель Огня - Пламя Обреченности"(Это - ордерстринг заклинаня "Пламя обреченности". В jass это soulburn), а цель - Юнит-цель.
Уничтожить Дамми: Тут есть несколько способов. Самый простой это использовать "Боевая единица - Add Expiriation Timer" на 1 сек нашему дамми, предварительно делая его взрывающимся при смерти (триггером есс-но. Помните, изменение поля "Графика - Особый"? Там содержалась анимация взрыва.). Другой способ - просто удалить дамми, подождав 1 сек.
Ну и самый (имхо) верный, это с использованием джасса. Тогда наш даммикаст точно не создаст утечку памяти, и у нас не будет сложностей с распознанием юнита. Домашнее задание - прочитать статью Sergey'a "Осваиваем jass".

4. Уловки

Теперь ты знаешь, что такое даммикаст. Если ещё немного подумаешь сам - поймешь, что и как с помошью этой штуки можно сделать. Я хочу рассказать тебе несколько уловок, которые направят на путь истинный.

Уловка первая - Делаем молнию a la "как в доте у зевса" (и не только).
Вы замечали, что у него анимация молнии другая, не как у стандартной Грозы.
Да. Там используется анимация "Цепь молний". Делается это просто - Делаем нашему дамми в РО в поле "Высота полета" - около 600. Даем ему на дамми каст способность "Цепь молний" (Если действительно хотите научится, важно понять. Так что как настраивать её обьяснять не буду), а нашему герою - способность-пустышку. Так-же можно сделать, чтобы молния сжигала ману, для этого нужно поигратся со спеллом "Магический огонь".

Уловка вторая - Пускаем вокруг себя пламя.
Тут мы будем использовать спелл - пустышку, который используется без наведения. Отлично подойдет "Оскорбление", только настройте радиус воздействия.
Создаем несколько дамми на позиции кастуюшего, и заставляем их кастовать спеллы через цикл, в точки, с разным углом от юнита. Ниче не понятно ? Объясняю. В триггерах вара есть такая штука - полярная проекция. Фактически она помогает нам найти точку, лежащую на окружности с центром в позиции с нужной точкой. Т.е. Есть окружность с радиусом 300, есть юнит в её центре, есть нужный угол - 30 градусов. Полярная проекция даст нам возможность легко использовать эту точку. Нулевой градус стандартно считается с крайней правой точки окружности. В триггерах она зовется Polar Offset.
Ещё раз повторяю, что если обьяснить вам тупо на уровне "А куда ножимать?", то вы ничему не научитесь. Да и вобще, это объяснение для тупых. Вы себя тупым считаете? Если да, то лучше в ТМ не заходите.
Но это лирическое отступление. Итак, если подумаете и поковыряете эту штуку, вскоре вы её познаете.
Единственное, предостерегу - если криво расчитать углы, то спелл может нанести урон два раза - волна наложится одна на другую, а то и на третью.

Уловка третья - Дамми-атака.
Суть её в том, что иногда можно не кастовать спеллы при помощи дамми-юнита, а атаковать им. Главное - точно расчитать все, чтобы небыло приколов типа двух атак и промахов. Вобще, метод опасный и редко использующийся. И единственное применение которое я ему нашел - это спел типа "Цепь Молний" не с эффектом молнии, а со снарядом - достигается даванием дамми-юниту атаки как у Охотниц ночных эльфов. И то - как обойти промахи я так и не нашел.

Quote (Замечание DrKirk)
Если дать дамми вампиризм с отрицательным значением, и не делать дамми неуязвимым, то нам не придется удалять его после даммиатаки. Обойти промахи можно используя крит со 100% шансом

Уловка четвертая - ауры на область, а не вокруг юнита.
...достигается не мгновенным удалением дамми. Можно создать что-нибуть типа "Атомного удара" - Приземляется бомба. На площадь наносится урон (как у голема). Создается дамми (можно кстати голема и использовать. но - микростан -\-), с аурой на -скорость бега. Ловится кайф.

Уловка пятая: Очередь Дамми
Заключается в том, что мы не создаем\удаляем дамми-юнитов при касте, а просто вызываем их. Это позволяет сберечь время на процедуру создания юнита.
Самми же дамми либо создаются на карте ещё в редакторе, либо на 0.1 секунде игры. Определяются в массив, и используются по мере нужды. Чтобы случайно не отвлечь уже используемого дамми, можно отмечать его баффом, либо регистрировать это полностью триггерно. Далее - цитата ДиоДа, на случай, если я опять что-либо не так понял:
Так как наложение бафа несёт в себе событие нанесения нуля урона, для изменения очереди дами юнитов достаточно накладывать бафф на этого юнита скажем в 30 секунд, как только юнит получает 0 урона второй раз он теряет бафф и его можно использовать опять.
такая фича убирает необходимость в таймерах так как юзается движок игры напрямую.
бафф само-собой стан от молотка, еще такая функция не позволит дами атаковать лишний раз, ну а для забора случайных атака надо при появлении юнита на карте выдавать ему классификацию "рабочий"

В аттачах приложены де карты с дамми - на первой сделан спел, на примере которого все и описывалось. Вторая - альтернативный дамми-юнит.

Прикрепления: Test_DummyCast.w3x(10Kb) · Dummy.w3x(13Kb)

Исходник на форуме

Категория: Статьи редактор WarCraft | Добавил: DrKirc (17.03.2009)
Просмотров: 3776 | Рейтинг: 5.0/6
Всего комментариев: 0
Имя *:
Email *:
Код *: