Referencia › Referencia de funciones › Core

Core.point_conditions.GetConditionPointResourceV2

pública

Llamar como

addon:GetConditionPointResourceV2(unit, cache)

Disponible directamente a través de addon; no se necesita ninguna dependencia.

Qué hace

Resuelve los recursos de puntos usando la correspondencia de clase en vivo original y la caché de identidad, con una política explícita de transporte alternativo de ComboPoints para el jugador de TBC. Una alternativa del jugador que coincide con la tabla en bruto legible Enum.PowerType y el valor ComboPoints capturado al cargar el módulo selecciona target-combo; las entradas explícitas del mapa de clases, otros actores y otras familias conservan power. Una procedencia de la alternativa sustituida, heredada o no demostrable conserva power. Esta política versionada no afirma que UnitPower nativo esté roto ni que sea equivalente. Una ausencia conocida de la unidad devuelve false; las observaciones necesarias no disponibles devuelven nil con un motivo. Aquí no se consulta ninguna cantidad actual ni máxima.

Argumentos

NombreTipoQué hace
selfRMAddonInstancia del addon Rotation Master (implícita en las llamadas con dos puntos).
unitstringToken de unidad seleccionado exacto; solo el token literal player puede seleccionar el transporte de combo de TBC.
cachetable | nilCaché de la pasada de evaluación, o nil para observar la identidad directamente. Las observaciones correctas de la clase del jugador pueden usar la caché de identidad a largo plazo existente; la correspondencia de recursos sigue siendo en vivo.

Retornos

1number | boolean | nilSelector entero no negativo explícito, false si se sabe que la unidad está ausente o nil cuando faltan datos necesarios.
2string | nilMotivo de política, validación de la consulta o disponibilidad de la identidad o del selector para un selector nil.
3string | nilSolo en un recurso seleccionado: target-combo para la alternativa explícita del jugador de TBC o power para el transporte existente de la unidad seleccionada.

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 disponible en esa edición (el motivo aparece en la información emergente)
  • Solo mientras estén activas las alternativas de Blizzard para API obsoletas
API del juegoClassic EraTBC AnniversaryClassic ProgressionForeverRetail
EnumClassic EraTBC AnniversaryClassic ProgressionForeverRetail
canaccessvalueClassic EraTBC AnniversaryClassic ProgressionForeverRetail

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

  • Puntos (evaluate)
    local point,reason,transport=addon:GetConditionPointResourceV2(value.unit,cache)

Dependencias

Código fuente

Core/point_conditions.lua, línea 210. Solo lectura en el juego; Duplicar crea una copia editable.

Core.point_conditions.GetConditionPointResourceV2(self, unit, cache)
    local platform=self.Platform
    local info=platform:GetClientInfo()
    local policy=info.combatDataPolicy
    if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
    if not platform:CanReadValue(unit) then return nil,'restricted-value' end
    if type(unit)~='string' or unit=='' then return nil,'invalid-unit' end
    local record,reason=addon.Functions.cache.getCached(cache,pointIdentity,self,unit,playerClassCacheKey)
    if not record then return nil,reason end
    if not record.exists then return false end
    local family=info.family
    if policy=='probe' and (family=='era' or family=='progression') then return editionPointResource(platform,info,unit,record.class,cache) end
    local points=self.points
    if not platform:CanReadValue(points) then return nil,'restricted-value' end
    if type(points)~='table' then return nil,'invalid-point-resource-map' end
    local fallbackEnum,fallbackTypes
    local ok,selected=pcall(function() return points[record.class] end)
    if not ok then return nil,'api-error' end
    if not platform:CanReadValue(selected) then return nil,'restricted-value' end
    if selected==nil or selected==false then
        local enum=Enum
        if not platform:CanReadValue(enum) then return nil,'restricted-value' end
        if type(enum)~='table' then return nil,'point-resource-unavailable' end
        local typesOK,types=pcall(function() return enum.PowerType end)
        if not typesOK then return nil,'api-error' end
        if not platform:CanReadValue(types) then return nil,'restricted-value' end
        if type(types)~='table' then return nil,'point-resource-unavailable' end
        local fallbackOK,fallback=pcall(function() return types.ComboPoints end)
        if not fallbackOK then return nil,'api-error' end
        selected=fallback
        if not platform:CanReadValue(selected) then return nil,'restricted-value' end
        fallbackEnum,fallbackTypes=enum,types
    end
    if selected==nil then return nil,'point-resource-unavailable' end
    if type(selected)~='number' or selected~=selected or selected<0 or selected==math.huge or selected%1~=0 then return nil,'invalid-point-resource' end
    if policy=='restricted' and not platform:IsNeverSecretPointPower(selected) then return nil,'unsupported-policy' end
    local transport='power'
    if unit=='player' and fallbackTypes then
        local rawTypes,rawCombo=rawget(fallbackEnum,'PowerType'),rawget(fallbackTypes,'ComboPoints')
        if platform:CanReadValue(pointComboTypes) and (not canaccessvalue or canaccessvalue(pointComboTypes))
            and platform:CanReadValue(rawTypes) and (not canaccessvalue or canaccessvalue(rawTypes))
            and rawequal(fallbackTypes,pointComboTypes) and rawequal(rawTypes,fallbackTypes)
            and platform:CanReadValue(rawCombo) and (not canaccessvalue or canaccessvalue(rawCombo)) and rawCombo==selected
            and platform:CanReadValue(pointComboValue) and (not canaccessvalue or canaccessvalue(pointComboValue))
            and pointComboValue==selected then
            local family
            if platform:CanReadValue(info) and type(info)=='table' then family=rawget(info,'family') end
            if platform:CanReadValue(family) and (not canaccessvalue or canaccessvalue(family)) and family=='tbc' then transport='target-combo' end
        end
    end
    return selected,nil,transport

Volver a Referencia de funciones