Способность Jinada: Как создать? (Гайд)

Библиотека нужна?

  • Да

    Голосов: 6 85.7%
  • Нет

    Голосов: 1 14.3%
  • Зачем этот опрос?

    Голосов: 0 0.0%

  • Всего проголосовало
    7

DDSuper

Друзья CG
31 Май 2019
405
57
Всем, привет.
И вот теперь, пассивная способность Jinata(я не ошибся)
(Jinada D.D.) Я знаете какую ту, библиотеку делаю. Я серьезно!
Код:
"bounty_hunter_jinada_datadriven"
    {
        "BaseClass"                     "ability_datadriven"
        "AbilityTextureName"            "bounty_hunter_jinada"
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
        "MaxLevel"                         "4"

        "AbilityCooldown"                "12 9 6 3"

        "precache"
        {
              "soundfile"   "soundevents/game_sounds_heroes/game_sounds_bounty_hunter.vsndevts"
          }
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"            "FIELD_INTEGER"
                "steal_gold"            "-12 -20 -28 -36"
            }
            "02"
            {
                "var_type"            "FIELD_FLOAT"
                "bonus_damage"        "70 100 130 160"
            }
            "03"
            {
                "var_type"    "FIELD_INTEGER"
                "get_gold"    "12 20 28 36"
            }
            "04"
            {
                "var_type"    "FIELD_FLOAT"
                "startcooldown"    "12 9 6 3"
            }
        }
        "Modifiers"
        {
            "modifier_damage_bonus"
            {
                "Passive"            "1"
                "IsHidden"            "1"

                "Properties"
                {
                    "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%bonus_damage"
                }
                "OnAttackLanded"

                {
                    "RunScript"
                    {
                        "ScriptFile"    "heroes/hero_tusk/jinada_datadriven"
                        "Function"        "JinadaStart"
                        "StealGold"        "%steal_gold"
                        "GetGoldSelf"        "%get_gold"
                        "modifier"        "modifier_damage_bonus"
                        "CooldownGet"    "%startcooldown"
                    }
                    "FireSound"
                    {
                        "EffectName"    "Hero_BountyHunter.Jinada" // Есть альтернативное название Hero_BountyHunter.Jinata
                        "Target"        "CASTER"
                    }
                }
            }
        }
    }
}
Возьмите, таймер из барабонки, либо никак.
Теперь, луа. Кстати 20 строк для меня было много. Хотя это мало

Представляю, полностью доработанную, версию!
Код:
function JinadaStart(keys) -- 100% Копия способности не верите проверьте сами

    local ability = keys.ability
    local level = ability:GetLevel() - 1
    local cooldown = ability:GetCooldown(level)
    local caster = keys.caster
    local modifier = keys.modifier

    local midas_particle = ParticleManager:CreateParticle("particles/items2_fx/hand_of_midas.vpcf", PATTACH_ABSORIGIN_FOLLOW, keys.target)  -- Эффекты, частиц мидаса
    if keys.target:IsRealHero() then -- Если герой настоящий
        ability:StartCooldown(cooldown) -- Начать перезарядку
        keys.target:ModifyGold(keys.StealGold, false, 0) -- Украсть золото
        caster:ModifyGold(keys.GetGoldSelf, true, 1) -- Получить золото
        caster:RemoveModifierByName(modifier) -- Убрать модификатор
        ParticleManager:SetParticleControlEnt(midas_particle, 1, keys.caster, PATTACH_POINT_FOLLOW, "attach_hitloc", keys.caster:GetAbsOrigin(), false) -- Контроль как и сказано
        keys.target:EmitSound("Hero_BountyHunter.Jinata") -- Звук Jinata
        keys.target:EmitSound("DOTA_Item.Hand_Of_Midas") -- Звук Midasa
    end

    if keys.target:IsCreep() then -- Если это крип
        caster:RemoveModifierByName(modifier) -- Убрать модификатор
        keys.target:EmitSound("Hero_BountyHunter.Jinada") -- Звук Джината
        ability:StartCooldown(cooldown) -- Начать кулдаун
        ParticleManager:DestroyParticle(midas_particle, true) -- Необходимо, ведь, механика скилла не ворует у крипа золото. Значит партикл нужно отключить!
    end
    Timers:CreateTimer(cooldown, function() -- Таймер
        ability:ApplyDataDrivenModifier(caster, caster, modifier, {}) -- После перезарядки применяет модификатор
        end)
end
Я сильно, спешил. Чтобы не увидели мой фейл.
Если понравился. Влепите лайк!
Если, есть предложение. Какой гайд, выложить. Напишите)
 
Последнее редактирование:

SniperX

Друзья CG
26 Фев 2018
539
100
Проект
Dota 2x4
В DD последняя скобка лишняя
 
  • Нравится
Реакции: ION
Реклама: