Решено Как создать талант

Filonov

Пользователь
13 Ноя 2022
37
4
Я хочу сделать талант. У меня есть способность у которой перезарядка 10 секунд, я хочу чтобы на 10 уровне я мог прокачать талант на -2 секунды перезарядки этой способности, как это сделать?
 

iia3uk666

Друзья CG
18 Дек 2021
411
70
Проект
Ушел с CG
Если коротко то написать модификатор который выдать на 10 лвл через древо талантов , который уменьшит колдаун способности , а если кодом то только завтра
 

Filonov

Пользователь
13 Ноя 2022
37
4
Если коротко то написать модификатор который выдать на 10 лвл через древо талантов , который уменьшит колдаун способности , а если кодом то только завтра
Мне бы только функцию на изменение кулдауна найти
 

Filonov

Пользователь
13 Ноя 2022
37
4
Чтобы указать, к какой способности применить модификатор, вы можете использовать функцию OnAbilityFullyCast в модификаторе и проверить, является ли применяемая способность той, к которой вы хотите применить модификатор.

Пример кода модификатора, чтобы указать, к какой способности применить модификатор:

Lua:
modifier_reduce_cooldown = class({})

function modifier_reduce_cooldown:DeclareFunctions()
    local funcs = {
        MODIFIER_EVENT_ON_ABILITY_FULLY_CAST,
    }
    return funcs
end

function modifier_reduce_cooldown:OnAbilityFullyCast(keys)
    if keys.unit == self:GetParent() then
        local ability = keys.ability
       
        -- Укажите здесь идентификаторы способностей (названия или номера),
        -- к которым вы хотите применить модификатор
        local abilities_to_reduce_cooldown = {"ability_name1", "ability_name2"}
       
        -- Проверяем, является ли применяемая способность одной из тех, к которым
        -- мы хотим применить модификатор
        if table.contains(abilities_to_reduce_cooldown, ability:GetAbilityName()) then
            local cooldown_reduction = 5 -- Установите желаемое снижение времени восстановления
            local cooldown_remaining = ability:GetCooldownTimeRemaining()
           
            ability:EndCooldown()
            ability:StartCooldown(cooldown_remaining - cooldown_reduction)
        end
    end
end

function modifier_reduce_cooldown:IsHidden()
    return true
end

function modifier_reduce_cooldown:IsPurgable()
    return false
end

function modifier_reduce_cooldown:GetAttributes()
    return MODIFIER_ATTRIBUTE_MULTIPLE
end

-- Вспомогательная функция для проверки наличия значения в таблице
function table.contains(table, val)
    for _, value in pairs(table) do
        if value == val then
            return true
        end
    end
    return false
end

Замените "ability_name1" и "ability_name2" на идентификаторы (названия или номера) способностей, к которым вы хотите применить модификатор. Вы можете добавить или удалить значения в таблице abilities_to_reduce_cooldown в соответствии с вашими потребностями.


Я не за пк что бы чекать код, который сюда написал , по этому только завтра смогу дальше помочь с вопросом
Спасибо, завтра проверю
 

iia3uk666

Друзья CG
18 Дек 2021
411
70
Проект
Ушел с CG
Забудь все что я там написал, кароч через ебаные муки и проеабаные пару часов


Все что нужно для кол-дауна, без функций и прочего для примера!!!!!!!!
Lua:
juggernaut_taunt = class({})
function juggernaut_taunt:GetCooldown(level)
  local caster = self:GetCaster()
  local talentAbility = caster:FindAbilityByName("special_bonus_unique_juggernaut_cust")
  if caster and talentAbility and talentAbility:GetLevel() > 0 and talentAbility:IsAttributeBonus() then
    return 5
  else
    return 10
  end
end
Код:
"special_bonus_unique_juggernaut_cust"
    {      
        "AbilityType"                    "DOTA_ABILITY_TYPE_ATTRIBUTES"
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
        "BaseClass"                     "ability_lua"  
        "ScriptFile"                    "heroes/hero_juggernaut/special_bonus_unique_juggernaut_cust"      
    }
Lua:
special_bonus_unique_juggernaut_cust = class({})

function special_bonus_unique_juggernaut_cust:IsAttributeBonus()
    return true
end
Код:
    "npc_dota_hero_juggernaut"
    {
    "Ability1"         "juggernaut_taunt"
    "Ability10"        "special_bonus_all_stats_100"
    "Ability11"        "special_bonus_unique_juggernaut_cust"
    }

1692514993469.png
1692515038707.png1692515058906.png
1692515094415.png
 

Filonov

Пользователь
13 Ноя 2022
37
4
Забудь все что я там написал, кароч через ебаные муки и проеабаные пару часов


Все что нужно для кол-дауна, без функций и прочего для примера!!!!!!!!
Lua:
juggernaut_taunt = class({})
function juggernaut_taunt:GetCooldown(level)
  local caster = self:GetCaster()
  local talentAbility = caster:FindAbilityByName("special_bonus_unique_juggernaut_cust")
  if caster and talentAbility and talentAbility:GetLevel() > 0 and talentAbility:IsAttributeBonus() then
    return 5
  else
    return 10
  end
end
Код:
"special_bonus_unique_juggernaut_cust"
    {     
        "AbilityType"                    "DOTA_ABILITY_TYPE_ATTRIBUTES"
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
        "BaseClass"                     "ability_lua" 
        "ScriptFile"                    "heroes/hero_juggernaut/special_bonus_unique_juggernaut_cust"     
    }
Lua:
special_bonus_unique_juggernaut_cust = class({})

function special_bonus_unique_juggernaut_cust:IsAttributeBonus()
    return true
end
Код:
    "npc_dota_hero_juggernaut"
    {
    "Ability1"         "juggernaut_taunt"
    "Ability10"        "special_bonus_all_stats_100"
    "Ability11"        "special_bonus_unique_juggernaut_cust"
    }

Большое спасибо! Очень сильно помог
 

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
KV:
"AbilityValues"
{
            "AbilityCooldown"                
            {
                "value"            "70"
                "special_bonus_unique_antimage_2"    "-50"
            }
}
 
  • Нравится
Реакции: .фи

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
В чем проблема написать тоже для кастомного спела?
 
Реклама: