Урок Урок для новичка: Пассивка Тролля (Гайд:2 )

Зачем мои гайды?

  • Чтобы ты научил нас как делать абилки

    Голосов: 8 100.0%
  • Кому ты это росказываешь для тупаков?

    Голосов: 0 0.0%

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

DDSuper

Друзья CG
31 Май 2019
405
57
Вы хотели сделать бы пассивную способность тролля? Только на луа?
UPD:Guide Remaked
Я смогу вам помочь. Начнём
Сразу это тогда луа:

C++:
"troll_warlord_fervor_lua"
    {
        // Ability Technical Aspect
        // base script folder    : scripts/vscripts
        // base texture folder    : resource/flash3/images/spellicons
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                        "ability_lua"
        "ScriptFile"                    "lua_abilities/troll_warlord_fervor_lua/troll_warlord_fervor_lua"
        "AbilityTextureName"            "troll_warlord_fervor_lua"
        "FightRecapLevel"                "1"
        "MaxLevel"                        "4"

        // Ability General
        //-------------------------------------------------------------------------------------------------------------
        "AbilityType"                    "DOTA_ABILITY_TYPE_BASIC"
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
        "SpellDispellableType"            "SPELL_DISPELLABLE_NO"


        // Ability Casting
        //-------------------------------------------------------------------------------------------------------------

        // Ability Resource
        //-------------------------------------------------------------------------------------------------------------

        // Damage
        //-------------------------------------------------------------------------------------------------------------

        // Special
        //-------------------------------------------------------------------------------------------------------------
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"                "FIELD_INTEGER"
                "max_stacks"            "7"
            }
            "02"
            {
                "var_type"                "FIELD_INTEGER"
                "attack_speed"            "15 20 25 30"
            }
        }
    }
}
Ну и теперь луа.
Начало:
Код:
troll_warlord_fervor_lua = class({})
LinkLuaModifier( "modifier_troll_warlord_fervor_lua", "lua_abilities/troll_warlord_fervor_lua/modifier_troll_warlord_fervor_lua", LUA_MODIFIER_MOTION_NONE ) -- Ссылка на модификатор

--------------------------------------------------------------------------------

function troll_warlord_fervor_lua:GetIntrinsicModifierName() -- Если, это пассивная тогда активировать(Просто включает модификатор не важная какая способность активная или неактивная)
    return "modifier_troll_warlord_fervor_lua" -- Ссылка на активацию модификатора
end
Модификатор:

Код:
modifier_troll_warlord_fervor_lua = class({})

--------------------------------------------------------------------------------

function modifier_troll_warlord_fervor_lua:IsHidden( kv )
    return false -- Ли будет она скрытой(модификатор)
end

function modifier_troll_warlord_fervor_lua:IsDebuff( kv )
    return false -- Это дебафф?
end

function modifier_troll_warlord_fervor_lua:IsPurgable( kv )
    return false -- Ли смогут развеять модификатор?
end

function modifier_troll_warlord_fervor_lua:RemoveOnDeath( kv )
    return false -- Хотите убрать модификатор, когда умерли
end

function modifier_troll_warlord_fervor_lua:OnCreated( kv )
    self:SetStackCount(1) -- Как только создана дает 1 стак
    self.stack_multiplier = self:GetAbility():GetSpecialValueFor("attack_speed") -- Ключ
    self.max_stacks = self:GetAbility():GetSpecialValueFor("max_stacks") -- Ключ
    self.currentTarget = {} -- Текущая цель
end

function modifier_troll_warlord_fervor_lua:OnRefresh( kv ) -- Обновилась
    self.stack_multiplier = self:GetAbility():GetSpecialValueFor("attack_speed") -- Ключ
    self.max_stacks = self:GetAbility():GetSpecialValueFor("max_stacks") -- Ключ
end

function modifier_troll_warlord_fervor_lua:DeclareFunctions() -- Очистить функции. Точно не знаю(
    local funcs = {
        MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT,
        MODIFIER_EVENT_ON_ATTACK
    }

    return funcs
end

function modifier_troll_warlord_fervor_lua:OnAttack( params ) -- Вы атаковали
    if IsServer() then
        -- фильтр
        pass = false
        if params.attacker==self:GetParent() then -- Проверяет кто атаковал
            pass = true
        end

        -- логика!
        if pass then
            if self.currentTarget==params.target then -- Проверяет ли атакует ли он ту же самую цель
                self:AddStack() -- добавить стак
            else -- альтернатива
                self:ResetStack() -- ?(
                self.currentTarget = params.target -- Снимает, стаки если вы атаковали
            end
        end
    end
end

function modifier_troll_warlord_fervor_lua:GetModifierAttackSpeedBonus_Constant( params )
    local passive = 1
    if self:GetParent():PassivesDisabled() then
        passive = 0 -- Если пассивная ноль тогда она работать не будет.
    end
    return self:GetStackCount() * self.stack_multiplier * passive -- Мы получаем стаки и проверяет ли работает пассивная?
end

function modifier_troll_warlord_fervor_lua:AddStack() -- Проверяем ли максимум стаков набили
    if not self:GetParent():PassivesDisabled() then -- Пассивная не отключена значит сделай это
        if self:GetStackCount() < self.max_stacks then -- Проверяем стаки если self:GetStackGound() < self.max_stacks тогда дать стак либо так будет self:GetStackGound() <= self.max_stacks (тогда стаки не получите)
            self:IncrementStackCount() -- Прибавляет стак
        end
    end
end

function modifier_troll_warlord_fervor_lua:ResetStack()
    if not self:GetParent():PassivesDisabled() then -- Если способность не отключена
        self:SetStackCount(1)
    end
end
И все вы создали это!
Тоже самой источник
 
Последнее редактирование:
  • Нравится
Реакции: kain

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,137
196
www.dotabuff.com
Проект
Roshan defense
Надо стараться делать фундаментальный, гайд.
Есть конечно польза отподобного, но как правило она ничтожна , и в перспективе ни к чему не ведет...
 
Реклама: