Llamar como
addon:GetClassGroupCount(cache, class, raid)
Disponible directamente a través de addon; no se necesita ninguna dependencia.
Qué hace
Cuenta los tokens de clase coincidentes en la lista fija actual. Lee primero la pertenencia al grupo; si se solicita, la pertenencia a la banda selecciona de raid1 a raid40 sin un dato aparte del jugador. Las rutas en solitario y de grupo leen primero al jugador y luego de party1 a party4 si está agrupado. Una lista conocida completa devuelve un recuento, incluido cero; cualquier dato necesario no disponible devuelve nil con un motivo. Las observaciones completas comparten la caché de la pasada de evaluación; ninguna clase de jugador persiste entre pasadas. Los callbacks en bruto archivados conservan aparte su clase original del momento de carga.
Argumentos
| Nombre | Tipo | Qué hace |
|---|---|---|
self | RMAddon | Instancia del addon Rotation Master (implícita en las llamadas con dos puntos). |
cache | table | nil | Caché de la pasada de evaluación, o nil para observaciones nuevas. |
class | string | Token de nombre de archivo de clase no vacío que se contará; no se aplica ninguna lista blanca de tokens de clase. |
raid | boolean | nil | True permite la lista de la banda cuando se sabe que la pertenencia a la banda es true; false o nil usan la lista en solitario o de grupo. |
Retornos
| 1 | number | nil | Recuento completo de clases coincidentes, incluido cero, o nil si no está disponible. |
|---|---|---|
| 2 | string | nil | Motivo de validación, política o disponibilidad de un dato necesario para un recuento nil. |
Ediciones
Las funciones auxiliares integradas se registran en todas las ediciones. Lo que cambia es la API del juego que leen; donde falta alguna, la función auxiliar usa una alternativa o devuelve nil con un motivo.
No lee directamente ninguna API del juego.
Valores secretos (Retail y Forever)
En Retail y Forever, el juego les entrega a los addons valores secretos. Esta función auxiliar verifica lo que lee (addon.Platform:CanReadValue) y, en lugar de un secreto que no puede comparar, devuelve nil con un motivo como restricted-value. Trata nil como no disponible, no como falso.
Cómo la llama el addon
- Clase en el grupo (evaluate)
local count,reason=addon:GetClassGroupCount(cache,value.class,value.raid)
Código fuente
Core/class_group_conditions.lua, línea 23. Solo lectura en el juego; Duplicar crea una copia editable.
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