CustomGames.ru - Dota 2 пользовательские игры

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

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн danilkoo832832

  • 11
  • Мощь: 0
Эмм, про аганим тебе уже говорили - не выйдет сделать абилку, которая изначально аганим не поддерживала, аганимоподдерживаемой. Для этого надо умения с нуля писать или хитрить. 
Даже если делать без аганима, то у акса отсутствует данная абилка.
Насчет войда: убери эту штуку
Код
"AbilityLayout"		"5"
И попробуй снова.
Без неё скиллы отображаться правильно не будут. проблема останется и будет их 2.)

Оффлайн Илья

  • Супермодератор
  • 2142
  • Мощь: 21
Что-то ты явно не так делаешь. Без "AbilityLayout" все верно отображается, если умений всего 4 у персонажа. Войд один из таких.

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

Оффлайн danilkoo832832

  • 11
  • Мощь: 0
Полностью файлы скидывать не вижу смысла
Код войда
Спойлер
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 yadi.sk/i/R-s45YV8oSAdZ
npc_heroes_custom yadi.sk/i/W2mBIeT3oSAdP

Оффлайн CryDeS

  • Друзья CG
  • 1213
  • Мощь: 12
Что-то ты явно не так делаешь. Без "AbilityLayout" все верно отображается, если умений всего 4 у персонажа. Войд один из таких.

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

Оффлайн Илья

  • Супермодератор
  • 2142
  • Мощь: 21
Ну понятно, в чем проблема.


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


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



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

npc_heroes_custom.txt
Код
"npc_dota_hero_axe"
{
"override_hero" "npc_dota_hero_axe" // Hero to override
"Ability4" "axe_culling_blade_custom" // Ability 4
}
[свернуть]

npc_abilities_custom
Код
	"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"
}
}
}
[свернуть]

Оффлайн Илья

  • Супермодератор
  • 2142
  • Мощь: 21
Он поставил войду 5 умений, так что норм

Ну, так а ты видишь, что он творит с абилками?

Оффлайн Илья

  • Супермодератор
  • 2142
  • Мощь: 21
Вот тебе пример работы с AbilityLayout:

npc_heroes_custom.txt
Код
"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"
}

[свернуть]


npc_abilities_custom.txt
Код
	"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

  • 11
  • Мощь: 0
Ну понятно, в чем проблема.


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


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



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

npc_heroes_custom.txt
Код
"npc_dota_hero_axe"
{
"override_hero" "npc_dota_hero_axe" // Hero to override
"Ability4" "axe_culling_blade_custom" // Ability 4
}
[свернуть]

npc_abilities_custom
Код
	"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"
}
}
}
[свернуть]
Теперь я понял.
Ох и долго буду я заменять ID на BaseClass. :(
Cпасибо всем кто помогал.

Оффлайн Se7eN

  • Продвинутый
  • 298
  • Мощь: 11
  • King
почему это долго?

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

Оффлайн TopKun

  • 44
  • Мощь: 0
  • оп мизантроп


 "AbilityCastPoint"                              "0.0 0.0 0.0 0.0"  // Что-то из того, чего я не знаю


АбилитиКастПоинт время анимации каста, не?
« Последнее редактирование: 22-07-2016, 21:02:47 от TopKun »

Оффлайн I_GRIN_I

  • Продвинутый
  • 636
  • Мощь: 11
  • Научиться бы скриптить...

Оффлайн Qweik

  • 54
  • Мощь: 0
  • ▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬
Скажите возможно добавить в Fissure эффект отбрасывания врагов в верх и в сторону? Побывал бурда какая то получалась :D


Код
// General
//-------------------------------------------------------------------------------------------------------------
        "AbilityName" "my_earthshaker_fissure"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
"AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL"
                "BaseClass" "earthshaker_fissure"
"precache"
{
"soundfile" "soundevents/game_sounds_heroes/game_sounds_earthshaker.vsndevts"
}

// Casting
//-------------------------------------------------------------------------------------------------------------
"AbilityCastRange" "1000 1200 1400 1800"
"AbilityCastPoint" "0.69 0.69 0.69 0.69"

// Time
//-------------------------------------------------------------------------------------------------------------
"AbilityCooldown" "1.0 1.0 1.0 1.0"
"AbilityDuration" "1.0 1.25 1.5 1.75"

// Damage.
//-------------------------------------------------------------------------------------------------------------
"AbilityDamage" "125 175 225 275"

// Cost
//-------------------------------------------------------------------------------------------------------------
"AbilityManaCost" "1 4 5 7"

// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_FLOAT"
"fissure_duration" "2.0 23"
}
"02"
{
"var_type" "FIELD_INTEGER"
"fissure_radius" "225"
}
"03"
{
"var_type" "FIELD_FLOAT"
"stun_duration" "1.0 1.25 1.5 1.75"
}
}
}
« Последнее редактирование: 04-12-2016, 13:23:11 от Qweik »

Оффлайн Илья

  • Супермодератор
  • 2142
  • Мощь: 21
Реализовав свою через lua.