Как поменять скилы в дота 2

Обновлено: 07.07.2024

Итак вы открыли workshop, взяли в руки гайды и что? Ничего не понятно.
Как прилепить способность к герою? Стоп… А где вообще герой находится?
Сейчас мы обговорим эти моменты, потому что когда начинал я мне всего этого жуть как не хватало.
Сразу скажу под словом «проект» я подразумеваю полные играбельные исходники вашей карты. То бишь проект это карта либо на стадии разработки, либо уже разработанная.

Краткий словарь, чтобы не путались:

Партикль – эффект в игре. Если для вас будет понятно – спецэффект. Допустим когда Абаддон кидает щит, вокруг тела героя появляется прозрачный щит, это и есть партикль.
Панорама – игровой интерфейс, который картостроитель разрабатывает самостоятельно. Например: магазины способностей, видимые таймеры отсчитывающие время и прочее…
Кастомный – созданный картостроителем с нуля.
Оверрайдить, оверрайднутый – взятый на основе старого и слегка модифицированный. Допустим Миране можно изменить силу атаки и первую способность, мы просто берем старую мирану и переписываем всего 2 строки (атаку, и первую способность) остальное автоматически наследуется.
КВ – система ключ и значение. Например как будет выглядеть на КВ урон способности:

– говорит о том, что ключ это урон, а значение это урон. Здесь у способности 4 уровня, а значит 4 значения.
API – функция в ЛУА коде, которая позволяет совершать действия. Допустим, нанести урон, присудить победу игроку или воспроизвести звук.

1.1 Строение проекта, где что лежит.
Итак, для начала я покажу вам строение проекта. Где лежат все файлы и откуда что брать.
Создавая любой проект в редакторе, а именно действие происходит после нажатия кнопки “Create Empty Addon” (создать пустой проект).
Моментально создаются две папки: обе папки носят название вашего проекта, но пути к ним разные. Одна папка создается в директории content, другая в game, и обе отвечают за разные части нашего проекта.


1.1.1 Папка content.
Путь: Steam/steamapps/common/dota 2 beta / content / dota_addons / название проекта.
Здесь хранятся созданные партикли, модели и сам ландшафт карты с расширением vmap.
Имеется в виду когда карта создается, все партикли к которым вы указали путь будут обработаны здесь и затем перенесены в основную папку.
Отступление: Допустим вы создали партикль, изначально он имеет расширение vpcf. С этим расширением вы можете его изменять в редакторе партиклей, однако после пробного запуска карты, он дублируется в папку game с расширением vpcf_c и тут уже его нельзя редактировать, его будет читать непосредственно в игре. С панорамой такой же эффект, разрабатывается она непосредственно в папке content, однако компилируясь переходит в папку game, где приобретает другое расширение файлов.

То есть контент это своего рода подготовочная платформа. Здесь все хранится в сыром виде, а после обработки редактором все переносится в оригинальную папку проекта.

Путь к карте content/maps
Путь к текстуркам content/materials
Путь к кастомным партиклям content/particles

Путь: Steam/steamapps/common/dota 2 beta / game /dota_addons/название проекта
Здесь святая святых вашего проекта. Здесь хранятся все ваши скрипты, файлы локализации, иконки и все преобразованные файлы с папки контент.
Начнем с самого сложного, со скриптов.
Папка scripts содержит в себе 3 папки.

Npc – папка содержащая ваших героев, кастомные способности, перезаписанных героев и все что может двигаться и атаковать. Тут в текстовом варианте содержатся ваши юниты, герои, способности.

Npc_abilities_custom.txt – файл отвечает за способности. Механика создания – стандартный датадривен и КВ.
Эти способности могут быть у различных юнитов, зданий, призванных существ, героев. Можно сказать, что это все кастомные способности вашей карты в одном файле. В одном файле их держать очень грузно, поэтому я позже подскажу вам, как распределить способности по папкам, и когда вы будете делать своего пятнадцатого героя - вы меня поблагодарите, ибо разбираться в файле, где 24 тысяч строк, мягко говоря, не очень удобно.

Теперь мирана будет иметь 4 новые способности, взамен старых.
Абсолютно таким же способом можно редактировать атаку, защиту и все параметры у юнита. Подробнее смотри в ссылке, которая выше.

Там рассматриваются основные параметры предмета, и даются базовые движки предметов такие как криты, орб, сплеш, лайфстил, блок урона, ауры и прочее. Хотя если вы очень хорошо знаете карту Жизнь на арене и много раз её играли, рекомендую скачать проект с гитхаба и детально рассмотреть файл предметов, способностей и прочего у себя на компьютере. Это очень интересно смотреть как другой автор реализовал ту или иную фичу у себя.


Npc_units_custom.txt – файл, содержащий в себе всех КАСТОМНЫХ юнитов. Это могут быть призванные существа, монстры, боссы и прочая нечисть не геройского типа.

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

Папка npc/vscripts
Здесь хранятся все ваши луа файлы. Это и весь игровой движок, и различные луа способности, которые вы создали.
Здесь скрипты можно распределять как угодно по папкам, поэтому здесь по сути нет архитектуры. Каждый автор упорядочивает по-разному.
Addon_game_mode.lua – тот самый основной файл, с которого все начинается. Он есть всегда и удалять его нельзя. Он отвечает за инициализацию вашего мода.
Настоятельно рекомендую установить проект barebones. Найти его можно в поиске на гитхабе.

Папка npc/shops
Внутри файлы отвечают за то, какие предметы вы будете видеть в магазине непосредственно в игре. Туда вставляются уже готовые кастомные предметы из файла npc_items_custom.txt

Пишите, чего тут не хватает, буду дополнять.

2. Коды, скрипты и их разновидности.
Всего две разновидности скриптов - datadriven и lua.
Луа это достаточно распространенный в разработке игр язык программирования, он очень удобен как раз для доты2.
Datadriven это система "Пемеренная" "Значение". То есть каждой переменной соответствует своё значение.

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


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

Итак все луа скрипты, как вы знаете, лежат в папке /vscripts
А датадривен в /npc

Вся работа в скриптах выглядит как работа в sublime. Есть подсветка кода для LUA. Удобство и подсветка синтаксиса – прежде всего.

barebones - уникальный аддон, с изучения которого рекомендуется начинать картостроения. Много здесь уже сделано за вас, и поверьте тут есть всё что вам нужно. Это как фундамент для дома, зайдя на него уже можно создавать готовый продукт. Дополнительным преимуществом этого аддона является наличие библиотек таймера, физики и отображения уведомлений. Для новичков это будет очень дельно.

форумчанам всем привет

собственно вопрос про " Переключение способностей "

смотрел стрим , и увидел что чел на дровке с забиндиными стрелами ( с лицом и скрин клавиатуры ( как раньше федор на тинкере играл)

спамит стрелами по кд, очень привлекло внимания , нашел подобную тему но ничего не понял. тк был накуреным . ищу помощи

Вместо использования такой способности вручную, игрок может включить её автоматическое использование. Некоторые такие способности являются уникальными модификаторами атаки. Когда функция авто-применения включена, способность будет применяться самостоятельно, без нажатия на нее. Например, Frost Arrows будет применяться каждый раз, когда Drow Ranger будет атаковать. При выключенном авто-применении это заклинание не будет активироваться самостоятельно. Не все способности имеют полное авто-применение. Некоторые из таких способностей являются базовыми способностями героев. Например, Bloodlust будет автоматически использоваться и выбирать союзника рядом по истечению перезарядки.

Список активных модификаторов атаки использующих авто-применение:

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

SniperX

Друзья CG

Этот гайд поможет поменять описание и название скилла и героев
1)Итак для начала заходим в \Steam\steamapps\common\dota 2 beta\game\dota_addons\mymemes\resource
2)И удаляем addon_english и другие файлы связанные с языками по типу addon_russian
3)И заного создаём файл addon_english
4)В файл закидываем

Вместо пример который стоит в "npc_dota_hero" ставим код героя
Например код героя акса "npc_dota_hero_axe"
А вместо пример который после кода героя стоит пишем желаемое название героя
А если хотите изменить название скилла и его описание и его лор то добавляем

Вместо код скилла прописываем его код
А вместо название скилла пишем желаемое название
А вместо описание скилла пишем его описание
А вместо лор скилла пишем его лор или кто его купил кароче лор пишется снизу описание скилла он мелко пишется но зато приятно!

vulkantsk

Супермодератор

I_GRIN_I

Друзья CG

SniperX

Друзья CG

SniperX

Друзья CG

ГЛАВНОЕ. У кого карта связанная с Overthrow в начале файла которого создаёте после строчек

Пропишите следующие строчки чтобы основные моменты игры (типо монетки) имели название

Вместо "addon_game_name" "Overthrow" можете вместо Overthrow написать своё желаемое имя для кастомки
Вместо
"DOTA_GoodGuys" "Бирюзовые тигры"
"[english]DOTA_GoodGuys" "Teal Tiger"
"DOTA_BadGuys" "Желтые обезьяны"
"[english]DOTA_BadGuys" "Yellow Monkey"
"DOTA_Custom1" "Розовые драконы"
"[english]DOTA_Custom1" "Pink Dragon"
"DOTA_Custom2" "Оранжевые псы"
"[english]DOTA_Custom2" "Orange Dog"
"DOTA_Custom3" "Синие петухи"
"[english]DOTA_Custom3" "Blue Rooster"
"DOTA_Custom4" "Зеленые бараны"
"[english]DOTA_Custom4" "Green Ram"
"DOTA_Custom5" "Коричневые крысы"
"[english]DOTA_Custom5" "Brown Rat"
"DOTA_Custom6" "Голубые кабаны"
"[english]DOTA_Custom6" "Cyan Boar"
"DOTA_Custom7" "Оливковые змеи"
"[english]DOTA_Custom7" "Olive Snake"
"DOTA_Custom8" "Фиолетовые кони"
"[english]DOTA_Custom8" "Purple Horse"
Ну типо Фиолетовые кони возьмём вместо него пропишем зелёные макаки и команда фиолетовых коней будет называтся зелёные макаки (я не уверен в этом ведь я это обычно редактирую в \localization\addon_russian\ но там тоже можете прописать так же как в resource первые строчки и сразу про команды писать а остальное не трогайте) и скобки в конце файла не забудьте закрыть

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

Форма создания способности и путь к файлам.

Стандартные способности в DotA 2 находятся в файле /scripts/npc/npc_abilities.txt
D2WT, при создании мода, предлагает нам не создавать новые абилки, а поверхностно переписывать стандартные через /scripts/npc/npc_abilities_custom.txt. Я выбрал файл npc_abilities.txt. Создал в нужной папке файл с таким именем и провёл начальную разметку.
Почему именно этот путь действий? Мне не нужны были лишние абилки в моём моде. Я просто удалил все стандартные и начал писать свои собственные новые. Если бы я пошёл по другому пути - у меня были бы стандартные абилки + мои. Не критично, но я захотел по-своему.

Начальная разметка npc_abilities.txt

Всё. Больше там ничего не нужно. Абилки будем записывать внутри фигурных скобочек (надеюсь вы понимаете, что они делают в коде)

Структура способности

Это основа. Внутри будем писать код способности.


Какую способность я делал, и что писал в коде:

У меня, с самого начала, была задумка сделать комплексную способность.
1. Это была бы автокаст-абилка с манакостом (как фрост арровс у траксы)
2. У неё был бы кулдаун после применения (как у ликвид файр жакиро)
3. Она применялась бы на врагов и была бы модификатором автоатаки (как всё вышесказанное)
4. При применении, она давала бы стан/министан, и не наносила урона цели
5. После попадания по цели, она отскакивала бы в другого врага и наносила урон уже ему, но другой (я не решил какой - пониженный или повышенный)

Я начал писать код.
Первым делом идут обязательные переменные (они находятся слева) и их значения (они находятся справа):

Весь код, отныне и далее, будет содержать переменные и их значения и ничего больше.

Дальше, так-как это модификатор атаки, мы создаём область, где будут отмечаться все последствия применения на разных временных отрезках.

Вот тут уже и проявляется структура действия абилок.
Сначала мы пишем в какой момент проявляется нужный эффект. Потом сами эффекты и нужные параметры.
Дадим название модификатору

Разберёмся с переменными модификатора. Для начала я нашёл похожую способность по действию - это фрост арровс траксы из Ночи Призраков.

Дальше я использовал событие "во каста орба", которое тоже одолжил у траксы. Сначала идёт название события, потом мы открываем скобку, задаём то, что произойдет в этот момент и закрываем скобки.

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

Мы закончили с модификаторами. Абилка сделана. Но у нас есть ещё парочка несуществующих переменных, на которые мы сослались. Определим их для игры.

Начинаем перечислять их после списка модификаторов.

В итоге, полученный код сохраняем, ищем нужного героя и меняем его, допустим "Ability 1" на нашу "название_способности"

В игре всё, теоретически, должно работать.

Весь код абилки:

Что же я получил на выходе:
1. Автокастовый модификатор автоатаки.
2. С манакостом.
3. Но без кд.
4. Станит врага при попадании, но наносит урон. :
5. При попадании создаёт новую автотатаку, которая вылетает из моего героя и попадает в рандомную цель в радиусе.

2.5 пункта из пяти. Почему? Потому что я не знаю всех перменных кода, который написаль в Valve.
Вы скажете: так возьми событие "OnOrbImpact" и напиши в коде, чтобы заместо "CreateBonusAttack" выполнялось действие типа "Rikoshet In Other Enemy Without Damage". Я отвечу: не могу, я не знаю какая переменная даёт такой эффект. Бонусную атаку даёт "CreateBonusAttack", стан - "Stun", а нужный мне эффект - не знаю. Где же твой реверс инженеринг? - спросите вы. "Подсмотри как делать рикошет у, например, Луны."
А вот тут и главная загвоздка - там, в коде абилки рикошета Луны, ничего об этом нету. Информация о стандартных абилках DotA 2 хранится где-то глубоко в ядре, и я туда не смог добраться. А в тхт-файлах представлены просто поверхностные сведения. Из них полезной информации не извлечёшь.

И так - со всеми переменными. Единственный источник примеров - другие, более пытливые моддеры и npc_custom_abilities.txt в папке режимы Ночи Прзраков, который содержит изменённые абилки героев с этого режима. Там-то сведения относительно полные, и можно подчерпнуть переменных, чем я и воспользовался.

Поэтому, если вы хотите сделать свою способность - либо учите ЛУА и пишите код с нуля, либо ищите список всех переменных. Иначе у вас вряд ли получится то, что вы хотели сначала.

Русское комьюнити D2WT сильно страдает от недостатка информации по скриптингу. В то время, как иноязычные моддеры собираются в довольно крупные сообщества в России D2WT, видимо, мало кого интересует.
Этот туториал содержит ОЧЕНЬ базовые знания о создании абилок в DotA 2, но, на безрыбье и этот, сделанный на коленке, туториал может быть полезным. Именно поэтому я его выложил, не обессудьте.
Никогда не бойтесь спрашивать, я всегда поделюсь крохами знаний. И сами делитесь, потому что у меня ещё куча всего, чему я хотел бы научиться.

Читайте также: