Перенос скилла

RRRRRRRRRRR

Пользователь
12 Ноя 2017
38
0
Решил перенести скилл с LiA ,но пишет ошибку
pPMaJ.png
http://uploads.ru/pPMaJ.png
Код:
function StasisStart( event )
    local caster = event.caster
    local ability = event.ability
    local target_point = event.target_points[1]
    local duration = ability:GetSpecialValueFor('duration')
    local stasis = CreateUnitByName('fire_trap_unit', target_point, true, caster, caster, caster:GetTeamNumber())
    stasis:AddNewModifier(stasis, nil, "modifier_kill", {duration = duration})
    ability:ApplyDataDrivenModifier(stasis, stasis, 'modifier_stasis_ward', nil)  
    stasis:EmitSound('Hero_Techies.StasisTrap.Plant')
    ParticleManager:CreateParticle("particles/firelord_fire_trap.vpcf", 1, stasis)
end

function StasisSetup( event )
    local stasis = event.caster
    local ability = event.ability
    stasis:AddNewModifier(stasis, nil, "modifier_invisible", {duration = 1})
    ability:ApplyDataDrivenModifier(stasis, stasis, 'modifier_stasis_ward_trigger', {})
end

function StasisThink( event )
    local stasis = event.caster
    if stasis then
        local ability = event.ability
        stasis:AddNewModifier(stasis, nil, "modifier_invisible", {duration = 1})
        local radius = ability:GetSpecialValueFor('detection_radius')
        local enemies = FindUnitsInRadius(stasis:GetTeamNumber(), stasis:GetAbsOrigin(), nil, radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO, 0, FIND_ANY_ORDER, false)
        for _,enemy in pairs(enemies) do
            if enemy:HasGroundMovementCapability() then
                stasis:RemoveModifierByName('modifier_invisible')
                stasis:RemoveModifierByName('modifier_stasis_ward_trigger')
                Timers:CreateTimer(1, function ()
                    if stasis:IsAlive() then
                        local radius = ability:GetSpecialValueFor('detonation_radius')
                        local enemies = FindUnitsInRadius(stasis:GetTeamNumber(), stasis:GetAbsOrigin(), nil, radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO, 0, FIND_ANY_ORDER, false)
                        local allies = FindUnitsInRadius(stasis:GetTeamNumber(), stasis:GetAbsOrigin(), nil, radius, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO, 0, FIND_ANY_ORDER, false)
                        for _,enemy in pairs(enemies) do
                            local duration = 0
                            if enemy:IsHero() then
                                duration = ability:GetSpecialValueFor('stun_hero_duration')    
                            else
                                duration = ability:GetSpecialValueFor('stun_duration')    
                            end
                            enemy:AddNewModifier(stasis, ability, 'modifier_stunned', {duration = duration})
                        end
                        for _,ally in pairs(allies) do
                            if ally:GetUnitName() == 'fire_trap_unit' then
                                ally:ForceKill(true)
                            end
                        end
                        stasis:EmitSound('Hero_Techies.StasisTrap.Stun')
                        ParticleManager:CreateParticle("particles/firelord_fire_trap_explode_custom.vpcf", 1, stasis)
                        stasis:ForceKill(true)
                    end
                end
                )
                break
            end
        end
    end
end
Что мне делать дальше?:
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Решил перенести скилл с LiA ,но пишет ошибку
pPMaJ.png
http://uploads.ru/pPMaJ.png
Код:
function StasisStart( event )
    local caster = event.caster
    local ability = event.ability
    local target_point = event.target_points[1]
    local duration = ability:GetSpecialValueFor('duration')
    local stasis = CreateUnitByName('fire_trap_unit', target_point, true, caster, caster, caster:GetTeamNumber())
    stasis:AddNewModifier(stasis, nil, "modifier_kill", {duration = duration})
    ability:ApplyDataDrivenModifier(stasis, stasis, 'modifier_stasis_ward', nil) 
    stasis:EmitSound('Hero_Techies.StasisTrap.Plant')
    ParticleManager:CreateParticle("particles/firelord_fire_trap.vpcf", 1, stasis)
end

function StasisSetup( event )
    local stasis = event.caster
    local ability = event.ability
    stasis:AddNewModifier(stasis, nil, "modifier_invisible", {duration = 1})
    ability:ApplyDataDrivenModifier(stasis, stasis, 'modifier_stasis_ward_trigger', {})
end

function StasisThink( event )
    local stasis = event.caster
    if stasis then
        local ability = event.ability
        stasis:AddNewModifier(stasis, nil, "modifier_invisible", {duration = 1})
        local radius = ability:GetSpecialValueFor('detection_radius')
        local enemies = FindUnitsInRadius(stasis:GetTeamNumber(), stasis:GetAbsOrigin(), nil, radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO, 0, FIND_ANY_ORDER, false)
        for _,enemy in pairs(enemies) do
            if enemy:HasGroundMovementCapability() then
                stasis:RemoveModifierByName('modifier_invisible')
                stasis:RemoveModifierByName('modifier_stasis_ward_trigger')
                Timers:CreateTimer(1, function ()
                    if stasis:IsAlive() then
                        local radius = ability:GetSpecialValueFor('detonation_radius')
                        local enemies = FindUnitsInRadius(stasis:GetTeamNumber(), stasis:GetAbsOrigin(), nil, radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO, 0, FIND_ANY_ORDER, false)
                        local allies = FindUnitsInRadius(stasis:GetTeamNumber(), stasis:GetAbsOrigin(), nil, radius, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO, 0, FIND_ANY_ORDER, false)
                        for _,enemy in pairs(enemies) do
                            local duration = 0
                            if enemy:IsHero() then
                                duration = ability:GetSpecialValueFor('stun_hero_duration')   
                            else
                                duration = ability:GetSpecialValueFor('stun_duration')   
                            end
                            enemy:AddNewModifier(stasis, ability, 'modifier_stunned', {duration = duration})
                        end
                        for _,ally in pairs(allies) do
                            if ally:GetUnitName() == 'fire_trap_unit' then
                                ally:ForceKill(true)
                            end
                        end
                        stasis:EmitSound('Hero_Techies.StasisTrap.Stun')
                        ParticleManager:CreateParticle("particles/firelord_fire_trap_explode_custom.vpcf", 1, stasis)
                        stasis:ForceKill(true)
                    end
                end
                )
                break
            end
        end
    end
end
Что мне делать дальше?:
Во первых начать писать код самому, раз не хочешь или не можешь разобраться в чужом
Во вторых у тебя юнита нет с именем fire_trap_unit и он не создается соответственно
 

RRRRRRRRRRR

Пользователь
12 Ноя 2017
38
0
Во первых начать писать код самому, раз не хочешь или не можешь разобраться в чужом
Во вторых у тебя юнита нет с именем fire_trap_unit и он не создается соответственно
Понимаю ,что надо учиться самому ,но зачем мне делать то ,что уже сделали за меня?Этот юнит у меня есть ,он у меня не видит модификатор,вот прошу помочь с этим
Код:
"fire_trap_unit"
{                                       
    // General
    "BaseClass"                    "npc_dota_ward_base_truesight"
    //"Model"                        ""
    "SoundSet"                    ""
    "Level"                        "0"
    "ModelScale"                    "1"
//    "MinimapIcon"                    "minimap_ward_invis"
//    "MinimapIconSize"                "300"

    // Bounds
    //----------------------------------------------------------------
    "BoundsHullName"            "DOTA_HULL_SIZE_SMALL"            // Hull type used for navigation/locomotion.
    "HealthBarOffset"            "140"

    // Movement
    //----------------------------------------------------------------
    "MovementCapabilities"        "DOTA_UNIT_CAP_MOVE_NONE"            // Type of locomotion - ground, air

    // Status
    //----------------------------------------------------------------
    "StatusHealth"                "100"        // Base health.
    "StatusHealthRegen"            "0"            // Health regeneration rate.
    "StatusMana"                "0"            // Base mana.
    "StatusManaRegen"            "0"            // Mana regeneration rate.

    // Team
    //----------------------------------------------------------------
    "TeamName"                    "DOTA_TEAM_GOODGUYS"            // Team name.
    "CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_HERO"
    "CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_HERO"
    "UnitRelationshipClass"        "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_WARD"
    "AttackType"    "pierce"
    "ArmorType"     "unarmored"

    // Vision
    //----------------------------------------------------------------
    "VisionDaytimeRange"        "400"
    "VisionNighttimeRange"        "400"
}
 
20 Дек 2016
892
170
НЕУЖЕЛИ ТАК СЛОЖНО СКОПИРОВАТЬ ТЕКСТ ОШИБКИ ИЗ КОНСОЛИ
Понимаю ,что надо учиться самому ,но зачем мне делать то ,что уже сделали за меня?Этот юнит у меня есть ,он у меня не видит модификатор,вот прошу помочь с этим
Код:
"fire_trap_unit"
{                                      
    // General
    "BaseClass"                    "npc_dota_ward_base_truesight"
    //"Model"                        ""
    "SoundSet"                    ""
    "Level"                        "0"
    "ModelScale"                    "1"
//    "MinimapIcon"                    "minimap_ward_invis"
//    "MinimapIconSize"                "300"

    // Bounds
    //----------------------------------------------------------------
    "BoundsHullName"            "DOTA_HULL_SIZE_SMALL"            // Hull type used for navigation/locomotion.
    "HealthBarOffset"            "140"

    // Movement
    //----------------------------------------------------------------
    "MovementCapabilities"        "DOTA_UNIT_CAP_MOVE_NONE"            // Type of locomotion - ground, air

    // Status
    //----------------------------------------------------------------
    "StatusHealth"                "100"        // Base health.
    "StatusHealthRegen"            "0"            // Health regeneration rate.
    "StatusMana"                "0"            // Base mana.
    "StatusManaRegen"            "0"            // Mana regeneration rate.

    // Team
    //----------------------------------------------------------------
    "TeamName"                    "DOTA_TEAM_GOODGUYS"            // Team name.
    "CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_HERO"
    "CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_HERO"
    "UnitRelationshipClass"        "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_WARD"
    "AttackType"    "pierce"
    "ArmorType"     "unarmored"

    // Vision
    //----------------------------------------------------------------
    "VisionDaytimeRange"        "400"
    "VisionNighttimeRange"        "400"
}

Проблема не в модификаторе, а в юните, как уже написали. Тебе стоит научиться не только кодить, но и читать по-английски, ибо об этом почти прямым текстом написано в ошибке.
Понять, в чем ошибка нельзя, из того, что тут приведено.
Пока могу посоветовать следующее:
1. Приведи код дд-абилки из кв.
2. Убедись, что юнит описан внутри блока, в котором описаны все остальные
2.1. Убедись, что юнит инициализирован. Попробуй создать его посреди игры с помощью команды -createhero ...
3. Подключи modifier_kill, если этого еще не сделал.
4. Убедись, что modifier_kill вообще где-то описан.

зачем мне делать то ,что уже сделали за меня?
За тебя -- не значит для тебя. И даже если ты копируешь что-либо из чужого проекта, тебе стоит разобраться в этом, чтобы в будущем не оказалось, что программист не понимает как работает его код.
 
Реклама: