Blizzard через WoWUI Discord объявили о внедрении срочных исправлений с последними изменениями в API аддонов для устранения эксплойтов. Некоторые из этих изменений повлекут за собой сбои в работе интерфейса и потребуют правок в последнюю минуту.
В зависимости от того, когда Blizzard применит эти исправления, авторам аддонов может понадобиться время на обновление своих модификаций. Если на этой неделе ваши аддоны перестанут работать, пожалуйста, отнеситесь с пониманием к их авторам, так как они, скорее всего, делают все возможное, чтобы исправить проблемы, вызванные этими запоздалыми правками.
По первым впечатлениям сообщается, что изменения в основном затронут аддоны для панелей команд, а также могут потребовать обновления некоторые аддоны для отслеживания перезарядок.
И снова привет от Blizzard! На этой неделе открываются эпохальные рейды и эпохальные+ подземелья, и перед сбросом сохранений мы внесем несколько срочных исправлений, чтобы устранить эксплойты.
Мы понимаем, что некоторые из этих изменений нарушат работу интерфейса и потребуют правок в ваши аддоны в последний момент, и мы искренне извиняемся за то, что они вносятся так поздно. Часть этих изменений связана с удалением защищенного делегата (secure delegate) из функции ActionButton_ApplyCooldown. Мы добавили новые API, которые должны заменить предоставляемую им функциональность, но мы будем внимательно следить за сообщениями о функциях, которые все еще нуждаются в замене.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Эти заметки предназначены для авторов аддонов и поэтому сосредоточены исключительно на изменениях безопасности аддонов. Изменения, запланированные для других частей игры (интерфейса или иных), здесь не указаны.
Перезарядки (Cooldowns)
- Удалена возможность для небезопасного (tainted) кода настраивать фреймы перезарядки с секретными значениями через SetCooldown, SetCooldownFromExpirationTime, SetCooldownDuration и SetCooldownUNIX.
- Это не влияет на SetCooldownFromDurationObject, который в дальнейшем станет единственным способом настройки фрейма перезарядки с секретными значениями.
- Lua-функция ActionButton_ApplyCooldown больше не направляется через защищенный делегат.
- К сожалению, это означает, что существующий код, передающий секреты в эту функцию, начнет выдавать ошибки Lua после вступления исправления в силу. Однако вся логика этой функции должна быть воспроизводима аддонами с помощью новых логических полей isActive/shouldReplaceNormalCooldown и объектов длительности (подробности см. ниже).
- API перезарядки действий/заклинаний теперь возвращают isEnabled и maxCharges как несекретные данные.
- API перезарядки действий/заклинаний теперь возвращают новое несекретное логическое значение isActive, которое устанавливается в true, если интерфейс должен отображать перезарядку.
- Для обычных перезарядок оно true, если isEnabled, startTime > 0 и duration > 0.
- Для перезарядок зарядов оно true, если maxCharges > 1, currentCharges < maxCharges, startTime > 0 и duration > 0.
- Для перезарядок при потере контроля (LoC) оно true, если startTime > 0 и duration > 0.
- API перезарядки действий/заклинаний, выдающие объекты длительности, теперь возвращают объект с нулевым интервалом (zero-span), если логическое значение isActive оценивается как false.
- API перезарядки действий/заклинаний теперь возвращают результаты, измененные наличием заклинаний ауры перезарядки на игроке.
- Например, если ячейка панели команд назначена на PvP-аксессуар (Печать адаптации), который имеет пассивный эффект автоматического снятия эффекта потери контроля с перезарядкой в 1 минуту, API GetActionCooldown будет отслеживать эту минуту перезарядки, когда на игрока наложен дебафф «Адаптация».
- Это означает, что коду аддонов больше не нужно взаимодействовать с API C_UnitAuras.GetCooldownAuraBySpellID.
Перезарядки (продолжение)
- API перезарядки при потере контроля (Loss of Control) действий/заклинаний теперь возвращают структурированную таблицу вместо распакованных значений.
- Эти функции были переименованы с добавлением суффикса «Info» (например, GetSpellLossOfControlCooldownInfo), а старые имена, распаковывающие время начала и значение длительности, помечены как устаревшие.
- Эта структурированная таблица содержит несколько новых полей, отсутствовавших в старом API. В дополнение к упомянутому выше isActive, она включает modRate (секретно) и shouldReplaceNormalCooldown (несекретно), которое принимает значение true, если время окончания перезарядки при потере контроля наступает позже, чем любая обычная перезарядка для этой способности/заклинания.
- Добавлено новое API C_LossOfControl.GetActiveLossOfControlDuration(unitToken, index), которое возвращает объект длительности.
- Добавлено новое API GetTotemDuration(slot), которое возвращает объект длительности.
Другие изменения
- Изменение, которое мы уже внесли в версии 12.0.5 для ограничения возможности использования спецификаторов точности вида %.1s с секретными строковыми входными данными, было перенесено в 12.0.1.
- В результате format("%.1s", secretwrap("Джа-Джа Бинкс")) больше не будет обрезать строку до «Д».
- API UnitCreatureID теперь возвращает nil, когда идентификатор существа является секретным.
- Следующие методы объектов скриптов теперь возвращают nil, если назначены соответствующие секретные аспекты: Frame:GetEffectiveAlpha(), StatusBar:IsStatusBarDesaturated(), Texture:IsDesatured()
- Решено несколько проблем, при которых API C_TooltipInfo для аур юнитов имели непоследовательные требования к безопасности.
- Использование команд /wm и /cwm в макросах ограничено до 3 раз в секунду.
- Макросам больше не разрешено отправлять личные сообщения BNet, пока идет сражение.
- Следующие API C_UnitAuras больше нельзя вызывать, пока игрок находится в бою: AddPrivateAuraAnchor, RemovePrivateAuraAnchor, SetPrivateWarningTextAnchor, AddPrivateAuraAppliedSound, RemovePrivateAuraAppliedSound.
Источник: WoWHead
Комментарии 0
Пока нет комментариев
Будьте первым, кто оставит комментарий!
Войдите, чтобы оставить комментарий