Ошибка скилла датадрайвен

LigvyRofler

Новичок
15 Сен 2018
9
0
Код:
    "Kachok"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                "ability_datadriven"
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
        "AbilityType"                    "DOTA_ABILITY_TYPE_BASIC"
        "AbilityTextureName"            "Kachok"

        // Special
        //-------------------------------------------------------------------------------------------------------------
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"                        "FIELD_INTEGER"
                "marksmanship_strength_bonus"    "40 60 80 100"
            }
            "02"
            {
                "var_type"                        "FIELD_INTEGER"
                "radius"                        "400"
            }
            // Extra variables
            "03"
            {
                "var_type"                        "FIELD_FLOAT"
                "think_interval"                "0.1"
            }
        }
        
        // Data driven
        //-------------------------------------------------------------------------------------------------------------
        "precache"
        {
            "particle"                            "particles/units/heroes/hero_drow/drow_marksmanship.vpcf"
            "particle"                            "particles/units/heroes/hero_drow/drow_marksmanship_start.vpcf"
        }
        
        "Modifiers"
        {
            "modifier_marksmanship_passive_datadriven"
            {
                "Passive"                        "1"
                "IsHidden"                        "1"
                "IsPurgable"                    "0"
            
                "ThinkInterval"                    "%think_interval"
                "OnIntervalThink"
                {
                    "RunScript"
                    {
                        "ScriptFile"            "heroes/hero_drow_ranger/marksmanship.lua"
                        "Function"                "marksmanship_detection"
                    }
                }
            }
            
            "modifier_marksmanship_effect_datadriven"
            {
                "IsPurgable"                    "0"
                
                "OnCreated"
                {
                    "FireEffect"
                    {
                        "Target"                "CASTER"
                        "EffectName"            "particles/units/heroes/hero_drow/drow_marksmanship_start.vpcf"
                        "EffectAttachType"        "start_at_customorigin"
                        "ControlPointEntities"
                        {
                            "CASTER"            "attach_attack1"
                        }
                    }
                
                    "AttachEffect"
                    {
                        "Target"                "CASTER"
                        "EffectName"            "particles/units/heroes/hero_drow/drow_marksmanship.vpcf"
                        "EffectAttachType"        "follow_origin"
                        "ControlPoints"
                        {
                            "02"                "150 150 150"
                        }
                    }
                }
                
                "Properties"
                {
                    "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS"        "%marksmanship_strength_bonus"
                }
            }
        }
    }
Скилл работает только на 1-м уровне прокачки,то есть если я прокачаю скилл на 2 лвл то ничего не изменится будет как с прокачкой 1-го лвла
 

HappyFeedFriends

Друзья CG
14 Авг 2017
540
32
Проект
Battle Heroes Arena
Код:
    "Kachok"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                "ability_datadriven"
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
        "AbilityType"                    "DOTA_ABILITY_TYPE_BASIC"
        "AbilityTextureName"            "Kachok"

        // Special
        //-------------------------------------------------------------------------------------------------------------
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"                        "FIELD_INTEGER"
                "marksmanship_strength_bonus"    "40 60 80 100"
            }
            "02"
            {
                "var_type"                        "FIELD_INTEGER"
                "radius"                        "400"
            }
            // Extra variables
            "03"
            {
                "var_type"                        "FIELD_FLOAT"
                "think_interval"                "0.1"
            }
        }
        
        // Data driven
        //-------------------------------------------------------------------------------------------------------------
        "precache"
        {
            "particle"                            "particles/units/heroes/hero_drow/drow_marksmanship.vpcf"
            "particle"                            "particles/units/heroes/hero_drow/drow_marksmanship_start.vpcf"
        }
        
        "Modifiers"
        {
            "modifier_marksmanship_passive_datadriven"
            {
                "Passive"                        "1"
                "IsHidden"                        "1"
                "IsPurgable"                    "0"
            
                "ThinkInterval"                    "%think_interval"
                "OnIntervalThink"
                {
                    "RunScript"
                    {
                        "ScriptFile"            "heroes/hero_drow_ranger/marksmanship.lua"
                        "Function"                "marksmanship_detection"
                    }
                }
            }
            
            "modifier_marksmanship_effect_datadriven"
            {
                "IsPurgable"                    "0"
                
                "OnCreated"
                {
                    "FireEffect"
                    {
                        "Target"                "CASTER"
                        "EffectName"            "particles/units/heroes/hero_drow/drow_marksmanship_start.vpcf"
                        "EffectAttachType"        "start_at_customorigin"
                        "ControlPointEntities"
                        {
                            "CASTER"            "attach_attack1"
                        }
                    }
                
                    "AttachEffect"
                    {
                        "Target"                "CASTER"
                        "EffectName"            "particles/units/heroes/hero_drow/drow_marksmanship.vpcf"
                        "EffectAttachType"        "follow_origin"
                        "ControlPoints"
                        {
                            "02"                "150 150 150"
                        }
                    }
                }
                
                "Properties"
                {
                    "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS"        "%marksmanship_strength_bonus"
                }
            }
        }
    }
Скилл работает только на 1-м уровне прокачки,то есть если я прокачаю скилл на 2 лвл то ничего не изменится будет как с прокачкой 1-го лвла
Жду скрипт
 

LigvyRofler

Новичок
15 Сен 2018
9
0
Код:
--[[
    Author: kritth
    Date: 1.1.2015.
    Check number of units every interval
    Note: Might be possible to do entirely in datadriven, however, I seem to crash everytime I tried
    to do so, insteads, I just use simple script
]]
function marksmanship_detection( keys )
    local caster = keys.caster
    local ability = keys.ability
    local radius = ability:GetLevelSpecialValueFor( "radius", ( ability:GetLevel() - 1 ) )
    local modifierName = "modifier_marksmanship_effect_datadriven"
    
    -- Count units in radius
    local units = FindUnitsInRadius( caster:GetTeamNumber(), caster:GetAbsOrigin(), caster, radius,
            DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO, 0, 0, false )
    local count = 0
    for k, v in pairs( units ) do
        count = count + 1
    end
    
    -- Apply and destroy
    if count == 0 and not caster:HasModifier( modifierName ) then
        ability:ApplyDataDrivenModifier( caster, caster, modifierName, {} )
    elseif count ~= 0 and caster:HasModifier( modifierName ) then
        caster:RemoveModifierByName( modifierName )
    end
end
этот?
 
Реклама: