Кастомные абилки не хотят ставиться

  • Автор темы Автор темы TopKun
  • Дата начала Дата начала

TopKun

Пользователь
22 Июл 2016
46
0
Опять я со своими тупыми вопросами подъехал. Проблемс вот в чём: Я пишу кастомную абилку в npc_abilities_custom

Код:
"DOTAAbilities"
{
	"antimage_blink"
	{
		"ID"					"5004"														
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES"

		
		"AbilityCastPoint"				"0.2"

		
		"AbilityCooldown"				"7"
		
		
		"AbilityManaCost"				"50"
		
		
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"blink_range"			"500"
			}
			
		}
	}

И вставляю в кастомного героя в npc_heroes_custom

Код:
"DOTAHeroes"
{
 "npc_dota_hero_ancient_apparition_barebones"
 {
  "AbilityLayout"   "6"
  "override_hero"   "npc_dota_hero_antimage"
  "SoundSet"     "0" 
  "Ability1"    "antimage_blink" 
  "Ability2"    "barebones_empty4" 
  "Ability3"    "barebones_empty4"
  "Ability4"    "barebones_empty4"
	"Ability5"    ""

  "ArmorPhysical"    "0"         
  "MagicalResistance"    "0"        

  "AttackCapabilities"  "DOTA_UNIT_CAP_NO_ATTACK"
  "AttackDamageMin"   "1"          
  "AttackDamageMax"   "1"          

  
  "AttributeBaseStrength"  "0"          
  "AttributeStrengthGain"  "0"          
  "AttributeBaseIntelligence" "0"          
  "AttributeIntelligenceGain" "0"          
  "AttributeBaseAgility"  "0"         
  "AttributeAgilityGain"  "0"          

  "BountyXP"     "0"         
  "BountyGoldMin"    "0"          
  "BountyGoldMax"    "0"          

  //"BoundsHullName"   "DOTA_HULL_SIZE_HERO"
  //"RingRadius"    "70"

  "MovementCapabilities"  "DOTA_UNIT_CAP_MOVE_GROUND"
  "MovementSpeed"    "360"         
  "MovementTurnRate"   "1.0"         

  "StatusHealth"    "5"         
  "StatusHealthRegen"   "0.0"        
  "StatusMana"    "300"         
  "StatusManaRegen"   "0"         

  "VisionDaytimeRange"  "1000"         
  "VisionNighttimeRange"  "600"         
 }

Абилка-то меняется, но не кастомная, а из обычной доты. То есть я указал, к примеру, рендж прыжка 5000, а в реале он оригинальный из доты. Пробовал менять название, тогда вообще абилка пропадает. Что не так?
 
Последнее редактирование модератором:
[quote author=TopKun link=topic=1003.msg5424#msg5424 date=1469452970]
Опять я со своими тупыми вопросами подъехал. Проблемс вот в чём: Я пишу кастомную абилку в npc_abilities_custom

Код:
"DOTAAbilities"
{
	"antimage_blink"
	{
		"ID"					"5004"														
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES"

		
		"AbilityCastPoint"				"0.2"

		
		"AbilityCooldown"				"7"
		
		
		"AbilityManaCost"				"50"
		
		
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"blink_range"			"500"
			}
			
		}
	}

И вставляю в кастомного героя в npc_heroes_custom

Код:
"DOTAHeroes"
{
 "npc_dota_hero_ancient_apparition_barebones"
 {
  "AbilityLayout"   "6"
  "override_hero"   "npc_dota_hero_antimage"
  "SoundSet"     "0" 
  "Ability1"    "antimage_blink" 
  "Ability2"    "barebones_empty4" 
  "Ability3"    "barebones_empty4"
  "Ability4"    "barebones_empty4"
	"Ability5"    ""

  "ArmorPhysical"    "0"         
  "MagicalResistance"    "0"        

  "AttackCapabilities"  "DOTA_UNIT_CAP_NO_ATTACK"
  "AttackDamageMin"   "1"          
  "AttackDamageMax"   "1"          

  
  "AttributeBaseStrength"  "0"          
  "AttributeStrengthGain"  "0"          
  "AttributeBaseIntelligence" "0"          
  "AttributeIntelligenceGain" "0"          
  "AttributeBaseAgility"  "0"         
  "AttributeAgilityGain"  "0"          

  "BountyXP"     "0"         
  "BountyGoldMin"    "0"          
  "BountyGoldMax"    "0"          

  //"BoundsHullName"   "DOTA_HULL_SIZE_HERO"
  //"RingRadius"    "70"

  "MovementCapabilities"  "DOTA_UNIT_CAP_MOVE_GROUND"
  "MovementSpeed"    "360"         
  "MovementTurnRate"   "1.0"         

  "StatusHealth"    "5"         
  "StatusHealthRegen"   "0.0"        
  "StatusMana"    "300"         
  "StatusManaRegen"   "0"         

  "VisionDaytimeRange"  "1000"         
  "VisionNighttimeRange"  "600"         
 }

Абилка-то меняется, но не кастомная, а из обычной доты. То есть я указал, к примеру, рендж прыжка 5000, а в реале он оригинальный из доты. Пробовал менять название, тогда вообще абилка пропадает. Что не так?
[/quote]
Пример кастомной абилки
Код:
//=================================================================================================================
	// Ability: Odin's Sacred Purge
	//=================================================================================================================
	"odin_sacred_purge"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"							"7536"
		"BaseClass"						"ability_lua"
		"ScriptFile"					"heroes/hero_odin/odin_sacred_purge.lua"
		"AbilityTextureName"			"odin_sacred_purge"		
		"AbilityType"					"DOTA_ABILITY_TYPE_ULTIMATE"
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE"
		"AbilityUnitDamageType"			"DAMAGE_TYPE_HP_REMOVAL"	
		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_YES"
		"FightRecapLevel"				"1"
		"AOERadius"						"425 525 625"
		

		// Casting
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"700"
		"AbilityCastPoint"				"0.3 0.3 0.3"
		
		// Time		
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCooldown"				"70 60 50"
		
		// Damage.
		//-------------------------------------------------------------------------------------------------------------
		"AbilityDamage"					"340 570 870"

		// Cost
		//-------------------------------------------------------------------------------------------------------------
		"AbilityManaCost"				"100 120 140"
		
		// Special
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"			"FIELD_INTEGER"
				"radius"			"425 525 625"
			}
			"02"
			{
				"var_type"			"FIELD_FLOAT"
				"stun_duration"		"3.5 4 4.5"
			}
			"03"
			{
				"var_type"			"FIELD_INTEGER"
				"heal"				"350 550 750"
			}
			"04"
			{
				"var_type"			"FIELD_FLOAT"
				"bonus_armor"		"50 70 110"
			}
		}
	}

Код:
odin_sacred_purge = class({})
LinkLuaModifier( "modifier_odin_sacred_purge", "heroes/hero_odin/odin_sacred_purge.lua", LUA_MODIFIER_MOTION_NONE)

function odin_sacred_purge:GetAOERadius()
	return self:GetSpecialValueFor("radius")
end

function odin_sacred_purge:OnSpellStart( )
  local caster = self:GetCaster()
  local point = self:GetCaster():GetCursorPosition()

  local nearby_units = FindUnitsInRadius(caster:GetTeam(), point, nil, self:GetSpecialValueFor("radius"), DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC, DOTA_UNIT_TARGET_FLAG_INVULNERABLE + DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES, FIND_ANY_ORDER, false)
		
  for i, target in ipairs(nearby_units) do 
    EmitSoundOn( "Hero_Omniknight.Purification.Wingfall", target )
    local nFXIndex = ParticleManager:CreateParticle( "particles/odin/sacred_purge.vpcf", PATTACH_WORLDORIGIN, target )
    ParticleManager:SetParticleControl( nFXIndex, 0, target:GetAbsOrigin() )
    ParticleManager:SetParticleControl( nFXIndex, 1, Vector( 100, 1, 1 ) )
    ParticleManager:SetParticleControl( nFXIndex, 2, target:GetAbsOrigin() )
    ParticleManager:SetParticleControl( nFXIndex, 3, target:GetAbsOrigin() )
    ParticleManager:SetParticleControl( nFXIndex, 4, target:GetAbsOrigin() )
    ParticleManager:SetParticleControl( nFXIndex, 5, target:GetAbsOrigin() )
    ParticleManager:ReleaseParticleIndex( nFXIndex )
    -- Play named sound on Entity
    target:Purge( false, true, false, true, false )
    if target:GetTeamNumber( ) ~= caster:GetTeamNumber() then
      ApplyDamage({victim = target, attacker = caster, ability = self, damage = self:GetAbilityDamage(), damage_type = DAMAGE_TYPE_PURE})
      target:AddNewModifier(caster, self, "modifier_stunned", {duration = self:GetSpecialValueFor("stun_duration")}) 
    else
      target:Heal( self:GetAbilityDamage(), caster )
      target:AddNewModifier(caster, self, "modifier_odin_sacred_purge", {duration = self:GetSpecialValueFor("stun_duration")}) 
    end
  end
end

if modifier_odin_sacred_purge == nil then
  modifier_odin_sacred_purge = class ( {})
end

function modifier_odin_sacred_purge:IsPurgable()
	return false
end

--------------------------------------------------------------------------------

function modifier_odin_sacred_purge:GetStatusEffectName()
	return "particles/status_fx/status_effect_gods_strength.vpcf"
end

--------------------------------------------------------------------------------

function modifier_odin_sacred_purge:StatusEffectPriority()
	return 1000
end

--------------------------------------------------------------------------------

function modifier_odin_sacred_purge:GetHeroEffectName()
	return "particles/units/heroes/hero_sven/sven_gods_strength_hero_effect.vpcf"
end

--------------------------------------------------------------------------------

function modifier_odin_sacred_purge:HeroEffectPriority()
	return 100
end

function modifier_odin_sacred_purge:DeclareFunctions () --we want to use these functions in this item
  local funcs = {
    MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS
  }

  return funcs
end

function modifier_odin_sacred_purge:GetModifierPhysicalArmorBonus (params)
  local hAbility = self:GetAbility ()
  return hAbility:GetSpecialValueFor ("bonus_armor")
end

function modifier_odin_sacred_purge:OnCreated( table )
  if IsServer() then
		local nFXIndex = ParticleManager:CreateParticle( "particles/units/heroes/hero_sven/sven_spell_gods_strength_ambient.vpcf", PATTACH_ABSORIGIN_FOLLOW, self:GetParent() )
		ParticleManager:SetParticleControlEnt( nFXIndex, 0, self:GetParent(), PATTACH_POINT_FOLLOW, "attach_weapon" , self:GetParent():GetOrigin(), true )
		ParticleManager:SetParticleControlEnt( nFXIndex, 2, self:GetParent(), PATTACH_POINT_FOLLOW, "attach_head" , self:GetParent():GetOrigin(), true )
		self:AddParticle( nFXIndex, false, false, -1, false, true )
	end
end
 
Последнее редактирование модератором:
[quote author=CryDeS link=topic=1003.msg5426#msg5426 date=1469457158]
Правильно пропадает, ведь у нее нету BaseClass'a
Читай
http://moddota.com/forums/discussion/14/datadriven-ability-breakdown-documentation
[/quote]

Код:
"antimage_blink"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"ID"					"5004"														// 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_ROOT_DISABLES"
		"BaseClass"     "ability_datadriver"
		"AbilityTextureName" "jopa"
Всё равно не работает, что не так?
 
Последнее редактирование модератором:
Код:
"ability_datadriver"
Такого класса не существует
 
Последнее редактирование модератором:
[quote author=Adam Smith link=topic=1003.msg5429#msg5429 date=1469460782]
Код:
"ability_datadriver"
Такого класса не существует
[/quote]
Лол, не заметил. Но вот с таким кодом всё равно также
Код:
"antimage_blink"
	{
		"ID"					"5004"		
        "BaseClass"       "ability_datadriven"		
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES"
		"AbilityTextureName" "1"
 
Последнее редактирование модератором:
Елки палки, если ты хочешь переделать блинк антимага, то тебе в качестве базового класса надо его блинк и указывать. Кроме того, ID можешь удалить - он нужен только на вещах.
 
Елки палки, если ты хочешь переделать блинк антимага, то тебе в качестве базового класса надо его блинк и указывать. Кроме того, ID можешь удалить - он нужен только на вещах.
Так что ли или что? Я не понял

Код:
"antimage_blink"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------	
    "BaseClass"       "antimage_blink"		
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES"
		"AbilityTextureName" "1"
 
Последнее редактирование модератором:
Да, так. Это если ты в npc_abilities_custom.txt работаешь. И не обязательно имя кастомной абилки делать таким же, как оригинал.

Еще можно через npc_abilities_override.txt. Отличаются эти два файла тем, что в последнем ты преобразуешь существующие абилки, то есть в твоем случае именно антимаговский блинк изменится. А в первом ты создаешь дубликат его блинка и, как ты уже знаешь, этот дубликат надо еще дать герою в npc_heroes_custom.txt.

И скорее всего твоя абилка работать не будет, так как в качестве "AbilityTextureName" надо указывать существующее в соответствующей папке ресурсов изображение, либо имя любой другой оригинальной абилки (т.к. имена их изображений совпадают с именем самой абилки). А у тебя стоит "1" и я сомневаюсь, что так ты назвал картинку png.
 
Последнее редактирование модератором:
Илья, если не правильно указать имя текстурки, будет просто пустой квадрат, но абилка работать должна
 
Да, так. Это если ты в npc_abilities_custom.txt работаешь. И не обязательно имя кастомной абилки делать таким же, как оригинал.

Еще можно через npc_abilities_override.txt. Отличаются эти два файла тем, что в последнем ты преобразуешь существующие абилки, то есть в твоем случае именно антимаговский блинк изменится. А в первом ты создаешь дубликат его блинка и, как ты уже знаешь, этот дубликат надо еще дать герою в npc_heroes_custom.txt.

И скорее всего твоя абилка работать не будет, так как в качестве "AbilityTextureName" надо указывать существующее в соответствующей папке ресурсов изображение, либо имя любой другой оригинальной абилки (т.к. имена их изображений совпадают с именем самой абилки). А у тебя стоит "1" и я сомневаюсь, что так ты назвал картинку png.
Я так и назвал. Картинка 128х128 PNG в папке Flash3. И с оригинальным и с изменённым названием всё равно остаётся оригинальный блинк, а не тот, что я написал.


 
Последнее редактирование модератором:
Потому что они у тебя называются одинаково и по дефолту берется стандартный. Переименуй свой.
 
Последнее редактирование модератором:
[quote author=TopKun link=topic=1003.msg5444#msg5444 date=1469529923]
Переименовал, теперь абилка вообще их худа пропала.

[/quote]
ИДИ И ЧИТАЙ ТО ЧТО Я СКИНУЛ С МОДДОТЫ БЛДЖДЖ, НУ ЧЕГО ТЫ.
Там все написано по полочкам, с примерами и объяснением что и куда пихать. А ты допускаешь глупейшие ошибки о которых там написано в первых трех абзацах!
 
Парень, действительно, иди почитай гайды сначала. Вопросы неимоверно банальные и простые. На них просто лень отвечать. И у нас на форуме много гайдов на этот счет и на англоязычных ресурсах просто красота, какие гайды.

Откуда мы знаем, куда делись твои абилки, если ты не выкладываешь измененный код, да и допускаешь синтаксические в нем ошибки?
 
Реклама: