Как создать юнита и увидеть его в игре?
Идем в папку вашего проекта и находим файл npc_units_custom.txt
Если не знаете где это файл находится, прочитайте: https://customgames.ru/forum/index.php?topic=940.0
Структура юнита в файле npc_units_custom.txt:
Базовые классы:
• npc_dota_creature - существо
Самый основной и наиболее часто применяемый класс. Этим классом можно обозначить любого юнита. Как только мы выбрали этот тип юнита, нам становится доступен блок “Creature”, значение которого я объясню ниже. Ещё этот класс связан с “DOTA_UNIT_TARGET_BASIC” в целевых спеллах (способностях).
Есть один ньюанс: все способности подобного юнита после его создания будут автоматически прокачены до максимального уровня, если это возможно. (Есть лимит и он заключается в формуле: Уровень*2 существа, означает что Существо 1 уровня автоматически прокачает все скиллы до 2 уровня). Этого конечно можно избежать, выставив lua-скрипт.
Если говорить проще, когда вы пишете что это существо (creature) то это превращает энтити в юнита, который может двигаться, бить, использовать способности и тому подобное. Если делаете юнита или героя - это всегда creature.
• npc_dota_building - здание
Связано с “DOTA_UNIT_TARGET_BUILDING”, этот класс может быть полезен в различных ситуациях.
У этого класса есть некоторые свойства, над которыми мы не имеем контроля.
• Неуязвимость по умолчанию. Очень раздражающе, но вопреки всему неуязвимость можно убрать через lua. building_handle:RemoveModifierByName("modifier_invulnerable").
Здание всегда видно даже через туман войны. Очень проблематично, поскольку в играх типа castle_fight, противник может проследить какие здания вы построили. Соответственно создатели карт используют в таких проектах класс npc_dota_creature даже для зданий.
• Никакого визуального поворота. Здание не может быть вообще повернуто.
Уровень
Можно легко изменить через lua-скрипт.
Есть одна особенность у юнита, позволяющая использовать уровень юнитов себе на пользу и даже улучшать их. Об этом ниже.
Модель юнита и её размер
Asset-browser позволяет найти модель юнита, а его размер корректируется вторым параметром. Если не указан размер, будет взят стандарт: 1.0
Существа, которые используют недействительные модели, будут «голыми» пока мы не наденем на них одежду. Подробнее ниже.
Иконки на миникарте
Покажет юнита на миникарте вот так:
В доте2 есть по стандарту много иконок для миникарты, можете посмотреть в ассет браузере minimap_ vmats.
Поняли, что можно будет для каждого юнита сделать разные иконки и импортировать в карту?)
Unit Label
"UnitLabel" "healing_ward"
Здесь может быть любое имя, это очень удобно через lua-скрипт получать его label-метку используя GetUnitLabel(). Допустим у вас на карте есть жуки, которые грызут любого, кто к ним близко подойдет.
И чтобы не вводить кучу дополнительных проверок, просто проверяете на метку:
Boolean Values and Flags, значения типа true
Ассоциативные lua-функции: HasInventory() и SetHasInventory(bool)
Заметка: SetHasInventory(true) не будет работать на юнитах, у которых заранее было выставлено "HasInventory" "1" .
"DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" флаг из датадривен системы. Если стоит 1, то дает вот так хп бар юниту:
Ассоциативная lua функция: IsAncient()
"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" флаг датадривен системы.
Ассоциативная lua функция: IsNeutralUnitType()
Создавалось в доте, чтобы определить можно ли подчинить юнита через Helm of Dominator.
Можно кстати создать функцию, которая считывает данный параметр.
Игнорирует врагов рядом, сам не нападает (если 1). В доте используется на фамильярах висажа.
Юнит, у которого выставлено 1, не будет агрить нейтралов, если сам юнит-носитель не подошел слишком близко для их acquisition _Range.
Свойства выборки:
• SelectionGroup сделает так, что все юниты могут быть выбраны в одну группу и к ним можно получить доступ через tab.
Я нажал таб один раз и все эти юниты были выбраны, после того как я назначил их в одну группу.
• SelectOnSpawn когда спавнишь этих юнитов, они сразу входят в группу с героем. Например когда призываешь фамильяров висажа, выбираются висаж и 2 саммона сразу.
• IgnoreAddSummonedToSelection если стоит 1, то "Auto Select Summoned Units" не работает. Используется в ульте Brewmaster, чтобы вызванные юниты не выбирались сразу.
Звуки:
• SoundSet с правильными GameSoundsFile служит для таких звуков как шаги героя и его атаки. Все эти настройки всегда можно посмотреть с помощью Dota 2 Sound Editor. Образец
• IdleSoundLoop этот звук будет сразу использовать после того как юнит заспавнится.
Способности:
Максимально, герой может иметь до 16 способностей.
"AbilityLayout" это в общем то кол-во доступных для способностей слотов. У инвокера сразу при спавне 6 слотов под способностей, так же как и у Дума. А вот у пуджа 4.
Статы
Valve не позаботилась об идеальном редактировании статов.
Физическая и магическая защита
Возможности атаки
Список:
• DOTA_UNIT_CAP_NO_ATTACK //не может атаковать
• DOTA_UNIT_CAP_MELEE_ATTACK //ближний бой
• DOTA_UNIT_CAP_RANGED_ATTACK //дальний бой
Другие характеристики атаки
Дальние атаки:
1. Модель снаряда
2. Скорость снаряда - оптимально выставить 900-1200, в других случаях будет либо очень быстро, либо очень медленно
Чтобы найти снаряды, для специфичного героя, можно вбить в ассет браузере gyro + attack vpcf, например
Если у вас герой или юнит каким то образом может использовать метаморфозы и имеет переключение с ближнего на дальний бой, то тут надо обязательно указать скорость снаряда. Иначе если вы превратитесь в дальний бой, то снаряды с 0 скоростью так и останутся стоять на месте.
Некоторые, не работающие пока вещи
Вольво задумывали по всей видимости, что можно будет дать юниту даже магический тип атаки, но сейчас по крайней мере это не поддерживается. Ждём фикса)
Атрибуты, для героев
Используется в npc_heroes_custom:
Награда за убийство
Вообще конечно же сейчас можно легко написать систему опыта на lua, особенно если вы хотите учитывать разницу в уровнях. Например, чтобы крип 1 лвла не давал опыта герою 10-го. Но это решать вам)
Столкновение:
Это именно то, как юнит будет сталкиваться с другими. То есть как он сможет делать бадиблок.
Размеры юнитов:
• Через Lua SetHullRadius(float) можно назначить любое значение до 144.
Смотрите, герой имеет радиус столкновения 24, значит если поставите побольше, то (станет шире кость) его будут обходить на расстояний).
Колечко под юнитом.
По стандарту поставлено «-1».
Движение:
List of Movement Capabilities
Некоторые редко применяемые характеристики отсюда:
Например раньше джаггер, когда рядом противники вытаскивал меч, так что этот параметр тоже решает.
Дистанция, чтобы когда поставили приказ «Следовать», она будет следовать именно на таком расстоянии. Healing
Здоровье и мана
Заметки:
• Минусовая регенерация не работает.
• Если поставите Status Mana = 0, то у юнита не будет мана-бара.
• К сожалению пока что в lua нет способа изменять макс ману! Мана юнита и его модификации могут быть осуществлены через Levels или Creature block.
Редко используется
-1 это полная мана в начал. Можно сделать так, чтобы юнит стартовал с 0 маны.
Типы брони и атаки:
Можно посмотреть какой тип атаки контрит определенный тип брони здесь.
"CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_HERO"
"CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_HERO"
Таблица типов атак
Name Dota Equivalent
Типы защит
Обзор:
Нельзя поставить больше 1800.
Типизация юнитов:
Это обычно сильно не решает, но может использоваться для таггинга юнитов. Например сделать всем жукам на карте тип Siege и так идентифицировать что жук был убит, проверяя всех убитых юнитов на этот тип.
List:
Путь к lua ИИ скрипту.
Как только юнит заспавнится, включится этот скрипт. Вот пример: https://github.com/MNoya/Warchasers/blob/master/game/dota_addons/warchasers/scripts/vscripts/ai_tank_miniboss.lua
The Creature Block
Этот как раз тот блок, который работает если вы указали класс npc_dota_creature :
Все значения, которые здесь относится к блоку Creature.
Прикрепить одежду:
Есть стандартный блок для героев, который отвечает их за одежду.
Без и «с» указанным блоком attachWearables.
Каждое числовое значение "IdemDef" можно найти в https://raw.githubusercontent.com/dotabuff/d2vpk/master/dota_pak01/scripts/items/items_game.txt, просто откройте ссылку, она всегда обновляется.
Не все вещи для героев доступны в Source 2, запомните.
Если вы точно хотите удостовериться доступна ли модель для source 2 "model_player" вбейте в браузер название вещи, и попробуйте найти её.
Застревание
Это исправляет баг с застреванием юнитов:
Респаун
Не работает.
Назначить сопротивление
Срезает длительность всех станов на определенный процент.
Идем в папку вашего проекта и находим файл npc_units_custom.txt
Если не знаете где это файл находится, прочитайте: https://customgames.ru/forum/index.php?topic=940.0
Структура юнита в файле npc_units_custom.txt:
Код:
1. "human_footman" //имя юнита
2. {
3. // General
4. //----------------------------------------------------------------
5. "BaseClass" "npc_dota_creature" //базовый класс
6. "Model" "models/heroes/dragon_knight/dragon_knight.vmdl" //модель
7. "ModelScale" "0.8" //размер модели
8. "Level" "2" //уровень
9. "HealthBarOffset" "140" //насколько высоко будет хп бар
10. "HasInventory" "1" //имеет ли инвентарь
11. //Дальше - смотрите по гайду)
12. // Abilities
13. //----------------------------------------------------------------
14. "Ability1" "human_defend"
15. "Ability2" "human_backpack"
16.
17. // Armor
18. //----------------------------------------------------------------
19. "ArmorPhysical" "2"
20. "MagicalResistance" "0"
21.
22. // Attack
23. //----------------------------------------------------------------
24. "AttackCapabilities" "DOTA_UNIT_CAP_MELEE_ATTACK"
25. "AttackDamageType" "DAMAGE_TYPE_ArmorPhysical"
26. "AttackDamageMin" "12.0"
27. "AttackDamageMax" "13.0"
28. "AttackRate" "1.35"
29. "AttackAnimationPoint" "0.5"
30. "AttackAcquisitionRange" "500"
31. "AttackRange" "90"
32.
33. // Bounty
34. //----------------------------------------------------------------
35. "BountyGoldMin" "26.0"
36. "BountyGoldMax" "38.0"
37.
38. // Bounds
39. //----------------------------------------------------------------
40. "BoundsHullName" "DOTA_HULL_SIZE_HERO"
41. "RingRadius" "70"
42.
43. // Movement
44. //----------------------------------------------------------------
45. "MovementCapabilities" "DOTA_UNIT_CAP_MOVE_GROUND"
46. "MovementSpeed" "270"
47. "MovementTurnRate" "0.6"
48.
49. // Status
50. //----------------------------------------------------------------
51. "StatusHealth" "420"
52. "StatusHealthRegen" "0.25"
53. "StatusMana" "0"
54. "StatusManaRegen" "0"
55.
56. // Vision
57. //----------------------------------------------------------------
58. "VisionDaytimeRange" "1400"
59. "VisionNighttimeRange" "800"
60.
61. // Team
62. //----------------------------------------------------------------
63. "TeamName" "DOTA_TEAM_NEUTRALS"
64. "CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_BASIC"
65. "CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_STRONG"
66. "UnitRelationShipClass" "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"
67.
68. // Creature Data
69. //----------------------------------------------------------------
70. "Creature"
71. {
72. "DisableClumpingBehavior" "1"
73. "AttachWearables"
74. {
75. "Wearable1" { "ItemDef" "63" }
76. "Wearable2" { "ItemDef" "64" }
77. "Wearable3" { "ItemDef" "65" }
78. "Wearable4" { "ItemDef" "66" }
79. "Wearable5" { "ItemDef" "67" }
80. "Wearable6" { "ItemDef" "68" }
81. }
82. }
83. }
Базовые классы:
• npc_dota_creature - существо
Самый основной и наиболее часто применяемый класс. Этим классом можно обозначить любого юнита. Как только мы выбрали этот тип юнита, нам становится доступен блок “Creature”, значение которого я объясню ниже. Ещё этот класс связан с “DOTA_UNIT_TARGET_BASIC” в целевых спеллах (способностях).
Есть один ньюанс: все способности подобного юнита после его создания будут автоматически прокачены до максимального уровня, если это возможно. (Есть лимит и он заключается в формуле: Уровень*2 существа, означает что Существо 1 уровня автоматически прокачает все скиллы до 2 уровня). Этого конечно можно избежать, выставив lua-скрипт.
Если говорить проще, когда вы пишете что это существо (creature) то это превращает энтити в юнита, который может двигаться, бить, использовать способности и тому подобное. Если делаете юнита или героя - это всегда creature.
• npc_dota_building - здание
Связано с “DOTA_UNIT_TARGET_BUILDING”, этот класс может быть полезен в различных ситуациях.
У этого класса есть некоторые свойства, над которыми мы не имеем контроля.
• Неуязвимость по умолчанию. Очень раздражающе, но вопреки всему неуязвимость можно убрать через lua. building_handle:RemoveModifierByName("modifier_invulnerable").
Здание всегда видно даже через туман войны. Очень проблематично, поскольку в играх типа castle_fight, противник может проследить какие здания вы построили. Соответственно создатели карт используют в таких проектах класс npc_dota_creature даже для зданий.
• Никакого визуального поворота. Здание не может быть вообще повернуто.
Уровень
Код:
"Level" "32"
Можно легко изменить через lua-скрипт.
Есть одна особенность у юнита, позволяющая использовать уровень юнитов себе на пользу и даже улучшать их. Об этом ниже.
Модель юнита и её размер
Код:
"Model" "models/heroes/dragon_knight/dragon_knight.vmdl"
"ModelSize" "0.8"
Существа, которые используют недействительные модели, будут «голыми» пока мы не наденем на них одежду. Подробнее ниже.
Иконки на миникарте
Код:
"MinimapIcon" "minimap_candybucket"
"MinimapIconSize" "1000"
В доте2 есть по стандарту много иконок для миникарты, можете посмотреть в ассет браузере minimap_ vmats.
Поняли, что можно будет для каждого юнита сделать разные иконки и импортировать в карту?)
Unit Label
"UnitLabel" "healing_ward"
Здесь может быть любое имя, это очень удобно через lua-скрипт получать его label-метку используя GetUnitLabel(). Допустим у вас на карте есть жуки, которые грызут любого, кто к ним близко подойдет.
И чтобы не вводить кучу дополнительных проверок, просто проверяете на метку:
Код:
if unit:GetUnitLabel() == "Juk" then ваши действия
end
Boolean Values and Flags, значения типа true
Код:
"HasInventory" "1" //есть ли инвентарь
Заметка: SetHasInventory(true) не будет работать на юнитах, у которых заранее было выставлено "HasInventory" "1" .
Код:
"ConsideredHero" "1"
Код:
"IsAncient" "1" //эншент ли?
"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" флаг датадривен системы.
Код:
"IsNeutralUnitType" "1" //нейтрал ли?
Код:
"CanBeDominated" "0"
Можно кстати создать функцию, которая считывает данный параметр.
Код:
"AutoAttacksByDefault" "0" //атакует ли сам?
Код:
"WakesNeutrals" "1"
Свойства выборки:
Код:
"SelectionGroup" "string"
"SelectOnSpawn" "1"
"IgnoreAddSummonedToSelection" "1"
Я нажал таб один раз и все эти юниты были выбраны, после того как я назначил их в одну группу.
• SelectOnSpawn когда спавнишь этих юнитов, они сразу входят в группу с героем. Например когда призываешь фамильяров висажа, выбираются висаж и 2 саммона сразу.
• IgnoreAddSummonedToSelection если стоит 1, то "Auto Select Summoned Units" не работает. Используется в ульте Brewmaster, чтобы вызванные юниты не выбирались сразу.
Звуки:
Код:
"SoundSet" "Hero_DragonKnight"
"GameSoundsFile" "soundevents/game_sounds_heroes/game_sounds_dragon_knight.vsndevts"
"IdleSoundLoop" "Hero_DragonKnight.Tutorial_Intro"
• IdleSoundLoop этот звук будет сразу использовать после того как юнит заспавнится.
Способности:
Код:
"AbilityLayout" "4" //допустимые значения только 4 5 6
"Ability1" "" // первая способность юнита, в кавычках //надо указать имя способности либо из units_custom_abilities, либо из стандартных.
//"Ability2" ... до "Ability16"
"AbilityLayout" это в общем то кол-во доступных для способностей слотов. У инвокера сразу при спавне 6 слотов под способностей, так же как и у Дума. А вот у пуджа 4.
Статы
Valve не позаботилась об идеальном редактировании статов.
Физическая и магическая защита
Код:
"ArmorPhysical" "0" //изначальная защита
"MagicalResistance" "0" //изначальное маг. сопротивление
Код:
"AttackCapabilities" "DOTA_UNIT_CAP_NO_ATTACK"
• DOTA_UNIT_CAP_NO_ATTACK //не может атаковать
• DOTA_UNIT_CAP_MELEE_ATTACK //ближний бой
• DOTA_UNIT_CAP_RANGED_ATTACK //дальний бой
Другие характеристики атаки
Код:
"AttackDamageMin" "50" // Мин атака.
"AttackDamageMax" "40" // Макс атака.
"AttackRate" "1.7" // Скорость атаки. (это величина в секундах)
"AttackAnimationPoint" "0.75" // сколько проигрывается анимация, прежде чем наносятся повреждения, у каждого своя анимация, поэтому тут по разному
"AttackAcquisitionRange" "800" // Если это нейтрал, то с какого расстояние он сам начнет вас атаковать.
"AttackRange" "600" // Макс дистанция атаки.
"AttackRangeBuffer" "250" // Это насколько далеко может забежать нейтрал, если вы его забайтили и убегаете
Дальние атаки:
Код:
"ProjectileModel" "particles/units/heroes/hero_lina/lina_base_attack.vpcf"
"ProjectileSpeed" "900"
2. Скорость снаряда - оптимально выставить 900-1200, в других случаях будет либо очень быстро, либо очень медленно
Чтобы найти снаряды, для специфичного героя, можно вбить в ассет браузере gyro + attack vpcf, например
Если у вас герой или юнит каким то образом может использовать метаморфозы и имеет переключение с ближнего на дальний бой, то тут надо обязательно указать скорость снаряда. Иначе если вы превратитесь в дальний бой, то снаряды с 0 скоростью так и останутся стоять на месте.
Некоторые, не работающие пока вещи
Код:
"AttackDamageType" "DAMAGE_TYPE_ArmorPhysical"
Атрибуты, для героев
Используется в npc_heroes_custom:
Код:
"AttributePrimary" "DOTA_ATTRIBUTE_STRENGTH" //осн. Атрибут - сила
"AttributeBaseStrength" "0" // Базовая сила
"AttributeStrengthGain" "0" // Сила за уровень.
"AttributeBaseAgility" "0" // Базовая ловкость
"AttributeAgilityGain" "0" // Ловкость за уровень.
"AttributeBaseIntelligence" "0" // Базовый интеллект
"AttributeIntelligenceGain" "0" // Интеллект за уровень.
Награда за убийство
Вообще конечно же сейчас можно легко написать систему опыта на lua, особенно если вы хотите учитывать разницу в уровнях. Например, чтобы крип 1 лвла не давал опыта герою 10-го. Но это решать вам)
Код:
"BountyXP" "0" // Сколько опыта будет давать за то, что юнит умер.
"BountyGoldMin" "0" // Мин. Золота за смерть.
"BountyGoldMax" "0" // Макс золота за смерть
Столкновение:
Это именно то, как юнит будет сталкиваться с другими. То есть как он сможет делать бадиблок.
Код:
"BoundsHullName" "DOTA_HULL_SIZE_HERO"
Код:
Value Radius in Hammer units
DOTA_HULL_SIZE_SMALL 8 //мини юнит, жучок никса например
DOTA_HULL_SIZE_REGULAR 16 //размер юнита-крипа в дотке
DOTA_HULL_SIZE_SIEGE 16 //размер катапульты
DOTA_HULL_SIZE_HERO 24 //геройский размер, стандартный для столкновений
DOTA_HULL_SIZE_HUGE 80 //очень большой и крупный объект, которого долго обходить
DOTA_HULL_SIZE_BUILDING 81 //в доте используется для мелких зданий на базе
DOTA_HULL_SIZE_FILLER 96 //немного больше чем здание, вокруг него можно даже кругами бегать
DOTA_HULL_SIZE_BARRACKS 144 //примерно в уме прикиньте размер барака - это оно и есть
DOTA_HULL_SIZE_TOWER 144
Смотрите, герой имеет радиус столкновения 24, значит если поставите побольше, то (станет шире кость) его будут обходить на расстояний).
Код:
"RingRadius" "70"
Код:
HealthBarOffset" "250" //насколько высоко будет хп бар.
Движение:
Код:
"MovementCapabilities" "DOTA_UNIT_CAP_MOVE_NONE"
"MovementSpeed" "300" // скорость перемещения
"MovementTurnRate" "0.5" // скорость поворота.
Код:
• DOTA_UNIT_CAP_MOVE_NONE //не может двигаться
• DOTA_UNIT_CAP_MOVE_GROUND //двигается по земле
• DOTA_UNIT_CAP_MOVE_FLY //летает
• DOTA_UNIT_CAP_POHUI //земноводный. Шутка.
Код:
"HasAggressiveStance" "0"
Код:
"FollowRange" "100"
Код:
Ward/Sigil имеют дистанцию 250.
Здоровье и мана
Код:
"StatusHealth" "150" // Здоровье.
"StatusHealthRegen" "0" // Регенерация в секунду.
"StatusMana" "0" // Мана.
"StatusManaRegen" "0" // Регенерация маны в секунду.
• Минусовая регенерация не работает.
• Если поставите Status Mana = 0, то у юнита не будет мана-бара.
• К сожалению пока что в lua нет способа изменять макс ману! Мана юнита и его модификации могут быть осуществлены через Levels или Creature block.
Редко используется
Код:
"StatusStartingMana" "-1"
Типы брони и атаки:
Можно посмотреть какой тип атаки контрит определенный тип брони здесь.
"CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_HERO"
"CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_HERO"
Таблица типов атак
Name Dota Equivalent
Код:
Normal DOTA_COMBAT_CLASS_ATTACK_BASIC
Pierce DOTA_COMBAT_CLASS_ATTACK_PIERCE
Siege DOTA_COMBAT_CLASS_ATTACK_SIEGE
Chaos DOTA_COMBAT_CLASS_ATTACK_LIGHT
Hero DOTA_COMBAT_CLASS_ATTACK_HERO
Типы защит
Код:
Name Dota Equivalent
Unarmored DOTA_COMBAT_CLASS_DEFEND_SOFT
Light DOTA_COMBAT_CLASS_DEFEND_WEAK
Medium DOTA_COMBAT_CLASS_DEFEND_BASIC
Heavy DOTA_COMBAT_CLASS_DEFEND_STRONG
Fortified DOTA_COMBAT_CLASS_DEFEND_STRUCTURE
Hero DOTA_COMBAT_CLASS_DEFEND_HERO
Обзор:
Код:
"VisionDaytimeRange" "1200" // Дневной обзор (по часам доты).
"VisionNighttimeRange" "1800" // Ночной обзор.
Типизация юнитов:
Это обычно сильно не решает, но может использоваться для таггинга юнитов. Например сделать всем жукам на карте тип Siege и так идентифицировать что жук был убит, проверяя всех убитых юнитов на этот тип.
Код:
"UnitRelationshipClass" "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"
Код:
• DOTA_NPC_UNIT_RELATIONSHIP_TYPE_BARRACKS
• DOTA_NPC_UNIT_RELATIONSHIP_TYPE_BUILDING
• DOTA_NPC_UNIT_RELATIONSHIP_TYPE_COURIER
• DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT
• DOTA_NPC_UNIT_RELATIONSHIP_TYPE_HERO
• DOTA_NPC_UNIT_RELATIONSHIP_TYPE_SIEGE
• DOTA_NPC_UNIT_RELATIONSHIP_TYPE_WARD
Путь к lua ИИ скрипту.
Код:
"vscripts" "path_to_ai_script.lua"
The Creature Block
Этот как раз тот блок, который работает если вы указали класс npc_dota_creature :
Код:
"custom_unit"
{
"BaseClass" "npc_dota_creature"
// ....
"Creature"
{
// ...
}
}
Прикрепить одежду:
Есть стандартный блок для героев, который отвечает их за одежду.
Код:
"AttachWearables"
{
"Wearable1" { "ItemDef" "63" }
"Wearable2" { "ItemDef" "64" }
"Wearable3" { "ItemDef" "65" }
"Wearable4" { "ItemDef" "66" }
"Wearable5" { "ItemDef" "67" }
"Wearable6" { "ItemDef" "68" }
}
Без и «с» указанным блоком attachWearables.
Каждое числовое значение "IdemDef" можно найти в https://raw.githubusercontent.com/dotabuff/d2vpk/master/dota_pak01/scripts/items/items_game.txt, просто откройте ссылку, она всегда обновляется.
Не все вещи для героев доступны в Source 2, запомните.
Если вы точно хотите удостовериться доступна ли модель для source 2 "model_player" вбейте в браузер название вещи, и попробуйте найти её.
Застревание
Код:
"DisableClumpingBehavior" "1"
Респаун
Код:
"CanRespawn" "1"
Назначить сопротивление
Код:
"DisableResistance" "75.0"
Последнее редактирование модератором: