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

boss of this gym

Пользователь
18 Янв 2021
53
5
Этот гайд является текстовым вариантом видео гайда и рассчитан на людей, которые горят идеей о своей кастомке, но при этом не имеют абсолютно никаких познаний в программировании, здесь бывалые кастомко делы не подчерпнут ничего.
Видеогайд: Ссылка
Уже есть многие подобные гайды на этом форуме, однако они не всегда рассчитаны на игроков, которые не имеют знаний. Знающие люди зачастую будто пропускают некоторые нюансы и чтобы самостоятельно со всем разобраться нужно потратить на это уйму времени. Эти гайды, по-моему мнению, рассчитаны для людей, которые или до этого имели опыт в программировании или довольно усидчивые или смекалистые, чтобы разобраться со всем сразу.

Если ты хочешь создать самую простую карту, чтобы побегать по ней с друзьями, то этот гайд в этом поможет. Если ты хочешь сделать что-то более сложное: создать свои правила карты, спавнить юнитов по определенному таймеру, изменить поведение юнитов, создать собственные скиллы и предметы, то тебе придется изучить много дополнительного материала и изучить язык lua. Так же огромным плюсом будет базовое знание англ. языка. Этот гайд - основа, остальное зависит от твоего усердия и того, насколько для тебя легко усваивать новую информацию. (Мне, например, в силу разных причин, не удалось это сделать и мои знания в кастомко строении заканчиваются там, где начинается lua, но быть может я тебе помогу начать и ты продвинешься гораздо дальше меня)

Я расскажу тебе о создании своего аддона, о инструментах для создании ландшафта карты, добавлении юнитов на карту, добавлении предметов, абилок и их локализации. Здесь есть свои подводные камни, о которых я постараюсь упомянуть.

Я бы никогда не смог разобраться в кастомко строении(да и сейчас не особо разбираюсь), если бы у меня не было примера карты, шаблона, в который ты сначала играешь, понимаешь правила карты, а только потом смотришь на файлы, внутренность кастомки и роясь в их файлах ты постепенно начнешь осознавать, как все работает. Здесь мы рассмотрим сначала создание пустого аддона кастомки, затем на место пустого аддона мы добавим шаблон tower defenese кастомки от @vulkantsk
1.Создание аддона начинается с того, что нужно скачать dota 2 workshop tools - Инструменты мастерской Dota 2 это набор утилит для Dota 2 позволяющий всем игрокам создавать собственные пользовательские режимы игры.

Скачивание dota 2 workshop tools, запуск, создание аддона: Видео
Правой кнопкой жмем по ярлыку дота 2 в библиотеке, свойства, доп. контент, галку на dota 2 workshop tools.
Передвижение на карте в хаммере осуществляется посредством зажатия кнопки мыши + wasd на клавиатуре. Обращайте внимание на язык вашей раскладки, хаммер отказывается принимать нажатия, если у вас стоит ru раскладка.

Сами карты находятся по адресу: steam\steamapps\common\dota 2 beta\content\dota_addons\название вашего аддона\maps

В пути выделена папка content, потому что есть еще один адрес или путь к файлам вашей кастомки, однако там папка content заменена на папку game и выглядит вот так: steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона

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

Если открыть 2 эти папки, то мы увидим, что некоторые названия папок совпадают. Если мы откроем папку, к примеру maps, которая находится по пути steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона , то увидим, что там тоже есть наша созданная карта, однако имеющее расширение vpk, вместо vmap. И удаление это карты в ручную не приведет ни к чему. То есть удалить карту в ручную мы можем только в по пути steam\steamapps\common\dota 2 beta\content\dota_addons\название вашего аддона\maps


Это может запутать в начале и скорее всего запутает. Поэтому запомните что карты, доп. интерфейс, материалы можно изменять, дополнять только в по пути содержащему папку content. Всякие npc, абилки, предметы будут находится и изменяться по пути, в котором находится папка game.

2.Изменение ландшафта:

Изначально запустив хаммер, вам может показаться, что в нем довольно много инструментов и ничего не понятно, но ландшафт создается довольно просто:

ВАЖНО: Пока мы не добавили спавнеры игроков, карта после build'a не запустится.

3.Добавление точки респавна игроков.

Есть готовые заготовки, так называемые префабы (prefabs). Переходим в раздел prefabs, выбираем энтити "basic entities" и перетаскиваем туда, где хотим, чтобы респавнились игроки.
В этом префабе, помимо спавнеров игроков есть все необходимое нам, включая свет, звуковые ивенты и т.д. Полистайте список префабов, там спавнеров независимо от сторон dire и radiant есть и отдельные спавнеры для разных сторон. Если нужно ими воспользоваться, то вы знаете, как это сделать.

Видео

Важно: Если нужно будет снова запустить карту без изменений, то не обязательно ее каждый раз билдить, можно просто нажимать кнопку "run", которая находится правее "build".

4.Вставляем на место нашего аддона шаблон hero defense.
Скачиваем шаблон, распаковываем. Видим папки content и game.
Файлы из папки content с заменой перемещаем в папку нашей кастомки по адресу: steam\steamapps\common\dota 2 beta\content\dota_addons\название вашего аддона\
Файлы из папки game с заменой перемещаем в папку нашей кастомки по адресу: steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\
Перезаходим в dota 2 workshoptools и заходим по двойному щелчку на карту под названием "hero defense". Затем f9 и run, если не запустилось, то нажмите build.
Побегайте по карте, изучите тему с шаблоном, посмотрите на правила карты, как и что происходит, это должно дать хорошее понимание как и что сделано в кастомках.

5.Добавление юнитов.

Чтобы добавить npc, нам во-первых нужно его прописать в файле "npc_units_custom", который обычно находится по пути steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\scripts\npc\npc_units_custom (открыть файл можно через обычный блокнот, но я бы посоветовал скачать для этого subleme text)
Файл с юнитами, нпс - npc_units_custom
Файл с итемами, предметами - npc_items_custom
Файл с абилками - npc_abilities_custom
И все в этом роде, даже небольшие знания английского позволяют нам сразу понять для чего тот или иной файл и для чего те или иные значения в файлах используются(прим. "ArmorPhysical" - параметр отвечающий за количество брони.)


Очень важно, при манипуляциях в этих файлах соблюдать синтаксис, одна лишняя или пропущенная скобка приведет к тому, что юниты, абилки и итемы перестанут работать.

Попробуем добавить крипа. Заходим в npc_units_custom
Для вас я в спойлер добавлю готового, которого нужно вставить в файл:
"npc_dota_radiant_forest_2"
{
// General
//
"BaseClass" "npc_dota_creature"
"Model" "models/items/furion/treant/treant_cis/treant_cis.vmdl"
"SoundSet" "Furion_Treant" // Name of sound set.
"ModelScale" "1.2"
"Level" "2"
"IsSummoned" "1"
"UseNeutralCreepBehavior" "1"
"IsNeutralUnitType" "1"
"AutoAttacksByDefault" "1"
"SelectionGroup" "Furion_Treants"
"wearable" "8363"

// Abilities
//----------------------------------------------------------------

"Ability1" "" // Ability 1.
"Ability2" "" // Ability 2.
"Ability3" "" // Ability 3.
"Ability4" "" // Ability 4.
"Ability5" "" // Ability 5.
"Ability6" ""
"Ability7" "" // Ability 7 - Extra.
"Ability8" "" // Ability 8 - Extra.

// Armor
//----------------------------------------------------------------
"ArmorPhysical" "5" // Physical protection.
"MagicalResistance" "25" // Magical protection.

// Attack
//----------------------------------------------------------------
"AttackCapabilities" "DOTA_UNIT_CAP_MELEE_ATTACK"
"AttackDamageMin" "70" // Damage range min.
"AttackDamageMax" "117" // Damage range max.
"AttackDamageType" "DAMAGE_TYPE_ArmorPhysical"
"AttackRate" "1.5" // Speed of attack.
"AttackAnimationPoint" "0.25" // Normalized time in animation cycle to attack.
"AttackAcquisitionRange" "500" // Range within a target can be acquired.
"AttackRange" "100" // Range within a target can be attacked.
"ProjectileModel" "" // Particle system model for projectile.
"ProjectileSpeed" "" // Speed of projectile.

// Bounty
//----------------------------------------------------------------
"BountyXP" "142" // Experience earn.
"BountyGoldMin" "25" // Gold earned min.
"BountyGoldMax" "46" // Gold earned max.

// Bounds
//----------------------------------------------------------------
"BoundsHullName" "DOTA_HULL_SIZE_REGULAR" // Hull type used for navigation/locomotion.
"HealthBarOffset" "170"

// Movement
//----------------------------------------------------------------
"MovementCapabilities" "DOTA_UNIT_CAP_MOVE_GROUND" // Type of locomotion - ground, air
"MovementSpeed" "325" // Speed
"MovementTurnRate" "0.5" // Turning rate.

// Status
//----------------------------------------------------------------
"StatusHealth" "1400" // Base health.
"StatusHealthRegen" "14" // Health regeneration rate.
"StatusMana" "0" // Base mana.
"StatusManaRegen" "0" // Mana regeneration rate.

// Team
//----------------------------------------------------------------
"TeamName" "DOTA_TEAM_GOODGUYS" // Team name.
"CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_BASIC"
"CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_BASIC"
"UnitRelationshipClass" "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"

// Vision
//----------------------------------------------------------------
"VisionDaytimeRange" "500" // Range of vision during day light.
"VisionNighttimeRange" "500" // Range of vision at night time.

}
У вас будет единственный прописанный юнит - гнолл. Нам нужно оставить последнюю скобку, которая закрывает синтаксис всех юнитов и вставить туда этот код. В приложенном мной видео это будет видно более наглядно.

Важно: если вы при добавлении нового крипа (в npc_units_custom) находитесь в хаммере, то вам нужно обязательно перезайти в него, иначе крип так и не будет отображаться. В то же время, если находится в хаммере и прописать новый итем или абилку, то перезаходить необязательно.

Видео

6.Как добавить абилку.

Открываем npc_abilities_custom по пути steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\scripts\npc\npc_abilities_custom

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

Попробуем перенести рандомный скилл и добавить его герою.

Скачиваем и открываем скачанную библиотеку, ищем по аналогии файл npc_abilities_custom.
Открываем файл npc_abilities_custom в своей кастомке.
Для примера перенесем скилл "sven_storm_bolt_lua".
Копируем код из библиотеки к себе, с соблюдением синтаксиса и сохраняем.
Смотрите, мы перенесли дата дривен код(это то, что мы видим в npc_abilities_custom и значения в числовом формате им представленными), но этого недостаточно для его полноценной работы.
К большей части скиллов в дополнение существует lua код, на который есть ссылка в дата дривен коде, ссылка на lua код записана в строке "ScriptFile", напротив же, указан путь, адрес с lua кодом абилки.
Для скилла "sven_storm_bolt_lua", дополнение в видео луа кода находится в файле под названием
"sven_storm_bolt_lua"(название может быть абсолютно разным).
Обычно, еще указывается путь до исполняемого файла и выглядит это так, прим.: "ScriptFile" "vscripts/ability/heroes/sven/sven_storm_bolt_lua", но так как луа файл находится в корневой директории скриптов(vscripts) конкретно в этой библиотеке, он прописан так, как прописан, а именно конечным названием. Я же вам бы посоветовал оставить корневую директорию для более важных файлов.
Но так как мы с вами только учимся и чтобы не менять лишний раз пути, в которых можно накосячить и потом не понимать почему ничего не работает, мы с вами оставим все как есть, то есть перенесем из библиотеки по адресу
vscripts/sven_storm_bolt_lua, в файлы нашей кастомки по точно такому же адресу steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\scripts\vscripts\sven_storm_bolt_lua
Чтобы проверить работает это или нет, мы пропишем этот скилл темпларке. Открываем steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\scripts\npc\npc_heroes_custom и в строку
"Ability1" вместо "templar_assassin_refraction_holdout" вставляем название добавленного скилла - "sven_storm_bolt_lua"
Получается вот так:
"npc_dota_hero_templar_assassin_template"
{
"override_hero" "npc_dota_hero_templar_assassin" // Hero to override
"Ability1" "sven_storm_bolt_lua" // Ability 1
"VisionNighttimeRange" "1800" // Range of vision at night time.
}

Заходим в игру, проверяем.

Важно: совсем необязательно именно заменять скилл, как это сделал я, можно его просто добавить. Прим.: "Ability7" "sven_storm_bolt_lua"
Видео: Ссылка

7.Добавление итемов.

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

Написание кастомных предметов я затрагивать не буду, потому что это уже не в моей компетенции, давайте вместе попробуем изменить дефолтный предмет доты - blink dagger.
Переходим по ссылке на гит, где есть актуальные предметы и скопируем оттуда датадривен код блинка Ссылка на гит
Копируем код и вставляем в npc_items_custom.

Например, мы хотим, чтобы рейндж блинка был 12 тысяч и без кулдауна.
Меняем строки "blink_range" "1200" на "12000"
Меняем строку "AbilityCooldown" "15.0" на "0"
Сохраняем, загружаем кастомку заново и покупаем блинк, видим результат.
Остальные параметры изменяем по своему усмотрению.

Важно: помимо дефолтных предметов, параметрами которых можно управлять только через дата дривен код, есть кастомные, на которые имеются ссылки в строке "scriptfile", как это было в абилках. Поэтому, если вы нашли где-то библиотеку с кастомными итемами, не забудьте перенести к себе и lua код предмета и отредактировать адрес, по которому у вас будет находится луа файл.

8.Локализация, перевод предметов, абилок на разные языки.
Файлы локализации находятся в папке resource по адресу steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\resource
Названия файлов addon_english и addon_russian, если таковых нет, то просто создайте их в ручную в txt формате. Один и тот же файл, абилку и т.д нужно дублировать в 2 этих файлах на разных языках соответственно.
В шаблоне hero defense от @vulkantsk эти файлы присутствуют, так что вы можете их открыть и посмотреть по какому принципу происходит перевод.

Попробуем локализировать абилку, которую мы с вами добавляли "sven_storm_bolt_lua"
Вот небольшой простенький шаблон:
"DOTA_Tooltip_ability_" "name" --название скилла
"DOTA_Tooltip_ability__Description" "desc" --описание скилла
"DOTA_Tooltip_ability__lore" "" -- лор скилла
"DOTA_Tooltip_modifier_" "name" -- в зависимости названия модифаера и от того, если он у скилла.
"DOTA_Tooltip_modifier__Description" "desc" -- описание модифаера

Получаем в итоге:
"DOTA_Tooltip_ability_sven_storm_bolt_lua" "Storm Hammer"
"DOTA_Tooltip_ability_sven_storm_bolt_lua_Description" "Герой высвобождает всю мощь своей магической рукавицы, нанося жертве и её союзникам в небольшой области урон и оглушая их."
"DOTA_Tooltip_ability_sven_storm_bolt_lua_lore" "Железная рукавица мятежного рыцаря, позаимствованная в отцовской школе, выбивает дух из любого врага."
"DOTA_Tooltip_modifier_sven_storm_bolt_lua" "Оглушение"
"DOTA_Tooltip_modifier_sven_storm_bolt_lua_Description" "Нельзя развеять. Остаётся после смерти."

9.Публикация.

Нажимаем шестеренку "tools" в правом верхнем углу, затем "workshop manager", "плюсик", вводим название, описание, выбираем картинку для кастомки и жмем отправить. Через некоторое время кастомка будет проверена модераторами и доступна для игры.

Важно: возможно, кастомка не будет какое-то время находится по имени, а добавление ее в "избранное" не будет корректно работать со страницы стима в браузере(при публикации, вас автоматически на эту старницу выкинет), поэтому лучше будет зайти в игротеку, потом в каталог и отсортировать кастомки по дате публикации, там вы должны увидеть и свою. Добавьте ее в избранные.

Видео: видеа

На каждую из затронутых мной тем, есть более подробные гайды на этом форуме, советую к ознакомлению их сборник
 
Этот гайд является текстовым вариантом видео гайда и рассчитан на людей, которые горят идеей о своей кастомке, но при этом не имеют абсолютно никаких познаний в программировании, здесь бывалые кастомко делы не подчерпнут ничего.
Видеогайд: Ссылка
Уже есть многие подобные гайды на этом форуме, однако они не всегда рассчитаны на игроков, которые не имеют знаний. Знающие люди зачастую будто пропускают некоторые нюансы и чтобы самостоятельно со всем разобраться нужно потратить на это уйму времени. Эти гайды, по-моему мнению, рассчитаны для людей, которые или до этого имели опыт в программировании или довольно усидчивые или смекалистые, чтобы разобраться со всем сразу.

Если ты хочешь создать самую простую карту, чтобы побегать по ней с друзьями, то этот гайд в этом поможет. Если ты хочешь сделать что-то более сложное: создать свои правила карты, спавнить юнитов по определенному таймеру, изменить поведение юнитов, создать собственные скиллы и предметы, то тебе придется изучить много дополнительного материала и изучить язык lua. Так же огромным плюсом будет базовое знание англ. языка. Этот гайд - основа, остальное зависит от твоего усердия и того, насколько для тебя легко усваивать новую информацию. (Мне, например, в силу разных причин, не удалось это сделать и мои знания в кастомко строении заканчиваются там, где начинается lua, но быть может я тебе помогу начать и ты продвинешься гораздо дальше меня)

Я расскажу тебе о создании своего аддона, о инструментах для создании ландшафта карты, добавлении юнитов на карту, добавлении предметов, абилок и их локализации. Здесь есть свои подводные камни, о которых я постараюсь упомянуть.

Я бы никогда не смог разобраться в кастомко строении(да и сейчас не особо разбираюсь), если бы у меня не было примера карты, шаблона, в который ты сначала играешь, понимаешь правила карты, а только потом смотришь на файлы, внутренность кастомки и роясь в их файлах ты постепенно начнешь осознавать, как все работает. Здесь мы рассмотрим сначала создание пустого аддона кастомки, затем на место пустого аддона мы добавим шаблон tower defenese кастомки от @vulkantsk
1.Создание аддона начинается с того, что нужно скачать dota 2 workshop tools - Инструменты мастерской Dota 2 это набор утилит для Dota 2 позволяющий всем игрокам создавать собственные пользовательские режимы игры.

Скачивание dota 2 workshop tools, запуск, создание аддона: Видео
Правой кнопкой жмем по ярлыку дота 2 в библиотеке, свойства, доп. контент, галку на dota 2 workshop tools.
Передвижение на карте в хаммере осуществляется посредством зажатия кнопки мыши + wasd на клавиатуре. Обращайте внимание на язык вашей раскладки, хаммер отказывается принимать нажатия, если у вас стоит ru раскладка.

Сами карты находятся по адресу: steam\steamapps\common\dota 2 beta\content\dota_addons\название вашего аддона\maps

В пути выделена папка content, потому что есть еще один адрес или путь к файлам вашей кастомки, однако там папка content заменена на папку game и выглядит вот так: steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона

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

Если открыть 2 эти папки, то мы увидим, что некоторые названия папок совпадают. Если мы откроем папку, к примеру maps, которая находится по пути steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона , то увидим, что там тоже есть наша созданная карта, однако имеющее расширение vpk, вместо vmap. И удаление это карты в ручную не приведет ни к чему. То есть удалить карту в ручную мы можем только в по пути steam\steamapps\common\dota 2 beta\content\dota_addons\название вашего аддона\maps


Это может запутать в начале и скорее всего запутает. Поэтому запомните что карты, доп. интерфейс, материалы можно изменять, дополнять только в по пути содержащему папку content. Всякие npc, абилки, предметы будут находится и изменяться по пути, в котором находится папка game.

2.Изменение ландшафта:

Изначально запустив хаммер, вам может показаться, что в нем довольно много инструментов и ничего не понятно, но ландшафт создается довольно просто:

ВАЖНО: Пока мы не добавили спавнеры игроков, карта после build'a не запустится.

3.Добавление точки респавна игроков.

Есть готовые заготовки, так называемые префабы (prefabs). Переходим в раздел prefabs, выбираем энтити "basic entities" и перетаскиваем туда, где хотим, чтобы респавнились игроки.
В этом префабе, помимо спавнеров игроков есть все необходимое нам, включая свет, звуковые ивенты и т.д. Полистайте список префабов, там спавнеров независимо от сторон dire и radiant есть и отдельные спавнеры для разных сторон. Если нужно ими воспользоваться, то вы знаете, как это сделать.

Видео

Важно: Если нужно будет снова запустить карту без изменений, то не обязательно ее каждый раз билдить, можно просто нажимать кнопку "run", которая находится правее "build".

4.Вставляем на место нашего аддона шаблон hero defense.
Скачиваем шаблон, распаковываем. Видим папки content и game.
Файлы из папки content с заменой перемещаем в папку нашей кастомки по адресу: steam\steamapps\common\dota 2 beta\content\dota_addons\название вашего аддона\
Файлы из папки game с заменой перемещаем в папку нашей кастомки по адресу: steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\
Перезаходим в dota 2 workshoptools и заходим по двойному щелчку на карту под названием "hero defense". Затем f9 и run, если не запустилось, то нажмите build.
Побегайте по карте, изучите тему с шаблоном, посмотрите на правила карты, как и что происходит, это должно дать хорошее понимание как и что сделано в кастомках.

5.Добавление юнитов.

Чтобы добавить npc, нам во-первых нужно его прописать в файле "npc_units_custom", который обычно находится по пути steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\scripts\npc\npc_units_custom (открыть файл можно через обычный блокнот, но я бы посоветовал скачать для этого subleme text)
Файл с юнитами, нпс - npc_units_custom
Файл с итемами, предметами - npc_items_custom
Файл с абилками - npc_abilities_custom
И все в этом роде, даже небольшие знания английского позволяют нам сразу понять для чего тот или иной файл и для чего те или иные значения в файлах используются(прим. "ArmorPhysical" - параметр отвечающий за количество брони.)


Очень важно, при манипуляциях в этих файлах соблюдать синтаксис, одна лишняя или пропущенная скобка приведет к тому, что юниты, абилки и итемы перестанут работать.

Попробуем добавить крипа. Заходим в npc_units_custom
Для вас я в спойлер добавлю готового, которого нужно вставить в файл:
"npc_dota_radiant_forest_2"
{
// General
//
"BaseClass" "npc_dota_creature"
"Model" "models/items/furion/treant/treant_cis/treant_cis.vmdl"
"SoundSet" "Furion_Treant" // Name of sound set.
"ModelScale" "1.2"
"Level" "2"
"IsSummoned" "1"
"UseNeutralCreepBehavior" "1"
"IsNeutralUnitType" "1"
"AutoAttacksByDefault" "1"
"SelectionGroup" "Furion_Treants"
"wearable" "8363"

// Abilities
//----------------------------------------------------------------

"Ability1" "" // Ability 1.
"Ability2" "" // Ability 2.
"Ability3" "" // Ability 3.
"Ability4" "" // Ability 4.
"Ability5" "" // Ability 5.
"Ability6" ""
"Ability7" "" // Ability 7 - Extra.
"Ability8" "" // Ability 8 - Extra.

// Armor
//----------------------------------------------------------------
"ArmorPhysical" "5" // Physical protection.
"MagicalResistance" "25" // Magical protection.

// Attack
//----------------------------------------------------------------
"AttackCapabilities" "DOTA_UNIT_CAP_MELEE_ATTACK"
"AttackDamageMin" "70" // Damage range min.
"AttackDamageMax" "117" // Damage range max.
"AttackDamageType" "DAMAGE_TYPE_ArmorPhysical"
"AttackRate" "1.5" // Speed of attack.
"AttackAnimationPoint" "0.25" // Normalized time in animation cycle to attack.
"AttackAcquisitionRange" "500" // Range within a target can be acquired.
"AttackRange" "100" // Range within a target can be attacked.
"ProjectileModel" "" // Particle system model for projectile.
"ProjectileSpeed" "" // Speed of projectile.

// Bounty
//----------------------------------------------------------------
"BountyXP" "142" // Experience earn.
"BountyGoldMin" "25" // Gold earned min.
"BountyGoldMax" "46" // Gold earned max.

// Bounds
//----------------------------------------------------------------
"BoundsHullName" "DOTA_HULL_SIZE_REGULAR" // Hull type used for navigation/locomotion.
"HealthBarOffset" "170"

// Movement
//----------------------------------------------------------------
"MovementCapabilities" "DOTA_UNIT_CAP_MOVE_GROUND" // Type of locomotion - ground, air
"MovementSpeed" "325" // Speed
"MovementTurnRate" "0.5" // Turning rate.

// Status
//----------------------------------------------------------------
"StatusHealth" "1400" // Base health.
"StatusHealthRegen" "14" // Health regeneration rate.
"StatusMana" "0" // Base mana.
"StatusManaRegen" "0" // Mana regeneration rate.

// Team
//----------------------------------------------------------------
"TeamName" "DOTA_TEAM_GOODGUYS" // Team name.
"CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_BASIC"
"CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_BASIC"
"UnitRelationshipClass" "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"

// Vision
//----------------------------------------------------------------
"VisionDaytimeRange" "500" // Range of vision during day light.
"VisionNighttimeRange" "500" // Range of vision at night time.

}
У вас будет единственный прописанный юнит - гнолл. Нам нужно оставить последнюю скобку, которая закрывает синтаксис всех юнитов и вставить туда этот код. В приложенном мной видео это будет видно более наглядно.

Важно: если вы при добавлении нового крипа (в npc_units_custom) находитесь в хаммере, то вам нужно обязательно перезайти в него, иначе крип так и не будет отображаться. В то же время, если находится в хаммере и прописать новый итем или абилку, то перезаходить необязательно.

Видео

6.Как добавить абилку.

Открываем npc_abilities_custom по пути steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\scripts\npc\npc_abilities_custom

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

Попробуем перенести рандомный скилл и добавить его герою.

Скачиваем и открываем скачанную библиотеку, ищем по аналогии файл npc_abilities_custom.
Открываем файл npc_abilities_custom в своей кастомке.
Для примера перенесем скилл "sven_storm_bolt_lua".
Копируем код из библиотеки к себе, с соблюдением синтаксиса и сохраняем.
Смотрите, мы перенесли дата дривен код(это то, что мы видим в npc_abilities_custom и значения в числовом формате им представленными), но этого недостаточно для его полноценной работы.
К большей части скиллов в дополнение существует lua код, на который есть ссылка в дата дривен коде, ссылка на lua код записана в строке "ScriptFile", напротив же, указан путь, адрес с lua кодом абилки.
Для скилла "sven_storm_bolt_lua", дополнение в видео луа кода находится в файле под названием
"sven_storm_bolt_lua"(название может быть абсолютно разным).
Обычно, еще указывается путь до исполняемого файла и выглядит это так, прим.: "ScriptFile" "vscripts/ability/heroes/sven/sven_storm_bolt_lua", но так как луа файл находится в корневой директории скриптов(vscripts) конкретно в этой библиотеке, он прописан так, как прописан, а именно конечным названием. Я же вам бы посоветовал оставить корневую директорию для более важных файлов.
Но так как мы с вами только учимся и чтобы не менять лишний раз пути, в которых можно накосячить и потом не понимать почему ничего не работает, мы с вами оставим все как есть, то есть перенесем из библиотеки по адресу
vscripts/sven_storm_bolt_lua, в файлы нашей кастомки по точно такому же адресу steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\scripts\vscripts\sven_storm_bolt_lua
Чтобы проверить работает это или нет, мы пропишем этот скилл темпларке. Открываем steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\scripts\npc\npc_heroes_custom и в строку
"Ability1" вместо "templar_assassin_refraction_holdout" вставляем название добавленного скилла - "sven_storm_bolt_lua"
Получается вот так:
"npc_dota_hero_templar_assassin_template"
{
"override_hero" "npc_dota_hero_templar_assassin" // Hero to override
"Ability1" "sven_storm_bolt_lua" // Ability 1
"VisionNighttimeRange" "1800" // Range of vision at night time.
}

Заходим в игру, проверяем.

Важно: совсем необязательно именно заменять скилл, как это сделал я, можно его просто добавить. Прим.: "Ability7" "sven_storm_bolt_lua"
Видео: Ссылка

7.Добавление итемов.

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

Написание кастомных предметов я затрагивать не буду, потому что это уже не в моей компетенции, давайте вместе попробуем изменить дефолтный предмет доты - blink dagger.
Переходим по ссылке на гит, где есть актуальные предметы и скопируем оттуда датадривен код блинка Ссылка на гит
Копируем код и вставляем в npc_items_custom.

Например, мы хотим, чтобы рейндж блинка был 12 тысяч и без кулдауна.
Меняем строки "blink_range" "1200" на "12000"
Меняем строку "AbilityCooldown" "15.0" на "0"
Сохраняем, загружаем кастомку заново и покупаем блинк, видим результат.
Остальные параметры изменяем по своему усмотрению.

Важно: помимо дефолтных предметов, параметрами которых можно управлять только через дата дривен код, есть кастомные, на которые имеются ссылки в строке "scriptfile", как это было в абилках. Поэтому, если вы нашли где-то библиотеку с кастомными итемами, не забудьте перенести к себе и lua код предмета и отредактировать адрес, по которому у вас будет находится луа файл.

8.Локализация, перевод предметов, абилок на разные языки.
Файлы локализации находятся в папке resource по адресу steam\steamapps\common\dota 2 beta\game\dota_addons\название вашего аддона\resource
Названия файлов addon_english и addon_russian, если таковых нет, то просто создайте их в ручную в txt формате. Один и тот же файл, абилку и т.д нужно дублировать в 2 этих файлах на разных языках соответственно.
В шаблоне hero defense от @vulkantsk эти файлы присутствуют, так что вы можете их открыть и посмотреть по какому принципу происходит перевод.

Попробуем локализировать абилку, которую мы с вами добавляли "sven_storm_bolt_lua"
Вот небольшой простенький шаблон:
"DOTA_Tooltip_ability_" "name" --название скилла
"DOTA_Tooltip_ability__Description" "desc" --описание скилла
"DOTA_Tooltip_ability__lore" "" -- лор скилла
"DOTA_Tooltip_modifier_" "name" -- в зависимости названия модифаера и от того, если он у скилла.
"DOTA_Tooltip_modifier__Description" "desc" -- описание модифаера

Получаем в итоге:
"DOTA_Tooltip_ability_sven_storm_bolt_lua" "Storm Hammer"
"DOTA_Tooltip_ability_sven_storm_bolt_lua_Description" "Герой высвобождает всю мощь своей магической рукавицы, нанося жертве и её союзникам в небольшой области урон и оглушая их."
"DOTA_Tooltip_ability_sven_storm_bolt_lua_lore" "Железная рукавица мятежного рыцаря, позаимствованная в отцовской школе, выбивает дух из любого врага."
"DOTA_Tooltip_modifier_sven_storm_bolt_lua" "Оглушение"
"DOTA_Tooltip_modifier_sven_storm_bolt_lua_Description" "Нельзя развеять. Остаётся после смерти."

9.Публикация.

Нажимаем шестеренку "tools" в правом верхнем углу, затем "workshop manager", "плюсик", вводим название, описание, выбираем картинку для кастомки и жмем отправить. Через некоторое время кастомка будет проверена модераторами и доступна для игры.

Важно: возможно, кастомка не будет какое-то время находится по имени, а добавление ее в "избранное" не будет корректно работать со страницы стима в браузере(при публикации, вас автоматически на эту старницу выкинет), поэтому лучше будет зайти в игротеку, потом в каталог и отсортировать кастомки по дате публикации, там вы должны увидеть и свою. Добавьте ее в избранные.

Видео: видеа

На каждую из затронутых мной тем, есть более подробные гайды на этом форуме, советую к ознакомлению их сборник
у меня вопрос, если я хочу одеть на персонажа не одну вещь, а допустим 4-5. Какую команду использовать?
 
у меня вопрос, если я хочу одеть на персонажа не одну вещь, а допустим 4-5. Какую команду использовать?
А теперь, повтори вопрос и задай его более правильно, что ты хочешь ?
Я вот из вопроса ничего не понял что тебе нужно, если речь об косметических шмотках , то так и задай его правильно
 
  • Нравится
Реакции: vulkantsk
А теперь, повтори вопрос и задай его более правильно, что ты хочешь ?
Я вот из вопроса ничего не понял что тебе нужно, если речь об косметических шмотках , то так и задай его правильно
я разобрался, спасибо!
 
Реклама: