[Статья]Создание триггерных скилов:Отряд/цикл/ифзен - Форум


Правила форума ·

  • Страница 1 из 1
  • 1
Форум » Warcraft III » Библиотека » [Статья]Создание триггерных скилов:Отряд/цикл/ифзен (На примере скила "Канал")
[Статья]Создание триггерных скилов:Отряд/цикл/ифзен

SunCreep

#1
Создание триггерных скилов:Отряд/цикл/ифзен

для тех,кто ниже среднего


Итак,это уже третья статья из цикла "по созданию триггерных скилов",так что пора уже изучать серьёзные вещи.Хотя,они скорее не серьёзные,а очень полезные и упрощающие работу.
Все вы наверняка слышали о скиле Канал,это абсолютно пустой скил,который не делает ничего.Его польза в том,что ему можно выставить любой id приказа и он не будет юзаться одновременно как если дать герою две абилки с основой на "Лик смерти".Что ж,давайте создадим нужную нам абилку.
Установка канала,параметры: у способности канал(нейтрально-враждебные,герои,ниже абилки "кабан") есть 5 параметров,которые нам нужно настроить:
-----
•Изображение - если галка стоит,то в игре у юнита,владеющего скилом,будет иконка это способности.Параметр обязателен,если вы делаете юзабельный скил.
•Изображение указателя цели - если стоит галка,то при использовании у вас будет круг,как у всех массовых заклинаний;"огненный столб","огненный дождь","ЗовСила природы".Если мы ставим этот параметр,то нужно так же ставить величину этой самой области.В графе "область воздействия" ставим нужный диапазон.
•Материальное заклинание - точно не изученная вещь,но,если я не ошибаюсь,то если галка стоит скил не работает на остралоподобные скилы,"Изгнание в астрал" к примеру
•Универсальное заклинание - если галка стоит,то скил будет действовать на неуязвимых к магии чертов.Ежели нет,вы получите игровое сообщение о том,что цель неуязвима.
•Только ручное применение - этот параметр определяет суть приказа группе.Если у вас группа юнитов с этой абилкой,то если параметр стоит для каждого юнита нуждно указать цель,иначе,они будут юзать скил одновременно.
Итак,вот что получилось у меня:

Вы увидели ещё один параметр,который я изменял:Данные:Тип цели.Если там выбрано "нет",то скил срабатывает сразу при нажатие,как "божественный щит" или "удар по земле".Если тип "боевая единица" то целью будет считаться только юнит как в скилах "молот бурь" и "лик смерти",если "точка",то только точка,как к примеру "волна силы" или "тёмная стая".Если "Точка или боевая единица" то целью могут служить юниты и точки одновременно,как сборный пункт у зданий,к примеру.
Данные:Следовать в течении времени.Если ваш скил кастуемый,то тут вы устанавливаете нужное кол-во времени на его прокастовку.
Данные: Отключить прочие способности.Если галка стоит,то у вас отнимается контроль над юнитом и заклинание не возможно отменить.К примеру скил "Teleportation" у Furion в DotA`е.Раньше,в старых версиях,у него даже анимация была родная.
Данные: Длительность графики.Периодичность графики.То бишь на указанное время на цель будет кидаться указанная вами графика.
Эффекты:
При касте способности на мага будет 1 раз наложен эффект, обозначенный в "Графика - Маг".
На цель эффект накладывается периодически, с периодом обозначенным в "Данные: Длительность графики". Установите значение 0, чтобы эффект наложился 1 раз (при касте).
Если ваша цель - юнит, то наложенный спецэффект берется из "Графика - цель", если точка - то берется из "Графика - Эффект". Куда будет приложен эффект для мага (над головой, к руке и.т.п), настраивается в "Графика - точки приложения заклинания 1" (и "точки приложения заклинания 2"). Куда будет приложен эффект для цели выбирается в "Графика - воздействие на цель 1" (и до 6).
-----
За выделенный кусок статьи,я благодарен ShadowTheAge.

Теперь,когда у нас есть сама способность,кстати,вот что получилось у меня:
,мы можем приступить к созданию действий.
Итак,триггеры:
Для начала создадим нужные нам переменные:

Достаточно большое кол-во переменных,неправда ли?))Ну прежде чем создавать скил я объясню что именно за скил мы делаем,опишу его.
Суть скила такова: юнит указывает область,в которой будет взрыв.Взрыв наносит определённый урон и в центре зоны появляется 5 вихрей.Вихри идут по 5 разным направлениям и засасывают к себе всех врагов.
Кажется 5 вихрей,которых нужно двигать,и враги,которых нужно двигать относительно вихрей! Ужос!Но тут нам помогают 3 очень важные функции: "Выбрать отряд","Для каждого числа А делать","если/то/иначе".
Итак,приступим.
Первый триггер выглядит вот так:

Это самый большой триггер,так что можно вздохнуть.Что тут происходит,расписываю по порядку.
•Да бы не было осложнений я выключаю триггер сразу.Когда мы "выключаем триггер" мы выключаем не действия,а событие,то бишь действия которые ниже пойдут,но они не начнутся заново,т.к. выключено событие.
•Устанавливаю переменные для угла поворота наших вихрей.
•Устанавливаю нашего кастера
•Теперь важная переменная.Я об этом ещё не говорил.Выглядит оно вот так:

Собственно это эпицентр нашего заклинания.То бишь точка-центр области заклинания.
•И устанавливаю отряд.Число 350 потому,что в способности диапазон области тоже равен 350.
•Далее уже знакомый нм CS,на удаление утечки отряда.
•Выбираю каждого юнита в нужном нам отряде и наношу урон.Я поставил просто 200,но если вы делаете заклинание проявите смекалку и знание арифметики.К примеру: (LvL of abiliti*50).
•Создаём эффект этого "взрыва" и отмечаем его в переменную
•Далее первое применение цикла.Тут я создаю юнита(я создал на основе пехотинца,заменил модель на Торнадо,дал неуязвимость и способность москиты),помечаю его в переменную,и нахожу конечную точку в которую он должен попасть(позже поясню).Так как Location5 нам уже не понадобится я её удаляю.
•Включаю триггер движения
•Запускаю таймер на триггер очищения утечек
--Next--
Следующий триггер ответственен за движение вихрей и юнитов вокруг них:

•И сразу цикл.Суть в том,что я даю команды сразу 5 вихрям,а команды для них одинаковы.Но то,что делает их разными это те самые конечные точки.Как помните они зависят от угла поворота,который мы настраивали в начале.
•Итак,поворачиваем нашего юнита к конечной точке чтоб во время движения он не сбивался с круса
•Устанавливаем позицию и смешение нашего юнита,двигаем
•Далее знакомый CS и блок функций,пихаем под цикл отряд,а под отряд ифзенку.
•Условия,как видно,убирают из целей всех союзников,здания,и юнитов игрока кастера
•устанавливаем переменные смещения,двигаем,удаляем утечки.Тут что касается движения.С этой формулой мне сильно помог H_A_PK.Итак о формуле.
Установить Location7 равно (полярное смещение,Location3, (расстояние между точками Location6 и Location3)-4, (угол между точками Location6 и Location3) + 14.40)
•вот тут внимательно,ставим удаление точки не в ифзенку с отрядом,а после них,но в цикл.
--Next--
Теперь очищающий триггер.
Он работает по прицепу таймера с событием на его истечение:

•Выключаем "двигатель"
•Удаляем эффект взрыва
•Удаляем вихра,обнуляем переменную.Об этом я говорил раньше,если у нас переменная массивная,то удаляем её циклом по данному CS.
•Включаем триггер который начнёт всё сначала
•Удаляем точки,которые неизменны.Но тут ошибка.Location2 я должен удалить не тут,а в триггере Движения,там же где и Location3.

Ну собственно всё)).Теперь при юзе скила у вас враги в области получат нужный урон.Появятся торнадо и они пойдут в разные стороны,засасывая врагов)
Если со стороны систематики,то всё достаточно просто.
Наш юнит смотрит в уже установленную нами сторону и смещается до "конечной точки",которую мы тоже уже рассчитали.Рассчитали мы её для того,чтоб направлять юнита туда,ибо если не заставлять его поворачивать,он сойдёт с курса,агрясь на врагов.Двигаем наших юнитов относительно их угла поворота туда,попутно ловя всех кто в диапазоне 180 от них.Как только засекли гада,что посмел приблизиться,мы проверяем подходит ли он по условиям,ежели да крутим по формуле.Собственно как только таймер динь-динь мы убиваем наших юнитов и выключаем всё кручение.

Вот наработка скила,тут всё сделано как показано на скринах.
Спасибо за прочтение,автор статьи: SunCreep

H_A_PK

#2
Подшил в оглавление
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D
Форум » Warcraft III » Библиотека » [Статья]Создание триггерных скилов:Отряд/цикл/ифзен (На примере скила "Канал")
  • Страница 1 из 1
  • 1
Поиск: