А как уменьшить кулдаун способности?Как изменить таланты? - Разработка модов и кастомки Dota 2 - Custom Games
Мне нужно изменить таланты у нескольких героев, как я могу это сделать?customgames.ru
Мне бы только функцию на изменение кулдауна найтиЕсли коротко то написать модификатор который выдать на 10 лвл через древо талантов , который уменьшит колдаун способности , а если кодом то только завтра
Мне бы только функцию на изменение кулдауна найти
Спасибо, завтра проверюЧтобы указать, к какой способности применить модификатор, вы можете использовать функцию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
в соответствии с вашими потребностями.
Я не за пк что бы чекать код, который сюда написал , по этому только завтра смогу дальше помочь с вопросом
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"
}
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"
}
Большое спасибо! Очень сильно помогЗабудь все что я там написал, кароч через ебаные муки и проеабаные пару часов
Все что нужно для кол-дауна, без функций и прочего для примера!!!!!!!!
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" }
Это на абилку которая дотовская, там речь шла вроде об кастмном спелеKV:"AbilityValues" { "AbilityCooldown" { "value" "70" "special_bonus_unique_antimage_2" "-50" } }
Я например не пользуюсь почти текстовиком и пишу абилки в фулл lua, кому как удобнееВ чем проблема написать тоже для кастомного спела?