Добавлен Kalvin273
Код должен работать следующим образом. Есть таблица, куда занесены все перезарядки способности и есть функция, которая проверяет наличие у юнита предмета (если он есть - уменьшает перезарядку вдвое). Далее создается триггер начала перезарядки способности после ее каста (при этом в РО кд способностей выставлен в 0). Сама карта не крашится, но при этом сам код не работает. В чем тут дело?
Принятый ответ
Kalvin273, во-первых, функция SetAbilityCooldown(caster, ability) в этом коде вообще никогда не вызывается.
Во-вторых, даже если бы она вызывалась, то скорее всего она бы не работала, так как я не вижу, где тут функция GetAbilityId, возможно имелось ввиду BlzGetAbilityId(whichAbility).
В-третьих, даже если бы она работала, то она бы ничего не делала, так как она просто берёт число и умножает на 0.5, никуда его не возвращая.
Во-вторых, даже если бы она вызывалась, то скорее всего она бы не работала, так как я не вижу, где тут функция GetAbilityId, возможно имелось ввиду BlzGetAbilityId(whichAbility).
В-третьих, даже если бы она работала, то она бы ничего не делала, так как она просто берёт число и умножает на 0.5, никуда его не возвращая.
Интуитивно кажется, что нужно переделать так, хотя я не могу утверждать, что отлов каста сделан правильно, никогда таким не занимался.
function SetAbilityCooldown(ability)
local cooldown = AbilitiesCooldown[BlzGetAbilityId(ability)] or 0
if CheckHaveOctarine() then
return cooldown * 0.5
end
return cooldown
end
-- ...
TriggerAddAction(abilityCastTrigger, function()
local caster = GetTriggerUnit()
local ability = BlzGetUnitAbility(caster, GetSpellAbilityId())
BlzStartUnitAbilityCooldown(caster, ability, SetAbilityCooldown(ability))
end)
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. Makeba
Ред. Makeba
Во-вторых, даже если бы она вызывалась, то скорее всего она бы не работала, так как я не вижу, где тут функция GetAbilityId, возможно имелось ввиду BlzGetAbilityId(whichAbility).
В-третьих, даже если бы она работала, то она бы ничего не делала, так как она просто берёт число и умножает на 0.5, никуда его не возвращая.
Ред. Makeba