Урок [Гайд] Как создать кастомного юнита в Valve Hammer Editor (01.06.2016 Fixed)

Se7eN

Друзья CG
22 Ноя 2014
322
4
18
24
Реакции
4 0 0
#1
Как создать юнита и увидеть его в игре?

Идем в папку вашего проекта и находим файл 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"
proxy.php?image=http%3A%2F%2Fpuu.sh%2Fho10S%2Ffe733ccd2e.jpg&hash=516cc94e1dc1809ee767e3a46800373d

Можно легко изменить через lua-скрипт.
Есть одна особенность у юнита, позволяющая использовать уровень юнитов себе на пользу и даже улучшать их. Об этом ниже.

Модель юнита и её размер
Код:
"Model"            "models/heroes/dragon_knight/dragon_knight.vmdl"
"ModelSize"          "0.8"
Asset-browser позволяет найти модель юнита, а его размер корректируется вторым параметром. Если не указан размер, будет взят стандарт: 1.0
Существа, которые используют недействительные модели, будут «голыми» пока мы не наденем на них одежду. Подробнее ниже.


Иконки на миникарте
Код:
"MinimapIcon"        "minimap_candybucket"
"MinimapIconSize"      "1000"
Покажет юнита на миникарте вот так:
proxy.php?image=http%3A%2F%2Fpuu.sh%2Fho19t%2Fc5c7f7bb39.jpg&hash=12369ba265623c6f1bec235a6e70347f

В доте2 есть по стандарту много иконок для миникарты, можете посмотреть в ассет браузере minimap_ vmats.
Поняли, что можно будет для каждого юнита сделать разные иконки и импортировать в карту?)

Unit Label
"UnitLabel" "healing_ward"
Здесь может быть любое имя, это очень удобно через lua-скрипт получать его label-метку используя GetUnitLabel(). Допустим у вас на карте есть жуки, которые грызут любого, кто к ним близко подойдет.
И чтобы не вводить кучу дополнительных проверок, просто проверяете на метку:
Код:
if unit:GetUnitLabel() == "Juk" then ваши действия
end
Boolean Values and Flags, значения типа true
Код:
"HasInventory"        "1" //есть ли инвентарь
Ассоциативные lua-функции: HasInventory() и SetHasInventory(bool)
Заметка: SetHasInventory(true) не будет работать на юнитах, у которых заранее было выставлено "HasInventory" "1" .


Код:
"ConsideredHero"    "1"
"DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" флаг из датадривен системы. Если стоит 1, то дает вот так хп бар юниту:
proxy.php?image=http%3A%2F%2Fpuu.sh%2Fho2pt%2Fc687566db4.jpg&hash=8870ebceafad4145febe567a09767719




Код:
"IsAncient"          "1" //эншент ли?
Ассоциативная lua функция: IsAncient()
"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" флаг датадривен системы.


Код:
"IsNeutralUnitType"      "1" //нейтрал ли?
Ассоциативная lua функция: IsNeutralUnitType()


Код:
"CanBeDominated"        "0"
Создавалось в доте, чтобы определить можно ли подчинить юнита через Helm of Dominator.
Можно кстати создать функцию, которая считывает данный параметр.


Код:
"AutoAttacksByDefault"     "0" //атакует ли сам?
Игнорирует врагов рядом, сам не нападает (если 1). В доте используется на фамильярах висажа.


Код:
"WakesNeutrals"        "1"
Юнит, у которого выставлено 1, не будет агрить нейтралов, если сам юнит-носитель не подошел слишком близко для их acquisition _Range.

Свойства выборки:
Код:
"SelectionGroup"        "string"       
"SelectOnSpawn"        "1"
"IgnoreAddSummonedToSelection" "1"
SelectionGroup сделает так, что все юниты могут быть выбраны в одну группу и к ним можно получить доступ через tab.
proxy.php?image=http%3A%2F%2Fpuu.sh%2Fho1rl%2Fd0d5e48cd3.jpg&hash=58c5eec86b0f75fe0b699adb8ff5c226


Я нажал таб один раз и все эти юниты были выбраны, после того как я назначил их в одну группу.
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"
SoundSet с правильными GameSoundsFile служит для таких звуков как шаги героя и его атаки. Все эти настройки всегда можно посмотреть с помощью Dota 2 Sound Editor. Образец
IdleSoundLoop этот звук будет сразу использовать после того как юнит заспавнится.

Способности:
Код:
"AbilityLayout"        "4" //допустимые значения только 4 5 6
"Ability1"          ""      // первая способность юнита, в кавычках //надо указать имя способности либо из units_custom_abilities, либо из стандартных.
//"Ability2" ... до "Ability16"
Максимально, герой может иметь до 16 способностей.
"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"
1. Модель снаряда
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
• Через Lua SetHullRadius(float) можно назначить любое значение до 144.
Смотрите, герой имеет радиус столкновения 24, значит если поставите побольше, то (станет шире кость) его будут обходить на расстояний).


Код:
"RingRadius"        "70"
Колечко под юнитом.
proxy.php?image=http%3A%2F%2Fpuu.sh%2Fho2lF%2F02ab15803e.jpg&hash=b2b9c4907cdc3172e785ee88bfc51c91


Код:
HealthBarOffset"      "250" //насколько высоко будет хп бар.
По стандарту поставлено «-1».
proxy.php?image=http%3A%2F%2Fpuu.sh%2Fho2CK%2F8ae5a734d8.jpg&hash=c478686eb8f07c01cca2cf09ca63504c


Движение:
Код:
"MovementCapabilities"    "DOTA_UNIT_CAP_MOVE_NONE" 
"MovementSpeed"        "300"    // скорость перемещения
"MovementTurnRate"      "0.5"    // скорость поворота.
List of Movement Capabilities
Код:
•	DOTA_UNIT_CAP_MOVE_NONE //не может двигаться
•	DOTA_UNIT_CAP_MOVE_GROUND //двигается по земле
•	DOTA_UNIT_CAP_MOVE_FLY //летает
•	DOTA_UNIT_CAP_POHUI //земноводный. Шутка.
Некоторые редко применяемые характеристики отсюда:
Код:
"HasAggressiveStance"     "0"
Например раньше джаггер, когда рядом противники вытаскивал меч, так что этот параметр тоже решает.
Код:
"FollowRange"         "100"
Дистанция, чтобы когда поставили приказ «Следовать», она будет следовать именно на таком расстоянии. Healing
Код:
Ward/Sigil имеют дистанцию 250.
Здоровье и мана
Код:
"StatusHealth"        "150"    // Здоровье.
"StatusHealthRegen"      "0"     // Регенерация в секунду.
"StatusMana"         "0"     // Мана.
"StatusManaRegen"       "0"     // Регенерация маны в секунду.
Заметки:
• Минусовая регенерация не работает.
• Если поставите Status Mana = 0, то у юнита не будет мана-бара.
• К сожалению пока что в lua нет способа изменять макс ману! Мана юнита и его модификации могут быть осуществлены через Levels или Creature block.
Редко используется
Код:
"StatusStartingMana"     "-1"
-1 это полная мана в начал. Можно сделать так, чтобы юнит стартовал с 0 маны.


Типы брони и атаки:
Можно посмотреть какой тип атаки контрит определенный тип брони здесь.
"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"    // Ночной обзор.
Нельзя поставить больше 1800.

Типизация юнитов:
Это обычно сильно не решает, но может использоваться для таггинга юнитов. Например сделать всем жукам на карте тип Siege и так идентифицировать что жук был убит, проверяя всех убитых юнитов на этот тип.
Код:
"UnitRelationshipClass"    "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"
List:
Код:
•	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"
Как только юнит заспавнится, включится этот скрипт. Вот пример: https://github.com/MNoya/Warchasers/blob/master/game/dota_addons/warchasers/scripts/vscripts/ai_tank_miniboss.lua

The Creature Block
Этот как раз тот блок, который работает если вы указали класс npc_dota_creature :
Код:
"custom_unit"
{
  "BaseClass" "npc_dota_creature"
  // ....

  "Creature"
  {
    // ...
  }
}
Все значения, которые здесь относится к блоку Creature.

Прикрепить одежду:
Есть стандартный блок для героев, который отвечает их за одежду.
Код:
"AttachWearables"
{
  "Wearable1" { "ItemDef" "63" }
  "Wearable2" { "ItemDef" "64" }
  "Wearable3" { "ItemDef" "65" }
  "Wearable4" { "ItemDef" "66" }
  "Wearable5" { "ItemDef" "67" }
  "Wearable6" { "ItemDef" "68" }
}
proxy.php?image=http%3A%2F%2Fpuu.sh%2Fho4ed%2Fd79dc820c8.jpg&hash=cf7e7199a59e7ccd0e45572f96ec887d

Без и «с» указанным блоком 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"
Срезает длительность всех станов на определенный процент.
 
Последнее редактирование модератором:

Se7eN

Друзья CG
22 Ноя 2014
322
4
18
24
Реакции
4 0 0
#2
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Параметры уровня
Код:
"HPGain"          "500" //за каждый уровень существо получает хп
"DamageGain"        "25" //дамаг
"ArmorGain"         "1" //броня
"ManaGain"         "1" //мана
"MagicResistGain"      "1" //магический резист
"MoveSpeedGain"       "1" //скорость перемещения
"BountyGain"        "3" //доп. золото за уровень, который будет давать
"XPGain"          "100" //доп. опыт
Предметы:
Должен иметь "HasInventory" "1"
Образец:
Код:
"EquippedItems"
{
  "ForceStaff"  {  "Item"  "item_force_staff"  }
  "PhaseBoots"  {  "Item"  "item_phase_boots"  }
  "Drums"      
  {  
    "Item"    "item_ancient_janggo"
    "Charges"  "10"
  }
  "Urn"
  {
    "Item"    "item_urn_of_shadows"
    "Charges"  "10"
  }
}
proxy.php?image=http%3A%2F%2Fpuu.sh%2Fho8Z8%2F96535d3d7a.jpg&hash=0cdcc85b99233f2c403a58cbbd429e0c



Changelog: 01.07.15
Гайд переведен и выложен в двух постах.
Некоторые данные дополнены, и упрощены для понимания новичками.
Оригинал by Noya. https://moddota.com/forums/discussion/224/datadriven-units#latest
 
Последнее редактирование модератором:

doter.ua

Продвинутый
17 Авг 2014
280
4
18
25
UA
Реакции
4 0 0
#4
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Было бы неплохо адаптировать все гайды из моддоты под рус комьюнити. Продолжай ;)
 

Se7eN

Друзья CG
22 Ноя 2014
322
4
18
24
Реакции
4 0 0
#5
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Спасибо)

У меня цель, чтобы у нас было своё, русское моддинг сообщество)

А без контента - никак не организуешь, вот и надо постараться
 
Реклама:

-ExotiC-

Администратор
Команда форума
11 Авг 2014
457
45
28
23
customgames.ru
Проект
Trolls vs Elves
Реакции
44 0 1
#6
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

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

M@G

Пользователь
1 Авг 2015
63
0
6
18
Реакции
0 0 0
#7
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

День добрый. После создания и спавна кастомного юнита не проигрывается анимация (обычная idle анимация). За это отвечает какой-то параметр или нужно прекэшировать model_folder?

UPD. Сам спросил - сам ответил: неправильные значения параметров ломают юнит. У меня было неправильно написано названия первой абилки.
 

wetalq

Пользователь
19 Авг 2015
30
0
6
18
Реакции
0 0 0
#8
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

данным способом можно открепить одежду героя, и сделать героя в таком виде, в котором он на скриншоте без меча и доспехов ДК
proxy.php?image=https%3A%2F%2Fpp.vk.me%2Fc629229%2Fv629229563%2Fc8b1%2Fc28Gfjzq6Tw.jpg&hash=7731eeb189e8de37a34ad271bce848c0
 

CryDeS

Друзья CG
14 Июл 2015
1,210
9
38
18
Реакции
9 0 0
#9
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

данным способом можно открепить одежду героя, и сделать героя в таком виде, в котором он на скриншоте без меча и доспехов ДК
С героями не сработает, только с юнитами класса npc_dota_creature.
 
Последнее редактирование модератором:
4 Дек 2015
1
0
1
18
Реакции
0 0 0
#10
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Я вот создал в документе кастомного юнита, где теперь его найти в редакторе?
 
Реклама:

Илья

Супермодератор
Команда форума
25 Сен 2015
2,348
39
48
27
Реакции
39 0 0
#11
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Я вот создал в документе кастомного юнита, где теперь его найти в редакторе?
В редакторе ты его не найдешь. В коде прописываешь его спавн.
Можешь тут посмотреть.
 
Последнее редактирование модератором:

kain

Пользователь
2 Окт 2015
16
0
1
18
Реакции
0 0 0
#12
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

С героями не сработает, только с юнитами класса npc_dota_creature.
Можно пример или ссылку чем/где одеть именно выбранного/заданного героя ?
 

Илья

Супермодератор
Команда форума
25 Сен 2015
2,348
39
48
27
Реакции
39 0 0
#13
Последнее редактирование модератором:

Илья

Супермодератор
Команда форума
25 Сен 2015
2,348
39
48
27
Реакции
39 0 0
#14
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Хотя, тут же все то же самое пишут. Или ты пропустил мимо эту ссылку? Там все доступные к использованию вещи. Они имеют свои идентификаторы. Но и имена у них есть. Ищи по имени, что в редаторе можешь раздобыть.
 

kain

Пользователь
2 Окт 2015
16
0
1
18
Реакции
0 0 0
#15
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

соре илья я видимо криво выразился или меня не правильно поняли)

тут выше автор CryDeS
С героями не сработает, только с юнитами класса npc_dota_creature.
указал что именно с героями которым ты сам играешь т.е. твой персонаж а не моб/босс/волна которую убить надо - такой финт ушами не прокатывает.
Пока не было необходимости но, с созданием кастомного моба и одеть его в нужную вещь, думаю проблем не будет (гайд видел и ссылку твою на файл тоже видел)

Мне надо именно персонаж, те. выбираем SF и я хочу что бы у всех игроков (в не зависимости от наличия у них вещей в инвентаре дота) персонаж был одет одинаково - либо в простой сет SF, либо в аркану, либо иммортал.
 
Реклама:

Илья

Супермодератор
Команда форума
25 Сен 2015
2,348
39
48
27
Реакции
39 0 0
#16
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Мммм

Ну, на этот вопрос я тебе ответить не смогу, но если найдешь сам или кто подскажет, прошу тут оформить этот способ, ибо интересная вещь.
 

CryDeS

Друзья CG
14 Июл 2015
1,210
9
38
18
Реакции
9 0 0
#17
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Мне надо именно персонаж, те. выбираем SF и я хочу что бы у всех игроков (в не зависимости от наличия у них вещей в инвентаре дота) персонаж был одет одинаково - либо в простой сет SF, либо в аркану, либо иммортал.
Ух ты ж чо ты захотел.
По факту мы можем подменять модели шмоток и героев тоже. Функции которые для этого нужны частично описаны в http://customgames.ru/forum/index.php?topic=214.0. Я как то думал создать библиотеку со списком всех шмоток и их нахождений на героях, а дальше уже искать какая шмотка надета, и в зависимости от слота менять (кто знает более прямой вариант - скажите). Идея оказалась не очень рентабельной, ибо шмоток дофигалион, постоянно добавляются новые. Если все же захочешь реализовать свою идею, придется делать список шмоток и слотов, для каждого героя. И потом обновлять с каждой обновой от валв при добавлении новых шмоточек.
Так же есть вариант не заменять конкретные модели а аттачить(прикреплять) свои, что вроде даже работает, но нужно знать один параметр аттача - слот. В свое время я не смог нормально найти название этих слотов. Если разберешься с названием слотов для героев(а там у каждого почти разное название слота, хоть и есть повторы -..-) то сможешь легко сделать, снимая все шмотки и аттачить свои.
Так же тебе может помочь опять же тема от меня http://customgames.ru/forum/index.php?topic=234.0.
Есть идея что Noya или BMD с моддоты знают больше, можешь обратится к ним, если достучишься. Тем более Noya уже вроде намучался с этим аттачем.
 
Последнее редактирование модератором:

Se7eN

Друзья CG
22 Ноя 2014
322
4
18
24
Реакции
4 0 0
#18
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Это тоже можно сделать) есть файл с базовыми данными каждого героя. Где то в heroes_npc или что-то такое. Оттуда полностью копируешь СФа, и в wearables ставишь ему аркану или имморталку. В итоге после прекеша в игре любой такой герой будет показываться уже с арканой)
 

AppelJack

Новичок
21 Мар 2016
3
0
1
18
Реакции
0 0 0
#19
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Есть ли способ заставить юнита засыпать по ночам?
 

Илья

Супермодератор
Команда форума
25 Сен 2015
2,348
39
48
27
Реакции
39 0 0
#20
Re: [Гайд] Как создать кастомного юнита в Valve Hammer Editor (Dota 2)

Есть ли способ заставить юнита засыпать по ночам?

Ну да, накладываешь на него модификатор сна по ночам. Я знаю два таких модификатора: один бейна, другой титана. Ну а днем снимай модификатор.

Тут же ты задашь вопрос: как определить, что на дворе ночь? Ну, забацай либо таймер, который интервалами проверяет время в игре и ночью запускает функцию, что ищет юнитов и накладывает на них сон.
Либо забацай пассивку, что ночью накладывает сон и прописывай эту пассивку всем юнитам.
 
Последнее редактирование модератором:
Реклама:
Реклама: