Заметил, что скрытие способности с помощью BlzUnitHideAbility/DisableAbility работают не так как ожидается, что бы отобразить ранее скрытую способность, приходится вызывать эти функции по два, три раза. Нашел пару тем на хайве, пишут, что так происходит из за внутреннего счетчика функций, но с кривым переводчиком не совсем понял сути. Обьясните мне пожалуйста, в чем смысл этого счетчика и для какого применения тогда ввели эти функции, я думал это тоже самое, что SetPlayerAbilityAvailable только для коонкретного юнита, а не игрока.

Принятый ответ

Они пересекаются с функциями и способностями той же механики. Например DisableAbility пересекается с сайленсами, которые отключают способности по тому же принципу. Как сделать так, чтобы отключающие способности не ломали действия друг друга? Внутренним счетчиком. Каждый раз, получая сало, счетчик увеличивается на 1, когда сало проходит, он уменьшается. Так же работает DisableAbility. Вот и получается, что включать способность вызовом функции DisableAbility нужно столько же раз, сколько ты ее выключил.
Точно так же работает новая функция BlzPauseUnitEx. Это функция, которая работает с той же паузой, с которой работают оглушающие способности. Сними паузу вызовом этой функции, скажем, 50 раз (уменьшив таким образом внутренний счетчик) и ты получишь юнита неуязвимого к оглушениям, просто потому что в игре не будет случая, при котором 50 способностей с разным баффом оглушают этого юнита.
`
ОЖИДАНИЕ РЕКЛАМЫ...
8
17
4 года назад
Отредактирован GetLocalPlayer
8
Они пересекаются с функциями и способностями той же механики. Например DisableAbility пересекается с сайленсами, которые отключают способности по тому же принципу. Как сделать так, чтобы отключающие способности не ломали действия друг друга? Внутренним счетчиком. Каждый раз, получая сало, счетчик увеличивается на 1, когда сало проходит, он уменьшается. Так же работает DisableAbility. Вот и получается, что включать способность вызовом функции DisableAbility нужно столько же раз, сколько ты ее выключил.
Точно так же работает новая функция BlzPauseUnitEx. Это функция, которая работает с той же паузой, с которой работают оглушающие способности. Сними паузу вызовом этой функции, скажем, 50 раз (уменьшив таким образом внутренний счетчик) и ты получишь юнита неуязвимого к оглушениям, просто потому что в игре не будет случая, при котором 50 способностей с разным баффом оглушают этого юнита.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.