Справочник › Справочник функций › Core

Core.class_group_conditions.GetClassGroupCount

общедоступный

Как вызывать

addon:GetClassGroupCount(cache, class, raid)

Доступен напрямую через addon; зависимость не нужна.

Что делает

Посчитать совпадающие токены классов в текущем фиксированном составе. Сначала читается членство в группе; при запросе членство в рейде выбирает raid1–raid40 без отдельного факта об игроке. В одиночку и в группе сначала читается player, затем party1–party4, если вы в группе. Полный известный состав возвращает число, включая ноль; любой недоступный обязательный факт возвращает nil с причиной. Полные наблюдения разделяют кэш прохода вычисления; класс игрока между проходами не сохраняется. Архивные исходные обратные вызовы отдельно хранят свой класс на момент загрузки.

Аргументы

ИмяТипЧто делает
selfRMAddonЭкземпляр аддона Rotation Master (неявно при вызове через двоеточие).
cachetable | nilКэш прохода вычисления или nil для новых наблюдений.
classstringНепустой токен имени файла класса для подсчёта; белый список токенов классов не применяется.
raidboolean | niltrue разрешает состав рейда, если членство в рейде известно как true; false или nil использует состав для одиночной игры или группы.

Возвращает

1number | nilПолное число совпадающих классов, включая ноль, или nil, если недоступно.
2string | nilПричина по проверке, политике или недоступности обязательного факта для числа nil.

Издания

Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.

Не читает игровой API напрямую.

Секретные значения (Retail и Forever)

В Retail и Forever игра передаёт аддонам секретные значения. Этот помощник проверяет то, что читает (addon.Platform:CanReadValue), и вместо секретного значения, которое нельзя сравнить, возвращает nil с причиной, например restricted-value. Считайте nil недоступным значением, а не ложью.

Как его вызывает аддон

Исходный код

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

Назад: Справочник функций