Как вызывать
addon:GetClassGroupCount(cache, class, raid)
Доступен напрямую через addon; зависимость не нужна.
Что делает
Посчитать совпадающие токены классов в текущем фиксированном составе. Сначала читается членство в группе; при запросе членство в рейде выбирает raid1–raid40 без отдельного факта об игроке. В одиночку и в группе сначала читается player, затем party1–party4, если вы в группе. Полный известный состав возвращает число, включая ноль; любой недоступный обязательный факт возвращает nil с причиной. Полные наблюдения разделяют кэш прохода вычисления; класс игрока между проходами не сохраняется. Архивные исходные обратные вызовы отдельно хранят свой класс на момент загрузки.
Аргументы
| Имя | Тип | Что делает |
|---|---|---|
self | RMAddon | Экземпляр аддона Rotation Master (неявно при вызове через двоеточие). |
cache | table | nil | Кэш прохода вычисления или nil для новых наблюдений. |
class | string | Непустой токен имени файла класса для подсчёта; белый список токенов классов не применяется. |
raid | boolean | nil | true разрешает состав рейда, если членство в рейде известно как true; false или nil использует состав для одиночной игры или группы. |
Возвращает
| 1 | number | nil | Полное число совпадающих классов, включая ноль, или nil, если недоступно. |
|---|---|---|
| 2 | string | nil | Причина по проверке, политике или недоступности обязательного факта для числа nil. |
Издания
Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.
Не читает игровой API напрямую.
Секретные значения (Retail и Forever)
В Retail и Forever игра передаёт аддонам секретные значения. Этот помощник проверяет то, что читает (addon.Platform:CanReadValue), и вместо секретного значения, которое нельзя сравнить, возвращает nil с причиной, например restricted-value. Считайте nil недоступным значением, а не ложью.
Как его вызывает аддон
- Класс в группе (evaluate)
local count,reason=addon:GetClassGroupCount(cache,value.class,value.raid)
Исходный код
Core/class_group_conditions.lua, строка 23. В игре только для чтения; «Дублировать» создаёт редактируемую копию.
Core.class_group_conditions.GetClassGroupCount(self, cache, class, raid)
local platform=self.Platform
if not platform:CanReadValue(class) or not platform:CanReadValue(raid) then return nil,'restricted-value' end
if type(class)~='string' or class=='' then return nil,'invalid-class-group-query' end
if raid~=nil and type(raid)~='boolean' then return nil,'invalid-class-group-query' end
local grouped,reason=self.Functions.cache.getCached(cache,platform.GetGroupMembership,platform,false)
if grouped==nil then return nil,reason end
local prefix,size='party',4
if grouped and raid then
local inRaid,why=self.Functions.cache.getCached(cache,platform.GetGroupMembership,platform,true)
if inRaid==nil then return nil,why end
if inRaid then prefix,size='raid',40 end
end
local count=0
if not grouped or prefix=='party' then
local player,why=self.Functions.cache.getCached(cache,platform.GetRosterClassObservation,platform,'player')
if player==nil then return nil,why end
if player==class then count=1 end
if not grouped then return count end
end
for index=1,size do
local observed,why=self.Functions.cache.getCached(cache,platform.GetRosterClassObservation,platform,prefix..tostring(index))
if observed==nil then return nil,why end
if observed==class then count=count+1 end
end
return count