Решено Как сделать абилку которая появляется с покупкой аганима?

relt

Новичок
20 Мар 2020
5
0
Проект
History of the Swamp (H.o.t.S.)
Как сделать абилку которая появляется с покупкой аганима?
 

SniperX

Друзья CG
26 Фев 2018
539
100
Проект
Dota 2x4
Можешь дать пример использования где скилл появляется с покупкой
C++:
"ability_scepter"
{
    "BaseClass"            "ability_datadriven"
    "AbilityBehavior"    "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" // Через луашку сделай чтобы сразу была прокачана
    "Modifiers"
    {
        "modifier_scepter_1"
        {
            "Passive"        "1"
            "IsHidden"        "1"
            "Attributes"    "MODIFIER_ATTRIBUTE_PERMANENT"
            "ThinkInterval"    "0.03"
            "OnIntervalThink"
            {
                "RunScript"
                {
                    "ScriptFile"        "lib.lua"
                    "Function"            "Scepter"
                    "oldability"        "ability_scepter" // Старая абилка
                    "newability"        "ability_scepter_upgraded" // Новая абилка
                    "oldmodifier"        "modifier_scepter_1" // Модифаер для получения абилки
                }
            }
        }
    }
}

C++:
"ability_scepter_upgraded"
{
    "BaseClass"            "ability_datadriven"
    "AbilityBehavior"    "DOTA_ABILITY_BEHAVIOR_PASSIVE"
    "Modifiers"
    {
        "modifier_scepter_2" // Чтобы после продажи аганима забиралась абилка
        {
            "Passive"        "1"
            "IsHidden"        "1"
            "Attributes"    "MODIFIER_ATTRIBUTE_PERMANENT"
            "ThinkInterval"    "0.03"
            "OnIntervalThink"
            {
                "RunScript"
                {
                    "ScriptFile"        "lib.lua"
                    "Function"            "Scepter2"
                    "oldability"        "ability_scepter_upgraded" // Старая абилка
                    "newability"        "ability_scepter" // Новая абилка
                    "oldmodifier"        "modifier_scepter_2" // Модифаер для забирания абилки
                }
            }
        }
    }
}

Lua:
function Scepter( keys )
    local caster = keys.caster
    local oldability = keys.oldability
    local newability = keys.newability
    local oldmodifier = keys.oldmodifier
    if caster:HasScepter() then
        caster:RemoveAbility(oldability)
        caster:RemoveModifierByName(oldmodifier)
        caster:AddAbility(newability)
        caster:FindAbilityByName(newability):SetLevel(1)
    end
end
function Scepter2( keys )
    local caster = keys.caster
    local oldability = keys.oldability
    local newability = keys.newability
    local oldmodifier = keys.oldmodifier
    if caster:HasScepter() then
    else
        caster:RemoveAbility(oldability)
        caster:RemoveModifierByName(oldmodifier)
        caster:AddAbility(newability)
        caster:FindAbilityByName(newability):SetLevel(1)
    end
end
 

LAPKI

Продвинутый
26 Окт 2018
271
61
C++:
"ability_scepter"
{
    "BaseClass"            "ability_datadriven"
    "AbilityBehavior"    "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" // Через луашку сделай чтобы сразу была прокачана
    "Modifiers"
    {
        "modifier_scepter_1"
        {
            "Passive"        "1"
            "IsHidden"        "1"
            "Attributes"    "MODIFIER_ATTRIBUTE_PERMANENT"
            "ThinkInterval"    "0.03"
            "OnIntervalThink"
            {
                "RunScript"
                {
                    "ScriptFile"        "lib.lua"
                    "Function"            "Scepter"
                    "oldability"        "ability_scepter" // Старая абилка
                    "newability"        "ability_scepter_upgraded" // Новая абилка
                    "oldmodifier"        "modifier_scepter_1" // Модифаер для получения абилки
                }
            }
        }
    }
}

C++:
"ability_scepter_upgraded"
{
    "BaseClass"            "ability_datadriven"
    "AbilityBehavior"    "DOTA_ABILITY_BEHAVIOR_PASSIVE"
    "Modifiers"
    {
        "modifier_scepter_2" // Чтобы после продажи аганима забиралась абилка
        {
            "Passive"        "1"
            "IsHidden"        "1"
            "Attributes"    "MODIFIER_ATTRIBUTE_PERMANENT"
            "ThinkInterval"    "0.03"
            "OnIntervalThink"
            {
                "RunScript"
                {
                    "ScriptFile"        "lib.lua"
                    "Function"            "Scepter2"
                    "oldability"        "ability_scepter_upgraded" // Старая абилка
                    "newability"        "ability_scepter" // Новая абилка
                    "oldmodifier"        "modifier_scepter_2" // Модифаер для забирания абилки
                }
            }
        }
    }
}

Lua:
function Scepter( keys )
    local caster = keys.caster
    local oldability = keys.oldability
    local newability = keys.newability
    local oldmodifier = keys.oldmodifier
    if caster:HasScepter() then
        caster:RemoveAbility(oldability)
        caster:RemoveModifierByName(oldmodifier)
        caster:AddAbility(newability)
        caster:FindAbilityByName(newability):SetLevel(1)
    end
end
function Scepter2( keys )
    local caster = keys.caster
    local oldability = keys.oldability
    local newability = keys.newability
    local oldmodifier = keys.oldmodifier
    if caster:HasScepter() then
    else
        caster:RemoveAbility(oldability)
        caster:RemoveModifierByName(oldmodifier)
        caster:AddAbility(newability)
        caster:FindAbilityByName(newability):SetLevel(1)
    end
end
а почему просто не написать логику абилки на lua и обойтись без модификатора? ведь он не нужен, можно при касте проверять наличие скипетра.
 

SniperX

Друзья CG
26 Фев 2018
539
100
Проект
Dota 2x4
а почему просто не написать логику абилки на lua и обойтись без модификатора? ведь он не нужен, можно при касте проверять наличие скипетра.
Я всегда стараюсь по большей мере в дд делать, мне удобнее так, новичкам тоже удобнее
Но если есть костыли, то в луа эти костыли поправляю
 
Реклама: