Кастомные абилки. Структура и пример модификатора атаки.

M@G

Пользователь
1 Авг 2015
63
0
Последнее редактирование модератором:

danilkoo832832

Пользователь
5 Фев 2016
40
3
Я решил изменить 2 абилку акса. Сделал ей радиус с аганимом(типо ульты лиона).
вот код:
Код:
"axe_battle_hunger"
  {
   // General
   //-------------------------------------------------------------------------------------------------------------
   "ID"        "5008"                     // unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
   "AbilityBehavior"      "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE"              // DOTA_ABILITY_BEHAVIOR_AOE для аое применения.
   "AbilityUnitTargetTeam"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
   "AbilityUnitTargetType"     "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
   "AbilityUnitTargetFlags"   "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS"
   "AbilityUnitDamageType"     "DAMAGE_TYPE_MAGICAL"  
   "SpellImmunityType"      "SPELL_IMMUNITY_ENEMIES_NO"
   "FightRecapLevel"      "1"
   // Casting
   //-------------------------------------------------------------------------------------------------------------
   "AbilityCastPoint"      "0.3 0.3 0.3 0.3"
   // Time   
   //-------------------------------------------------------------------------------------------------------------
   "AbilityCooldown"      "20.0 15.0 10.0 5.0"
   // Damage.
   //-------------------------------------------------------------------------------------------------------------
   "AbilityDamage"        "16 24 32 40"
   // Cost
   //-------------------------------------------------------------------------------------------------------------
   "AbilityManaCost"      "75"   
   
   // Cast Range
   //-------------------------------------------------------------------------------------------------------------
   "AbilityCastRange"      "750"
   // Stats
   //-------------------------------------------------------------------------------------------------------------
   "AbilityModifierSupportValue"  "0.1"  // Primarily about the damage
   
   // Special
   //-------------------------------------------------------------------------------------------------------------
   "AbilitySpecial"
   {
     "01"
     {
      "var_type"        "FIELD_FLOAT"
      "duration"        "10.0"
     }
     "02"
     {
      "var_type"        "FIELD_INTEGER"
      "slow"         "-12"
     }
     "03"
     {
      "var_type"        "FIELD_INTEGER"
      "speed_bonus"      "12"
     }
     "04"
     {
      "var_type"        "FIELD_FLOAT"
      "splash_radius"      "10"
     }
     "05"
     {
      "var_type"        "FIELD_FLOAT"
      "splash_radius_scepter"   "450"                                                                                                   // Радиус с аганимом.
     }
   }   
  }

В итоге не робит. Что я сделал не так?
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
40
Тебе надо в npc_abilities_custom.txt создать копию этой абилки.
Заменить ID на base class: "BaseClass" "axe_battle_hunger"
Саму абилку назвать иначе, например axe_battle_hunger_custom
Добавить её в npc_heroes_custom.txt нужному герою.


Кроме того, на сколько я знаю, нельзя вводить свои параметры в уже существующую абилку, а только изменять те, что доступны. Поэтому ты не сможешь так легко добавить поддержку аганима к умению. Надо с нуля писать абилку.
 
Последнее редактирование модератором:

M@G

Пользователь
1 Авг 2015
63
0
Кроме того, на сколько я знаю, нельзя вводить свои параметры в уже существующую абилку, а только изменять те, что доступны. Поэтому ты не сможешь так легко добавить поддержку аганима к умению. Надо с нуля писать абилку.
Все верно. Если надо изменить механику скила, то его надо переписывать. Но в данной ситуации есть еще один выход: отлов приказа -> проверка на аганим -> применение существующего модификатора от абилки в радиусе от цели -> PROFIT!!!
 
Последнее редактирование модератором:

danilkoo832832

Пользователь
5 Фев 2016
40
3
Заменить ID на base class: "BaseClass" "axe_battle_hunger"
Саму абилку назвать иначе, например axe_battle_hunger_custom
Что за BaseClass?) И как заменить ID на BaseClass?
Так что-ли?
Код:
	//=================================================================================================================
	// Ability: Axe Battle Hunger
	//=================================================================================================================
	"axe_battle_hunger_modif"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"BaseClass" 		"axe_battle_hunger_modif" // Как по мне выглядит тупо -_-
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
		"FightRecapLevel"				"1"
Я создал новую абилку, переименовал её и сменил id на 7001.
Код:
	//=================================================================================================================
	// Ability: Axe Battle Hunger
	//=================================================================================================================
	"axe_battle_hunger_modif"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		
		"BaseClass"						"ability_datadriven"     // И с BaseClass'ом пробывал и без.
		
		"ID"					"7001"          // Вроде такой ID не используется в доте.
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
		"FightRecapLevel"				"1"
Теперь вообще акс без абилок. ;D
Есть еще 1 проблема. Я к войду добавил backtrack и теперь у него 5 абилок, Но атрибуты не качаются.
 
Последнее редактирование модератором:

CryDeS

Друзья CG
14 Июл 2015
1,210
9
[quote author=danilkoo832832 link=topic=8.msg2841#msg2841 date=1454784106]
Что за BaseClass?) И как заменить ID на BaseClass?
Так что-ли?
Код:
	//=================================================================================================================
	// Ability: Axe Battle Hunger
	//=================================================================================================================
	"axe_battle_hunger_modif"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"BaseClass" 		"axe_battle_hunger_modif" // Как по мне выглядит тупо -_-
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
		"FightRecapLevel"				"1"
Я создал новую абилку, переименовал её и сменил id на 7001.
Код:
	//=================================================================================================================
	// Ability: Axe Battle Hunger
	//=================================================================================================================
	"axe_battle_hunger_modif"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		
		"BaseClass"						"ability_datadriven"     // И с BaseClass'ом пробывал и без.
		
		"ID"					"7001"          // Вроде такой ID не используется в доте.
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
		"FightRecapLevel"				"1"
Теперь вообще акс без абилок. ;D
Есть еще 1 проблема. Я к войду добавил backtrack и теперь у него 5 абилок, Но атрибуты не качаются.
[/quote]
И правильно без абилок. Это KV-файл, т.е Key - Value, Ключ - значение. Одному ключу соответствует ОДНО значение.
ID - ключ, сам номер - значение
BaseClass - ключ, текст - значение.
Должно быть что то вроде:
Код:
"ID" "5001"
"BaseClass" "datadriven"
"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
40
Код:
	"axe_battle_hunger_modif"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"						"axe_battle_hunger"	
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
		"FightRecapLevel"				"1"

		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastPoint"				"0.3 0.3 0.3 0.3"

		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"20.0 15.0 10.0 5.0"

		// Damage.
		//-------------------------------------------------------------------------------------------------------------
		"AbilityDamage"					"16 24 32 40"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"75"		
		
		// Cast Range
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"750"

		// Stats
		//-------------------------------------------------------------------------------------------------------------
		"AbilityModifierSupportValue"	"0.1"	// Primarily about the damage
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"					"FIELD_FLOAT"
				"duration"					"10.0"
			}
			"02"
			{
				"var_type"					"FIELD_INTEGER"
				"slow"						"-12"
			}
			"03"
			{
				"var_type"					"FIELD_INTEGER"
				"speed_bonus"						"12"
			}
		}		
	}

ID абилкам новым вообще не нужен.


Если ты заменишь слот абилок, предназначенный для атрибутов, то их естественно не будет. Но в исходнике npc_heroes.txt у Войда всего 4 слота абилок занято:

Код:
		"Ability1"		"faceless_void_time_walk"
		"Ability2"		"faceless_void_time_dilation"
		"Ability3"		"faceless_void_time_lock"
		"Ability4"		"faceless_void_chronosphere"

И как ты видишь, тут нет абилки атрибута. Значит, можно спокойно пользоваться Ability5 и т.д. вплоть до 16. Но если ты утверждаешь, что правильно переделал персонажа и атрибуты пропали, попробуй тогда использовать другой слот.
 
Последнее редактирование модератором:

danilkoo832832

Пользователь
5 Фев 2016
40
3
Код:
		"AbilityLayout"		"5"
		"Ability1"		"faceless_void_time_walk"
		"Ability2"		"faceless_void_time_dilation"
		"Ability3"		"faceless_void_time_lock"
		"ability4"		"faceless_void_backtrack"
		"Ability5"		"faceless_void_chronosphere"
Настроено все правильно. Как видишь и отображаются правильно.Слот другой пробывал использовать.
 
Последнее редактирование модератором:

danilkoo832832

Пользователь
5 Фев 2016
40
3
[quote author=Илья link=topic=8.msg2844#msg2844 date=1454792678]
Код:
	"axe_battle_hunger_modif"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"						"axe_battle_hunger"	
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
		"FightRecapLevel"				"1"

		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastPoint"				"0.3 0.3 0.3 0.3"

		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"20.0 15.0 10.0 5.0"

		// Damage.
		//-------------------------------------------------------------------------------------------------------------
		"AbilityDamage"					"16 24 32 40"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"75"		
		
		// Cast Range
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"750"

		// Stats
		//-------------------------------------------------------------------------------------------------------------
		"AbilityModifierSupportValue"	"0.1"	// Primarily about the damage
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"					"FIELD_FLOAT"
				"duration"					"10.0"
			}
			"02"
			{
				"var_type"					"FIELD_INTEGER"
				"slow"						"-12"
			}
			"03"
			{
				"var_type"					"FIELD_INTEGER"
				"speed_bonus"						"12"
			}
		}		
	}
[/quote]
:-\ Не робит.
Вообще я думаю что не нужен аксу аганим! Мои нервы и стул того не стоят. :mad:
Код:
		"Ability1"		"axe_berserkers_call_modif"
		"Ability2"		"axe_battle_hunger_modif"
		"Ability3"		"axe_counter_helix_modif"
		"Ability4"		"axe_culling_blade"
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
40
Эмм, про аганим тебе уже говорили - не выйдет сделать абилку, которая изначально аганим не поддерживала, аганимоподдерживаемой. Для этого надо умения с нуля писать или хитрить.

Насчет войда: убери эту штуку
Код:
"AbilityLayout"		"5"
И попробуй снова.
 
Последнее редактирование модератором:

danilkoo832832

Пользователь
5 Фев 2016
40
3
Эмм, про аганим тебе уже говорили - не выйдет сделать абилку, которая изначально аганим не поддерживала, аганимоподдерживаемой. Для этого надо умения с нуля писать или хитрить.
Даже если делать без аганима, то у акса отсутствует данная абилка.
[quote author=Илья link=topic=8.msg2847#msg2847 date=1454801028]
Насчет войда: убери эту штуку
Код:
"AbilityLayout"		"5"
И попробуй снова.
[/quote]
Без неё скиллы отображаться правильно не будут. проблема останется и будет их 2.)
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
40
Что-то ты явно не так делаешь. Без "AbilityLayout" все верно отображается, если умений всего 4 у персонажа. Войд один из таких.

Если аксу пихнешь мой варинт, он тоже будет работать. Скинь свой npc_heroes_custom.txt и npc_abilities_custom.txt
 
Последнее редактирование модератором:

danilkoo832832

Пользователь
5 Фев 2016
40
3
Полностью файлы скидывать не вижу смысла
Код войда
npc_abilities_custom
Код:
	//=================================================================================================================
	// Faceless Void: Time Walk
	//=================================================================================================================
	"faceless_void_time_walk"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"5182"														// unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_DIRECTIONAL"
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
		
		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"0"
		"AbilityCastPoint"				"0.2"

		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"24 18 12 6"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"40"

		// Stats
		//-------------------------------------------------------------------------------------------------------------
		"AbilityModifierSupportValue"	"0.25"	// mostly about the blink

		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"speed"					"3000"
			}
			"02"
			{
				"var_type"				"FIELD_INTEGER"
				"range"					"625"
			}
			"03"
			{
				"var_type"				"FIELD_FLOAT"
				"backtrack_duration"	"2.0"
			}
			"04"
			{
				"var_type"				"FIELD_INTEGER"
				"radius"				"300"
			}
		}
	}
	
	//=================================================================================================================
	// Faceless Void: Backtrack
	//=================================================================================================================
	"faceless_void_backtrack"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"5183"														// unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_PASSIVE"
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"dodge_chance_pct"		"15 25 30 35"
			}
		}
	}

	//=================================================================================================================
	// Faceless Void: Time Lock
	//=================================================================================================================
	"faceless_void_time_lock"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"5184"														// unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_PASSIVE"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_YES"
		
		// Stats
		//-------------------------------------------------------------------------------------------------------------
		"AbilityModifierSupportBonus"		"25"

		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_FLOAT"
				"duration"				"1.0"
			}
			"02"
			{
				"var_type"				"FIELD_FLOAT"
				"duration_creep"		"2.0"
			}
			"03"
			{
				"var_type"				"FIELD_INTEGER"
				"chance_pct"			"15 25 30 35"
			}
			"04"
			{
				"var_type"				"FIELD_INTEGER"
				"bonus_damage"			"50 65 80 95"
			}
		}
	}

	//=================================================================================================================
	// Faceless Void: Time Dilation
	//=================================================================================================================
	"faceless_void_time_dilation"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"5691"														// unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_NO_TARGET"
		
		"AbilityCastPoint"				"0.1"
		"AbilityCooldown"				"36 30 24 18"
		"AbilityManaCost"				"50"	
				
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"radius"				"725"
			}
			"02"
			{
				"var_type"				"FIELD_FLOAT"
				"duration"				"6 8 10 12"
			}					
			"03"
			{
				"var_type"				"FIELD_INTEGER"
				"slow"					"10 12 14 16"
			}
		}
	}

	//=================================================================================================================
	// Faceless Void: Chronosphere
	//=================================================================================================================
	"faceless_void_chronosphere"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"5185"														// unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT"
		"AbilityType"					"DOTA_ABILITY_TYPE_ULTIMATE"
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_YES"
		"FightRecapLevel"				"2"
		
		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"600"
		"AbilityCastPoint"				"0.35 0.35 0.35"

		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"130.0 115.0 100.0"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"150 225 300"

		// Stats
		//-------------------------------------------------------------------------------------------------------------
		"AbilityModifierSupportBonus"		"50"

		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"radius"				"525"
			}
			"02"
			{
				"var_type"				"FIELD_FLOAT"
				"duration"				"4.5 5.0 5.5"
			}
			"03"
			{
				"var_type"				"FIELD_FLOAT"
				"duration_scepter"		"6.0 7.0 8.0"
			}
			"04"
			{
				"var_type"				"FIELD_FLOAT"
				"cooldown_scepter"		"60.0 60.0 60.0"
			}
			"05"
			{
				"var_type"				"FIELD_INTEGER"
				"vision_radius"			"575"
			}
		}
	}
npc_heroes_custom
Код:
"npc_dota_hero_faceless_void"
	{
		"Model"		"models/heroes/faceless_void/faceless_void.vmdl"
		"Portrait"		"vgui/hud/heroportraits/portrait_faceless_void"
		"IdleExpression"		"scenes/faceless_void/faceless_void_exp_idle_01.vcd"
		"SoundSet"		"Hero_FacelessVoid"
		"Enabled"		"1"
		"HeroUnlockOrder"		"0"
		"Role"			"Carry,Initiator,Disabler,Escape,Durable"
		"Rolelevels"	"2,3,2,1,1"
		"Team"		"Bad"
		"HeroID"		"41"
		"ModelScale"		"0.840000"
		"LoadoutScale"		"0.950000"
		"HeroGlowColor"		"217 160 255"
		"PickSound"		"faceless_void_face_spawn_01"
		"BanSound"		"faceless_void_face_anger_02"
		"CMEnabled"		"1"
		"NameAliases"		"fv"
		"url"		"Faceless_Void"
		"LastHitChallengeRival"		"npc_dota_hero_bounty_hunter"
		"HeroSelectSoundEffect"		"Hero_FacelessVoid.Pick"
		"AbilityLayout"		"5"
		"Ability1"		"faceless_void_time_walk"
		"Ability2"		"faceless_void_time_dilation"
		"Ability3"		"faceless_void_time_lock"
		"ability4"		"faceless_void_backtrack"
		"Ability5"		"faceless_void_chronosphere"
		"ArmorPhysical"		"1"
		"AttackCapabilities"		"DOTA_UNIT_CAP_MELEE_ATTACK"
		"AttackDamageMin"		"37"
		"AttackDamageMax"		"43"
		"AttackRate"		"1.700000"
		"AttackAnimationPoint"		"0.500000"
		"AttackAcquisitionRange"		"600"
		"AttackRange"		"128"
		"AttributePrimary"		"DOTA_ATTRIBUTE_AGILITY"
		"AttributeBaseStrength"		"23"
		"AttributeStrengthGain"		"1.800000"
		"AttributeBaseAgility"		"23"
		"AttributeAgilityGain"		"2.65000"
		"AttributeBaseIntelligence"		"15"
		"AttributeIntelligenceGain"		"1.500000"
		"StatusHealthRegen"		"0.750000"
		"MovementSpeed"		"300"
		"MovementTurnRate"		"1.000000"
		"BoundsHullName"		"DOTA_HULL_SIZE_HERO"
		"HealthBarOffset"		"150"
		"ItemSlots"
		{
			"0"
			{
				"SlotIndex"		"0"
				"SlotName"		"weapon"
				"SlotText"		"#LoadoutSlot_Weapon"
				"TextureWidth"		"256"
				"TextureHeight"		"256"
				"MaxPolygonsLOD0"		"750"
				"MaxPolygonsLOD1"		"400"
			}
			"1"
			{
				"SlotIndex"		"1"
				"SlotName"		"arms"
				"SlotText"		"#LoadoutSlot_Arms"
				"TextureWidth"		"256"
				"TextureHeight"		"128"
				"MaxPolygonsLOD0"		"400"
				"MaxPolygonsLOD1"		"350"
			}
			"2"
			{
				"SlotIndex"		"2"
				"SlotName"		"body_head"
				"SlotText"		"#LoadoutSlot_Head"
				"TextureWidth"		"256"
				"TextureHeight"		"256"
				"MaxPolygonsLOD0"		"700"
				"MaxPolygonsLOD1"		"400"
			}
			"3"
			{
				"SlotIndex"		"3"
				"SlotName"		"belt"
				"SlotText"		"#LoadoutSlot_Belt"
				"TextureWidth"		"256"
				"TextureHeight"		"128"
				"MaxPolygonsLOD0"		"600"
				"MaxPolygonsLOD1"		"350"
			}
			"4"
			{
				"SlotIndex"		"4"
				"SlotName"		"shoulder"
				"SlotText"		"#LoadoutSlot_Shoulder"
				"TextureWidth"		"256"
				"TextureHeight"		"256"
				"MaxPolygonsLOD0"		"800"
				"MaxPolygonsLOD1"		"400"
			}
			"5"
			{
				"SlotIndex"		"5"
				"SlotName"		"taunt"
				"SlotText"		"#LoadoutSlot_Taunt"
				"DisplayInLoadout" "0"
			}
		}
		"particle_folder"		"particles/units/heroes/hero_faceless_void"
		"GameSoundsFile"		"soundevents/game_sounds_heroes/game_sounds_faceless_void.vsndevts"
		"VoiceFile"		"soundevents/voscripts/game_sounds_vo_faceless_void.vsndevts"
		"RenderablePortrait"
		{
			"Particles"
			{
				"particles/units/heroes/hero_faceless_void/faceless_void_loadout.vpcf"
				{
					"0"
					{
						"type"		"follow_origin"
						"location"		"attach_hitloc"
					}
				}
			}
		}
		"Bot"
		{
			"Loadout"
			{
				"item_tango"		"ITEM_CONSUMABLE | ITEM_SELLABLE"
				"item_flask"		"ITEM_CONSUMABLE | ITEM_SELLABLE"
				"item_branches"		"ITEM_CORE"
				"item_branches"		"ITEM_CORE"
				"item_quelling_blade"		"ITEM_CORE | ITEM_SELLABLE"
				"item_magic_stick"		"ITEM_CORE"
				"item_boots"		"ITEM_CORE"
				"item_boots_of_elves"		"ITEM_CORE"
				"item_gloves"		"ITEM_CORE"
				"item_circlet"		"ITEM_CORE"
				"item_magic_wand"		"ITEM_DERIVED | ITEM_SELLABLE"
				"item_javelin"		"ITEM_EXTENSION"
				"item_javelin"		"ITEM_EXTENSION"
				"item_demon_edge"		"ITEM_EXTENSION"
				"item_monkey_king_bar"		"ITEM_DERIVED"
				"item_blade_of_alacrity"		"ITEM_EXTENSION"
				"item_boots_of_elves"		"ITEM_EXTENSION"
				"item_recipe_yasha"		"ITEM_EXTENSION"
				"item_yasha"		"ITEM_DERIVED"
				"item_ultimate_orb"		"ITEM_EXTENSION"
				"item_recipe_manta"		"ITEM_EXTENSION"
				"item_manta"		"ITEM_DERIVED"
			}
			"Build"
			{
				"1"		"faceless_void_time_walk"
				"2"		"faceless_void_backtrack"
				"3"		"faceless_void_time_walk"
				"4"		"faceless_void_backtrack"
				"5"		"faceless_void_time_walk"
				"6"		"faceless_void_chronosphere"
				"7"		"faceless_void_time_walk"
				"8"		"faceless_void_backtrack"
				"9"		"faceless_void_backtrack"
				"10"		"faceless_void_time_lock"
				"11"		"faceless_void_chronosphere"
				"12"		"faceless_void_time_lock"
				"13"		"faceless_void_time_lock"
				"14"		"faceless_void_time_lock"
				"15"		"attribute_bonus"
				"16"		"faceless_void_chronosphere"
				"17"		"attribute_bonus"
				"18"		"attribute_bonus"
				"19"		"attribute_bonus"
				"20"		"attribute_bonus"
				"21"		"attribute_bonus"
				"22"		"attribute_bonus"
				"23"		"attribute_bonus"
				"24"		"attribute_bonus"
				"25"		"attribute_bonus"
			}
			"HeroType"		"DOTA_BOT_HARD_CARRY"
			"LaningInfo"
			{
				"SoloDesire"		"0"
				"RequiresBabysit"		"2"
				"ProvidesBabysit"		"0"
				"SurvivalRating"		"1"
				"RequiresFarm"		"2"
				"ProvidesSetup"		"0"
				"RequiresSetup"		"2"
			}
		}
	}
Код акса
npc_abilities_custom
Код:
	//=================================================================================================================
	// Ability: Axe Berserker's Call
	//=================================================================================================================
	"axe_berserkers_call"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"5007"														// unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT"
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_YES"
		"FightRecapLevel"				"1"

		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastPoint"				"0.4"

		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"16 14 12 10"

		// Damage.
		//-------------------------------------------------------------------------------------------------------------
		"AbilityDamage"					"0 0 0 0"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"80 90 100 110"	
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"

				"radius"				"385"
			}
			"02"
			{
				"var_type"				"FIELD_INTEGER"
				"bonus_armor"			"20 60 100 140"
			}
			"03"
			{
				"var_type"				"FIELD_FLOAT"
				"duration"				"2.0 2.5 3.0 3.5"
			}
			"04"
			{
				"var_type"				"FIELD_FLOAT"
				"duration_scepter"		"2.5 3.0 3.5 5"
			}
		}
	}
	
	//=================================================================================================================
	// Ability: Axe Battle Hunger
	//=================================================================================================================
	"axe_battle_hunger_modif" 							// В файле npc_abilities_custom есть и оригинал данной абилки.
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"						"axe_battle_hunger"	
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
		"FightRecapLevel"				"1"

		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastPoint"				"0.3 0.3 0.3 0.3"

		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"20.0 15.0 10.0 5.0"

		// Damage.
		//-------------------------------------------------------------------------------------------------------------
		"AbilityDamage"					"16 24 32 40"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"75"		
		
		// Cast Range
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"750"

		// Stats
		//-------------------------------------------------------------------------------------------------------------
		"AbilityModifierSupportValue"	"0.1"	// Primarily about the damage
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"					"FIELD_FLOAT"
				"duration"					"10.0"
			}
			"02"
			{
				"var_type"					"FIELD_INTEGER"
				"slow"						"-12"
			}
			"03"
			{
				"var_type"					"FIELD_INTEGER"
				"speed_bonus"						"12"
			}
		}		
	}

	//=================================================================================================================
	// Ability: Axe Counter Helix
	//=================================================================================================================
	"axe_counter_helix"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"5009"														// unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_PASSIVE"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_PHYSICAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_YES"
		
		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"0.45 0.4 0.35 0.3"
		
		// Damage.
		//-------------------------------------------------------------------------------------------------------------
		"AbilityDamage"					"100 135 170 205"

		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"					"FIELD_INTEGER"
				"radius"					"375"
			}
			"02"
			{
				"var_type"					"FIELD_INTEGER"
				"trigger_chance"			"10 20 30 40"
			}
			"03"
			{
				"var_type"					"FIELD_FLOAT"
				"cooldown"					"0.3 0.25 0.2 0.1"
			}
			"04"
			{
				"var_type"					"FIELD_FLOAT"
				"cooldown_scepter"			"0"
			}
		}
	}
	
	//=================================================================================================================
	// Ability: Axe Culling Blade
	//=================================================================================================================
	"axe_culling_blade"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"5010"														// unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
		"AbilityType"					"DOTA_ABILITY_TYPE_ULTIMATE"
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"		
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_YES"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"FightRecapLevel"				"2"

		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastPoint"				"0.2"

		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"75.0 65.0 55.0"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"60 120 180"		
		
		// Cast Range
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"150"
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"					"FIELD_INTEGER"
				"kill_threshold"			"250 325 400"
			}
			"02"
			{
				"var_type"					"FIELD_INTEGER"
				"damage"					"150 250 300"
			}
			"03"
			{
				"var_type"					"FIELD_INTEGER"
				"speed_bonus"				"60"
			}
			"04"
			{
				"var_type"					"FIELD_INTEGER"
				"atk_speed_bonus_tooltip"				"60"
			}
			"05"
			{
				"var_type"					"FIELD_FLOAT"
				"speed_duration"			"12"
			}
			"06"
			{
				"var_type"					"FIELD_INTEGER"
				"speed_aoe"					"900"
			}
			"07"
			{
				"var_type"					"FIELD_FLOAT"
				"cooldown_scepter"			"6.0 6.0 6.0"
			}
			"08"
			{
				"var_type"					"FIELD_INTEGER"
				"kill_threshold_scepter"	"400 525 700"
			}
			"09"
			{
				"var_type"					"FIELD_FLOAT"
				"speed_duration_scepter"	"15"
			}
		}
npc_heroes_custom
Код:
	//=================================================================================================================
	// HERO: Axe
	//=================================================================================================================
	"npc_dota_hero_axe"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------	
		"Model"		"models/heroes/axe/axe.vmdl"
		"Portrait"		"vgui/hud/heroportraits/portrait_axe"
		"SoundSet"		"Hero_Axe"
		"PickSound"		"axe_axe_spawn_01"
		"BanSound"		"axe_axe_anger_01"
		"Enabled"		"1"
		"HeroUnlockOrder"		"2"
		"Role"			"Initiator,Durable,Disabler,Jungler"
		"Rolelevels"	"3,3,2,2"
		"Team"		"Bad"
		"HeroID"		"2"
		"BotImplemented"		"1"
		"ModelScale"		"1.000000"
		"LoadoutScale"		"0.950000"
		"HeroGlowColor"		"222 60 36"
		"CMEnabled"		"1"
		"url"		"Axe"
		"new_player_enable"		"1"
		"LastHitChallengeRival"		"npc_dota_hero_juggernaut"
		"HeroSelectSoundEffect"		"Hero_Axe.Pick"
		"Ability1"		"axe_berserkers_call"
		"Ability2"		"axe_battle_hunger_modif"
		"Ability3"		"axe_counter_helix"
		"Ability4"		"axe_culling_blade"
		"ArmorPhysical"		"-1"
		"AttackCapabilities"		"DOTA_UNIT_CAP_MELEE_ATTACK"
		"AttackDamageMin"		"24"
		"AttackDamageMax"		"28"
		"AttackRate"		"1.700000"
		"AttackAnimationPoint"		"0.500000"
		"AttackAcquisitionRange"		"600"
		"AttackRange"		"128"
		"AttributePrimary"		"DOTA_ATTRIBUTE_STRENGTH"
		"AttributeBaseStrength"		"25"
		"AttributeStrengthGain"		"2.500000"
		"AttributeBaseIntelligence"		"18"
		"AttributeIntelligenceGain"		"1.600000"
		"AttributeBaseAgility"		"20"
		"AttributeAgilityGain"		"2.200000"
		"StatusHealthRegen"		"3.000000"
		"MovementSpeed"		"290"
		"MovementTurnRate"		"0.600000"
		"BoundsHullName"		"DOTA_HULL_SIZE_HERO"
		"HealthBarOffset"		"160"
		"ItemSlots"
		{
			"0"
			{
				"SlotIndex"		"0"
				"SlotName"		"weapon"
				"SlotText"		"#LoadoutSlot_Weapon"
				"TextureWidth"		"256"
				"TextureHeight"		"256"
				"MaxPolygonsLOD0"		"700"
				"MaxPolygonsLOD1"		"400"
			}
			"1"
			{
				"SlotIndex"		"1"
				"SlotName"		"head"
				"SlotText"		"#LoadoutSlot_Head_Accessory"
				"TextureWidth"		"256"
				"TextureHeight"		"256"
				"MaxPolygonsLOD0"		"600"
				"MaxPolygonsLOD1"		"400"
			}
			"2"
			{
				"SlotIndex"		"2"
				"SlotName"		"armor"
				"SlotText"		"#LoadoutSlot_Armor"
				"TextureWidth"		"256"
				"TextureHeight"		"256"
				"MaxPolygonsLOD0"		"600"
				"MaxPolygonsLOD1"		"400"
			}
			"3"
			{
				"SlotIndex"		"3"
				"SlotName"		"belt"
				"SlotText"		"#LoadoutSlot_Belt"
				"TextureWidth"		"256"
				"TextureHeight"		"256"
				"MaxPolygonsLOD0"		"500"
				"MaxPolygonsLOD1"		"200"
			}
			"4"
			{
				"SlotIndex"		"4"
				"SlotName"		"taunt"
				"SlotText"		"#LoadoutSlot_Taunt"
			}
			"5"
			{
				"SlotIndex"		"5"
				"SlotName"		"misc"
				"SlotText"		"#LoadoutSlot_Misc"
				"TextureWidth"		"256"
				"TextureHeight"		"256"
				"MaxPolygonsLOD0"		"500"
				"MaxPolygonsLOD1"		"300"
			}
			"6"
			{
				"SlotIndex"		"6"
				"SlotName"		"summon"
				"SlotText"		"#LoadoutSlot_Pet"
				"ShowItemOnGeneratedUnits" "1"
				"GeneratesUnits"
				{
					"0" "npc_dota_companion"
				}
			}
		}
		"particle_folder"		"particles/units/heroes/hero_axe"
		"GameSoundsFile"		"soundevents/game_sounds_heroes/game_sounds_axe.vsndevts"
		"VoiceFile"		"soundevents/voscripts/game_sounds_vo_axe.vsndevts"
		"RenderablePortrait"
		{
			"Particles"
			{
				"particles/units/heroes/hero_axe/axe_loadout.vpcf"
				{
					"0"
					{
						"type"		"follow_attachment"
						"location"		"attach_attack1"
					}
				}
			}
		}
		"Bot"
		{
			"Loadout"
			{
				"item_stout_shield"		"ITEM_CORE"
				"item_tango"		"ITEM_CONSUMABLE | ITEM_SELLABLE"
				"item_tango"		"ITEM_CONSUMABLE | ITEM_SELLABLE"
				"item_branches"		"ITEM_CORE"
				"item_branches"		"ITEM_CORE"
				"item_circlet"		"ITEM_CORE"
				"item_boots"		"ITEM_CORE"
				"item_magic_stick"		"ITEM_CORE"
				"item_magic_wand"		"ITEM_DERIVED | ITEM_SELLABLE"
				"item_ring_of_health"		"ITEM_CORE"
				"item_vitality_booster"		"ITEM_CORE"
				"item_vanguard"		"ITEM_DERIVED"
				"item_blades_of_attack"		"ITEM_CORE"
				"item_blades_of_attack"		"ITEM_CORE"
				"item_phase_boots"		"ITEM_DERIVED"
				"item_blink"		"ITEM_EXTENSION"
				"item_mithril_hammer"		"ITEM_LUXURY"
				"item_ogre_axe"		"ITEM_LUXURY"
				"item_recipe_black_king_bar"		"ITEM_LUXURY"
				"item_black_king_bar"		"ITEM_DERIVED"
				"item_reaver"		"ITEM_LUXURY"
				"item_vitality_booster"		"ITEM_LUXURY"
				"item_recipe_heart"		"ITEM_LUXURY"
				"item_heart"		"ITEM_DERIVED"
				"item_platemail"		"ITEM_LUXURY"
				"item_mystic_staff"		"ITEM_LUXURY"
				"item_recipe_shivas_guard"		"ITEM_LUXURY"
				"item_shivas_guard"		"ITEM_DERIVED"
			}
			"Build"
			{
				"1"		"axe_counter_helix"
				"2"		"axe_battle_hunger"
				"3"		"axe_battle_hunger"
				"4"		"axe_counter_helix"
				"5"		"axe_battle_hunger"
				"6"		"axe_culling_blade"
				"7"		"axe_battle_hunger"
				"8"		"axe_counter_helix"
				"9"		"axe_counter_helix"
				"10"		"axe_berserkers_call"
				"11"		"axe_culling_blade"
				"12"		"axe_berserkers_call"
				"13"		"axe_berserkers_call"
				"14"		"axe_berserkers_call"
				"15"		"attribute_bonus"
				"16"		"axe_culling_blade"
				"17"		"attribute_bonus"
				"18"		"attribute_bonus"
				"19"		"attribute_bonus"
				"20"		"attribute_bonus"
				"21"		"attribute_bonus"
				"22"		"attribute_bonus"
				"23"		"attribute_bonus"
				"24"		"attribute_bonus"
				"25"		"attribute_bonus"
			}
			"HeroType"		"DOTA_BOT_TANK | DOTA_BOT_STUN_SUPPORT"
			"LaningInfo"
			{
				"SoloDesire"		"1"
				"RequiresBabysit"		"0"
				"ProvidesBabysit"		"1"
				"SurvivalRating"		"2"
				"RequiresFarm"		"1"
				"ProvidesSetup"		"0"
				"RequiresSetup"		"1"
			}
		}
	}
Ccылка на файлы
npc_abilities_custom https://yadi.sk/i/R-s45YV8oSAdZ
npc_heroes_custom https://yadi.sk/i/W2mBIeT3oSAdP
 
Последнее редактирование модератором:

CryDeS

Друзья CG
14 Июл 2015
1,210
9
Что-то ты явно не так делаешь. Без "AbilityLayout" все верно отображается, если умений всего 4 у персонажа. Войд один из таких.

Если аксу пихнешь мой варинт, он тоже будет работать. Скинь свой npc_heroes_custom.txt и npc_abilities_custom.txt
Он поставил войду 5 умений, так что норм
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
40
Ну понятно, в чем проблема.


Во первых:
в npc_heroes_custom.txt если ты создаешь своего героя на основе уже существующего, не надо все его характеристики описывать. Описываются только те, которые ты меняешь.


Во вторых:
в npc_abilities_custom.txt описываются только НОВЫЕ абилки, а старые не надо туда копировать. У тебя сейчас в моде несколько абилок с одинаковым id из-за этого. Это оригинал, который в исходнике лежит и твое зеркало оригинала из npc_abilities_custom.txt. Компилятор видит, что один и тот же id идентифицирует два объекта и охуевает. Ты ему мозг взрываешь и он отказывается работать. Это все равно, если бы в паспорте у тебя было бы две даты рождения. Нет однозначности.



Вот тебе пример, как должен выглядеть изменяемый персонаж:

Код:
"npc_dota_hero_axe"
	{
		"override_hero"				"npc_dota_hero_axe"				// Hero to override
		"Ability4"					"axe_culling_blade_custom"						// Ability 4
	}

Код:
	"axe_culling_blade_custom"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"						"axe_culling_blade"
		"AbilityType"					"DOTA_ABILITY_TYPE_ULTIMATE"
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"		
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_YES"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"FightRecapLevel"				"2"

		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastPoint"				"0.3"

		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"5.0 5.0 5.0"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"10 10 10"		
		
		// Cast Range
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"150"
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"					"FIELD_INTEGER"
				"kill_threshold"			"250 325 400"
			}
			"02"
			{
				"var_type"					"FIELD_INTEGER"
				"damage"					"150 250 300"
			}
			"03"
			{
				"var_type"					"FIELD_INTEGER"
				"speed_bonus"				"50"
			}
			"04"
			{
				"var_type"					"FIELD_INTEGER"
				"atk_speed_bonus_tooltip"				"50"
			}
			"05"
			{
				"var_type"					"FIELD_FLOAT"
				"speed_duration"			"6"
			}
			"06"
			{
				"var_type"					"FIELD_INTEGER"
				"speed_aoe"					"900"
			}
			"07"
			{
				"var_type"					"FIELD_FLOAT"
				"cooldown_scepter"			"1.0 1.0 1.0"
			}
			"08"
			{
				"var_type"					"FIELD_INTEGER"
				"kill_threshold_scepter"	"300 450 600"
			}
			"09"
			{
				"var_type"					"FIELD_FLOAT"
				"speed_duration_scepter"	"12"
			}
		}
	}
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
40
Вот тебе пример работы с AbilityLayout:

Код:
"npc_dota_hero_spectre"
	{
		"override_hero"				"npc_dota_hero_spectre"
		"AbilityLayout"				"4"		
		"Ability1"					"spectre_spectral_dagger"
		"Ability2"					"spectre_desolate"
		"Ability3"					"spectre_dispersion_custom"
		"Ability4"					"spectre_time_lapse"
		"Ability5"					"attribute_bonus"	
	}


Код:
	"spectre_dispersion_custom"
	{
		// General
		//---------------------------------------------------------------------------------
		"BaseClass"						"spectre_dispersion"
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_PASSIVE"
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"

		// Special
		//---------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"damage_reflection_pct"	"10 15 20 25"
			}
			"02"
			{
				"var_type"				"FIELD_INTEGER"
				"min_radius"			"100 100 100 100"
			}
			"03"
			{
				"var_type"				"FIELD_INTEGER"
				"max_radius"			"1000 1000 1000 1000"
			}			
		}
	}	

	"spectre_time_lapse"
	{
		// General
		//------------------------------------------------------------------------------------------
		"BaseClass"						"weaver_time_lapse"
		"AbilityType"					"DOTA_ABILITY_TYPE_ULTIMATE"
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING"		
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_FRIENDLY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO"
		"AbilityCastRange"				"1000"
		"AbilityTextureName"   		"spectre_haunt"
		
		"FightRecapLevel"				"2"

		"AbilityCastPoint"				"0.3 0.3 0.3 0.3"
		"AbilityCooldown"				"80 60 40"
		"AbilityManaCost"				"150 75 0"	
		
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"cooldown_scepter"		"20"
			}	
			"02"
			{
				"var_type"				"FIELD_INTEGER"
				"cast_range_tooltip_scepter"		"1000"
			}				
		}
	}
 
Последнее редактирование модератором:

danilkoo832832

Пользователь
5 Фев 2016
40
3
[quote author=Илья link=topic=8.msg2857#msg2857 date=1454844081]
Ну понятно, в чем проблема.


Во первых:
в npc_heroes_custom.txt если ты создаешь своего героя на основе уже существующего, не надо все его характеристики описывать. Описываются только те, которые ты меняешь.


Во вторых:
в npc_abilities_custom.txt описываются только НОВЫЕ абилки, а старые не надо туда копировать. У тебя сейчас в моде несколько абилок с одинаковым id из-за этого. Это оригинал, который в исходнике лежит и твое зеркало оригинала из npc_abilities_custom.txt. Компилятор видит, что один и тот же id идентифицирует два объекта и охуевает. Ты ему мозг взрываешь и он отказывается работать. Это все равно, если бы в паспорте у тебя было бы две даты рождения. Нет однозначности.



Вот тебе пример, как должен выглядеть изменяемый персонаж:

Код:
"npc_dota_hero_axe"
	{
		"override_hero"				"npc_dota_hero_axe"				// Hero to override
		"Ability4"					"axe_culling_blade_custom"						// Ability 4
	}

Код:
	"axe_culling_blade_custom"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"						"axe_culling_blade"
		"AbilityType"					"DOTA_ABILITY_TYPE_ULTIMATE"
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"		
		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_BASIC"
		"AbilityUnitTargetFlags"		"DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_YES"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_MAGICAL"	
		"FightRecapLevel"				"2"

		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastPoint"				"0.3"

		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"5.0 5.0 5.0"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"10 10 10"		
		
		// Cast Range
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"150"
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"					"FIELD_INTEGER"
				"kill_threshold"			"250 325 400"
			}
			"02"
			{
				"var_type"					"FIELD_INTEGER"
				"damage"					"150 250 300"
			}
			"03"
			{
				"var_type"					"FIELD_INTEGER"
				"speed_bonus"				"50"
			}
			"04"
			{
				"var_type"					"FIELD_INTEGER"
				"atk_speed_bonus_tooltip"				"50"
			}
			"05"
			{
				"var_type"					"FIELD_FLOAT"
				"speed_duration"			"6"
			}
			"06"
			{
				"var_type"					"FIELD_INTEGER"
				"speed_aoe"					"900"
			}
			"07"
			{
				"var_type"					"FIELD_FLOAT"
				"cooldown_scepter"			"1.0 1.0 1.0"
			}
			"08"
			{
				"var_type"					"FIELD_INTEGER"
				"kill_threshold_scepter"	"300 450 600"
			}
			"09"
			{
				"var_type"					"FIELD_FLOAT"
				"speed_duration_scepter"	"12"
			}
		}
	}
[/quote]
Теперь я понял.
Ох и долго буду я заменять ID на BaseClass. :(
Cпасибо всем кто помогал.
 
Последнее редактирование модератором:

Se7eN

Друзья CG
22 Ноя 2014
331
16
почему это долго?

скачай notepad++ или sublime
и найди функцию Заменить строки
замени все ненужные слова на нужные
можно даже все ненужные слова просто вырезать сделав, например, замену строчки "ID" на пустую
 
Последнее редактирование модератором:
Реклама: