Подскажите как сделать чтобы направленный скилл отбивался линкой в датадрайвене?

mahlaiv

Пользователь
2 Ноя 2019
11
0
Подскажите как сделать чтобы направленный скилл отбивался линкой в датадрайвене? Очень нужно
 

SniperX

Друзья CG
26 Фев 2018
539
100
Проект
Dota 2x4
Можно сделать, делай проверку на этот модифаер modifier_item_sphere
И на этот модифаер modifier_item_sphere_target
Если он есть на враге, то ничего не происходит, если есть, то делает функцию
Lua:
function SphereCheck( keys )
    local caster = keys.caster
    local target = keys.target
    local ability = keys.ability
    local duration = ability:GetLevelSpecialValueFor("duration", (ability:GetLevel()) - 1)
    if target:HasModifier("modifier_item_sphere") then
        if target:HasModifier("modifier_item_sphere_target") then
            ability:ApplyDataDrivenModifier(caster, target, "modifier_my_ability_hex", {duration = duration})
        end
    else        
        target:RemoveModifierByName("modifier_sphere")
        target:RemoveModifierByName("modifier_sphere_target")
    end
end
[/CODE]
 
Последнее редактирование:

mahlaiv

Пользователь
2 Ноя 2019
11
0
Можно сделать, делай проверку на этот модифаер modifier_item_sphere
И на этот модифаер modifier_item_sphere_target
Если он есть на враге, то ничего не происходит, если есть, то делает функцию
Lua:
function SphereCheck( keys )
    local target = keys.target
    local ability = keys.ability
    local duration = ability:GetLevelSpecialValueFor("duration", (ability:GetLevel()) - 1)
    if target:HasModifier("modifier_item_sphere") then
        if target:HasModifier("modifier_item_sphere_target") then
            ability:ApplyDataDrivenModifier(caster, target, "modifier_my_ability_hex", {duration = duration})
            target:RemoveModifierByName("modifier_sphere")
            target:RemoveModifierByName("modifier_sphere_target")
        end
    end
end
[/CODE]
Но это же в луа, а мне нужно в датадрайвене(
 

SniperX

Друзья CG
26 Фев 2018
539
100
Проект
Dota 2x4
Но это же в луа, а мне нужно в датадрайвене(
C++:
    "stun_and_damage"
    {
        "BaseClass"                     "ability_datadriven"
        "AbilityBehavior"                 "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
        "AbilityUnitTargetTeam"            "DOTA_UNIT_TARGET_TEAM_ENEMY"
        "AbilityUnitTargetType"            "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
        "SpellImmunityType"                "SPELL_IMMUNITY_ENEMIES_NO"
        "SpellDispellableType"            "SPELL_DISPELLABLE_YES"
        "AbilityUnitDamageType"            "DAMAGE_TYPE_MAGICAL"
        "AbilityCooldown"                "16 15 14 13"
        "AbilityTextureName"            "lina_laguna_blade"
        "AbilityDamage"                    "8000"
        "AbilityManaCost"                "25 50 75 100"
        "AbilityCastPoint"                "0.3"
        "AbilityCastRange"                "1600"
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"            "FIELD_INTEGER"
                "damage"            "8000"
            }
            "02"
            {
                "var_type"            "FIELD_FLOAT"
                "duration"            "5 6 7 8"
            }
        }
        "OnSpellStart"
        {
            "RunScript"
            {
                "ScriptFile"        "linked_sphere_check.lua"
                "Function"            "SphereCheck"
                "modifier"            "modifier_stun_and_damage_check"
            }
        }
        "Modifiers"
        {
            "modifier_stun_and_damage_check"
            {
                "Duration"        "0.1"
                "IsHidden"        "1"
                "OnCreated" // После OnCreated всё что надо можешь делать, в этом случае, если линки нету, то
                {
                    "Damage"
                    {
                        "Target"        "TARGET"
                        "Type"            "DAMAGE_TYPE_MAGICAL"
                        "Damage"        "%damage"
                    }
                    "Stun"
                    {
                        "Target"        "TARGET"
                        "Duration"        "%duration"
                    }
                }
            }
        }
    }
Lua:
function SphereCheck( keys )
    if keys.target:HasModifier("modifier_item_sphere") then
        if keys.target:HasModifier("modifier_item_sphere_target") then
            keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, keys.modifier, {duration = 1})
        end
    else
        keys.target:RemoveModifierByName("modifier_sphere")
        keys.target:RemoveModifierByName("modifier_sphere_target")
    end
end
 
Реклама: