Наткнулся на еще одну проблему...
В общем сделал герою ульту, при переходе в которую у него меняются два первых скилла, а при выходе из ульты эти скиллы меняются обратно.
При этом эти два скилла должны сохранять уровень своей прокачки, но почему-то не сохраняют, хотя вроде написано всё правильно...
Может я всё-таки что-то не так написал?
В общем сделал герою ульту, при переходе в которую у него меняются два первых скилла, а при выходе из ульты эти скиллы меняются обратно.
Lua:
require('timers')
function ult(keys)
local caster = keys.caster
local ability = keys.ability
ability0_level = caster:GetAbilityByIndex(0):GetLevel()
ability0_cooldown = caster:GetAbilityByIndex(0):GetCooldownTimeRemaining()
caster:AddAbility("ability1_new")
caster:SwapAbilities("ability1", "ability1_new", false, true)
caster:RemoveAbility("ability1")
caster:GetAbilityByIndex(0):SetLevel(ability0_level)
caster:GetAbilityByIndex(0):StartCooldown(ability0_cooldown)
ability1_level = caster:GetAbilityByIndex(1):GetLevel()
ability1_cooldown = caster:GetAbilityByIndex(1):GetCooldownTimeRemaining()
caster:AddAbility("ability2_new")
caster:SwapAbilities("ability2", "ability2_new", false, true)
caster:RemoveAbility("ability2")
caster:GetAbilityByIndex(1):SetLevel(ability1_level)
caster:GetAbilityByIndex(1):StartCooldown(ability1_cooldown)
end
function ult_end(keys)
local caster = keys.caster
local ability = keys.ability
local ability0_name = caster:GetAbilityByIndex(0)
local ability1_name = caster:GetAbilityByIndex(1)
ability0_level = caster:GetAbilityByIndex(0):GetLevel()
ility0_cooldown = caster:GetAbilityByIndex(0):GetCooldownTimeRemaining()
caster:AddAbility("ability1")
caster:SwapAbilities("ability1", "ability1_new", true, false)
caster:RemoveAbility("ability1_new")
caster:GetAbilityByIndex(0):SetLevel(ability0_level)
caster:GetAbilityByIndex(0):StartCooldown(ability0_cooldown)
ability1_cooldown = caster:GetAbilityByIndex(1):GetCooldownTimeRemaining()
ability1_level = caster:GetAbilityByIndex(1):GetLevel()
caster:AddAbility("ability2")
caster:SwapAbilities("ability2", "ability2_new", true, false)
caster:RemoveAbility("ability2_new")
caster:GetAbilityByIndex(1):SetLevel(ability1_level)
caster:GetAbilityByIndex(1):StartCooldown(ability1_cooldown)
if ability:IsCooldownReady() and ability:GetAutoCastState() and not caster:IsSilenced() and not caster:IsStunned() and caster:IsAlive() and caster:IsRealHero() and caster:GetMana() > ability:GetManaCost(ability:GetManaCost(ability:GetLevel() - 1)) then
caster:CastAbilityImmediately(ability, caster:GetPlayerID())
end
end
При этом эти два скилла должны сохранять уровень своей прокачки, но почему-то не сохраняют, хотя вроде написано всё правильно...
Может я всё-таки что-то не так написал?