Создание Magic Lamp

DDSuper

Друзья CG
31 Май 2019
405
57
Всем привет, мы будем делать самое лёгкое(наверное).
Первое, мы должны перейти к вашей кастомке customgame/scripts/npc (для новичка).
В папке открываем npc_items_custom.txt

И пишем
Код:
"DOTAAbilities"
{
    "item_magic_lamp"
    {
        "ID"    "1365" // Original id 365, let's change to 1365.
        "BaseClass"                     "item_datadriven"
        "AbilityTextureName"            "item_panic_button" // Original item_name is item_panic_button
       
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
        "AbilityCooldown"                "75.0"      
       
        "ItemCost"                        "0"
        "ItemKillable"                    "1"
        "ItemSellable"                    "0"
        "ItemPurchasable"                "1"
        "ItemDroppable"                    "1"
        "ItemPermanent"                    "1"

        "AbilitySpecial"
        {
            "01"
            {
                "var_type"            "FIELD_INTEGER"
                "bonus_health"            "400"
            }
            "02"
            {
                "var_type"            "FIELD_INTEGER"
                "heal"        "300"
            }
            "03"
            {
                "var_type"            "FIELD_INTEGER"
                "health_threshold"    "20"
            }
        }

        "Modifiers"
        {
            "modifier_magic_lamp_passive"
            {
                "Passive"            "1"
                "IsHidden"            "1"
                "IsDebuff"            "0"
       
                "OnTakeDamage" // Ивент на получение урон %attack_damage означает полученный урон от врага.
                {
                    "RunScript"
                    {
                        "ScriptFile"    "item_abilities/item_magic_lamp.lua"
                        "attack_damage"    "%attack_damage"
                        "Function"        "MagicLamp"
                    }  
                }
            }
            "modifier_magic_lamp_stat" // Даёт +400 здоровье
            {
                "Passive"            "1"
                "IsHidden"            "1"
               
                "Properties"
                {
                    "MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health"
                }
            }
        }
    }
}
Переходим к папке vscripts/item_abilities/item_magic_lamp.lua -- тут создаём
Открываем файл.
Тогда пишем:
Код:
function MagicLamp( event ) -- Вызывается именно эта функция
    local caster = event.caster
    local attacker = event.attacker

    local ability = event.ability

    local heal = ability:GetSpecialValueFor("heal") -- из AbilitySpecial
    local health_threshold = ability:GetSpecialValueFor("health_threshold") -- и это тоже

    local health_percent = caster:GetHealthPercent() -- здоровье в процентах

    local damage = event.attack_damage -- полученный урон по герою
   
    if ability:IsCooldownReady() then -- Проверка на перезарядку
        if health_percent <= health_threshold then -- проверка на здоровье
            local particle = ParticleManager:CreateParticle("particles/items5_fx/magic_lamp.vpcf", PATTACH_CENTER_FOLLOW, caster) -- не пишите PATTACH_ABSORIGIN_FOLLOW, оно не будет правильно показывать партикл, чтобы он был имено в центре героя надо PATTACH_CENTER_FOLLOW

            caster:Heal(damage + heal, ability) -- что-то наподобие войда из backtrack и ещё исцеляем на +300. + вас акс не сможет убить.
            caster:EmitSound("DOTA_Item.MagicLamp.Cast") -- звук предмета

            caster:Purge(false, true, false, true, false) -- Сильное развеивание

            ability:StartCooldown(ability:GetCooldown(ability:GetLevel())) -- Начинается перезарядка и проверяет какая перезарядка абилки.
        end
    end
end

Если вам что-то не понятно пишите сюда.
 

DDSuper

Друзья CG
31 Май 2019
405
57
значит твой гайд ничего не объясняет, а просто говорит вставьте вот это вот сюда и всё заработает
что вообще такое мейджик ламп?
наверно item_panic_button?), а кто ещё говорил вставить?

даже не знаю что дополнить может ещё конкретнее???
 
Реклама: