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

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

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

Оффлайн TopKun

  • 27
  • Мощь: 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, а в реале он оригинальный из доты. Пробовал менять название, тогда вообще абилка пропадает. Что не так?
« Последнее редактирование: 25-07-2016, 13:25:32 от TopKun »

Оффлайн Adam Smith

  • Друзья CG
  • 466
  • Мощь: 6
  • жрять жри его
Опять я со своими тупыми вопросами подъехал. Проблемс вот в чём: Я пишу кастомную абилку в 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, а в реале он оригинальный из доты. Пробовал менять название, тогда вообще абилка пропадает. Что не так?
Пример кастомной абилки
Код
//=================================================================================================================
// 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
By PG.Freeman

Оффлайн CryDeS

  • Друзья CG
  • 1194
  • Мощь: 11
Правильно пропадает, ведь у нее нету BaseClass'a
Читай
moddota.com/forum...own-documentation

Оффлайн TopKun

  • 27
  • Мощь: 0
  • оп мизантроп
Правильно пропадает, ведь у нее нету BaseClass'a
Читай
moddota.com/forum...own-documentation

Код

"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"

Всё равно не работает, что не так?

Оффлайн Adam Smith

  • Друзья CG
  • 466
  • Мощь: 6
  • жрять жри его
Код
"ability_datadriver"
Такого класса не существует
By PG.Freeman

Оффлайн TopKun

  • 27
  • Мощь: 0
  • оп мизантроп
Код
"ability_datadriver"
Такого класса не существует
Лол, не заметил. Но вот с таким кодом всё равно также
Код

"antimage_blink"
{
"ID" "5004"
                "BaseClass"              "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES"
"AbilityTextureName" "1"


Оффлайн Илья

  • Супермодератор
  • 1892
  • Мощь: 16
Елки палки, если ты хочешь переделать блинк антимага, то тебе в качестве базового класса надо его блинк и указывать. Кроме того, ID можешь удалить - он нужен только на вещах.

Оффлайн CryDeS

  • Друзья CG
  • 1194
  • Мощь: 11
Лол, не заметил. Но вот с таким кодом всё равно также
Прочитай ВСЕ по той ссылке что я скинул, там все подробно для чайников все расписано.

Оффлайн TopKun

  • 27
  • Мощь: 0
  • оп мизантроп
Елки палки, если ты хочешь переделать блинк антимага, то тебе в качестве базового класса надо его блинк и указывать. Кроме того, ID можешь удалить - он нужен только на вещах.
Так что ли или что? Я не понял

Код
"antimage_blink"
{
// General
//-------------------------------------------------------------------------------------------------------------
        "BaseClass"              "antimage_blink"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES"
"AbilityTextureName" "1"

Оффлайн Илья

  • Супермодератор
  • 1892
  • Мощь: 16
Да, так.  Это если ты в npc_abilities_custom.txt работаешь. И не обязательно имя кастомной абилки делать таким же, как оригинал.

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

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

Оффлайн I_GRIN_I

  • Продвинутый
  • 376
  • Мощь: 6
  • Научиться бы скриптить...
Илья, если не правильно указать имя текстурки, будет просто пустой квадрат, но абилка работать должна

Оффлайн TopKun

  • 27
  • Мощь: 0
  • оп мизантроп
Да, так.  Это если ты в npc_abilities_custom.txt работаешь. И не обязательно имя кастомной абилки делать таким же, как оригинал.

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

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



Оффлайн Илья

  • Супермодератор
  • 1892
  • Мощь: 16
Потому что они у тебя называются одинаково и по дефолту берется стандартный. Переименуй свой.

Оффлайн TopKun

  • 27
  • Мощь: 0
  • оп мизантроп
Потому что они у тебя называются одинаково и по дефолту берется стандартный. Переименуй свой.
Переименовал, теперь абилка вообще их худа пропала.

Оффлайн CryDeS

  • Друзья CG
  • 1194
  • Мощь: 11
Переименовал, теперь абилка вообще их худа пропала.

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