Не отображается партикл и проджектайл атаки после добавления спелла

WoooSub

Новичок
8 Фев 2018
2
0
Решил я прикрутить дровке спелл ( в данном случае сплитшот медузы )
я зашел протестить, когда я атаковал юнита партикл и проджектайл атаки не показывался (спелл еще не вкачан) Когда я вкачивал и включал сплитшот то партикл выстрела и проджектайл стрелы летели только в дополнительные цели, но не в основную ( на которую райткликал )
Сам сплитшот исправно работает я хз почему так

Сам код сплитшота
Код:
"medusa_split_shot_datadriven"
{
    // General
    //-------------------------------------------------------------------------------------------------------------
    "BaseClass"                        "ability_datadriven"
    "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IMMEDIATE"
    "AbilityUnitTargetTeam"            "DOTA_UNIT_TARGET_TEAM_ENEMY"
    "AbilityUnitTargetType"            "DOTA_UNIT_TARGET_ALL"
    "AbilityUnitTargetFlag"            "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
    "AbilityUnitDamageType"            "DAMAGE_TYPE_PHYSICAL"
    "SpellImmunityType"                "SPELL_IMMUNITY_ENEMIES_YES"
    "AbilityTextureName"            "medusa_split_shot"

    // Precache
    //-------------------------------------------------------------------------------------------------------------
    "precache"
    {
        "soundfile"            "soundevents/game_sounds_heroes/game_sounds_medusa.vsndevts"
        "particle"            "particles/econ/items/puck/puck_alliance_set/puck_dreamcoil_start_d_aproset.vpcf"
        "particle"            "particles/units/heroes/hero_drow/drow_base_attack.vpcf"
    }
    
    // Casting
    //-------------------------------------------------------------------------------------------------------------
    "AbilityCastPoint"                "0.4 0.4 0.4 0.4"

    // Special
    //-------------------------------------------------------------------------------------------------------------
    "AbilitySpecial"
    {
        "01"
        {
            "var_type"                "FIELD_INTEGER"
            "damage_modifier"        "-20"
        }
        "02"
        {
            "var_type"                        "FIELD_INTEGER"
            "damage_modifier_tooltip"        "80"
        }
        "03"
        {   
            "var_type"                    "FIELD_INTEGER"
            "arrow_count"                "1 2 3 4"
        }
        "04"
        {   
            "var_type"                    "FIELD_INTEGER"
            "total_arrow_count"                "2 3 4 5"
        }
        "05"
        {
            "var_type"                "FIELD_INTEGER"
            "range"                    "700"
        }
        "06"
        {
            "var_type"                "FIELD_INTEGER"
            "projectile_speed"        "1200"
        }
    }

    "OnToggleOn"
    {
        "FireEffect"
        {
            "EffectName"        "particles/econ/items/puck/puck_alliance_set/puck_dreamcoil_start_d_aproset.vpcf"
            "EffectAttachType"  "follow_origin"
            "Target"            "CASTER"
        }

        "ApplyModifier"
        {
            "ModifierName"    "modifier_split_shot_datadriven"
            "Target"         "CASTER"
        }
    }

    "OnToggleOff"
    {
        "FireEffect"
        {
            "EffectName"        "particles/econ/items/puck/puck_alliance_set/puck_dreamcoil_start_d_aproset.vpcf"
            "EffectAttachType"  "follow_origin"
            "Target"            "CASTER"
        }

        "RemoveModifier"
        {
            "ModifierName"    "modifier_split_shot_datadriven"
            "Target"
            {
                "Center"    "CASTER"
                "Flags"     "DOTA_UNIT_TARGET_FLAG_DEAD"
            }
        }
    }

    "OnProjectileHitUnit"
    {
        "DeleteOnHit"    "1"
        
        "FireSound"
        {
            "EffectName"    "Hero_Medusa.AttackSplit"
            "Target"         "TARGET"
        }

        "RunScript"
        {
            "ScriptFile"    "heroes/hero_medusa/split_shot.lua"
            "Function"        "SplitShotDamage"
        }
    }

    "Modifiers"
    {
        "modifier_split_shot_datadriven"
        {
            "Passive"            "0"
            "IsHidden"            "1"
            "IsDebuff"            "0"
    
            "OnAttack"
            {
                "RunScript"
                {
                    "ScriptFile"    "heroes/hero_medusa/split_shot.lua"
                    "Function"        "SplitShotLaunch"
                    "split_shot_projectile"    "particles/units/heroes/hero_drow/drow_base_attack.vpcf"
                }
            }

            "Properties"
            {
                "MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE" "%damage_modifier"
            }
        }
    }
}




Lua:
--[[Author: Pizzalol
    Date: 04.03.2015.
    Creates additional attack projectiles for units within the specified radius around the caster]]
function SplitShotLaunch( keys )
    local caster = keys.caster
    local caster_location = caster:GetAbsOrigin()
    local ability = keys.ability
    local ability_level = ability:GetLevel() - 1

    -- Targeting variables
    local target_type = ability:GetAbilityTargetType()
    local target_team = ability:GetAbilityTargetTeam()
    local target_flags = ability:GetAbilityTargetFlags()
    local attack_target = caster:GetAttackTarget()

    -- Ability variables
    local radius = ability:GetLevelSpecialValueFor("range", ability_level)
    local max_targets = ability:GetLevelSpecialValueFor("arrow_count", ability_level)
    local projectile_speed = ability:GetLevelSpecialValueFor("projectile_speed", ability_level)
    local split_shot_projectile = keys.split_shot_projectile

    local split_shot_targets = FindUnitsInRadius(caster:GetTeam(), caster_location, nil, radius, target_team, target_type, target_flags, FIND_CLOSEST, false)

    -- Create projectiles for units that are not the casters current attack target
    for _,v in pairs(split_shot_targets) do
        if v ~= attack_target then
            local projectile_info =
            {
                EffectName = split_shot_projectile,
                Ability = ability,
                vSpawnOrigin = caster_location,
                Target = v,
                Source = caster,
                bHasFrontalCone = false,
                iMoveSpeed = projectile_speed,
                bReplaceExisting = false,
                bProvidesVision = false
            }
            ProjectileManager:CreateTrackingProjectile(projectile_info)
            max_targets = max_targets - 1
        end
        -- If we reached the maximum amount of targets then break the loop
        if max_targets == 0 then break end
    end
end

-- Apply the auto attack damage to the hit unit
function SplitShotDamage( keys )
    local caster = keys.caster
    local target = keys.target
    local ability = keys.ability

    local damage_table = {}

    damage_table.attacker = caster
    damage_table.victim = target
    damage_table.damage_type = ability:GetAbilityDamageType()
    damage_table.damage = caster:GetAttackDamage()

    ApplyDamage(damage_table)
end
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Код:
if v ~= attack_target then

А так вообще: в оригинале разве какая-то специальная анимация стрелы летит в основную цель? Вроде как обычная, а в соседние уже добавленные.
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Ты видимо, не понял, что я тебе написал:

Код:
if v ~= attack_target then
- здесь ты задаешь, чтобы на цель атаки не применялся партикль.

А так же я тебе сказал, что возможно партикль и не нужен для цели атаки.

Вангую, что ничего не поймешь и из этого, поэтому иди читай:
https://customgames.ru/forum/threads/Программирование-для-чайников.616/
 
  • Нравится
Реакции: -ExotiC-

HappyFeedFriends

Друзья CG
14 Авг 2017
540
32
Проект
Battle Heroes Arena
Ты поменял партикль спэлла,а партикль атаки героя остался прежний,вроде через "orb" можно к модификаторы приписать партикль для атаки. Понятней?
 
Реклама: