跳转到内容

内置属性与示例

以下列出 25 条基础模板,并补充当前编辑器的 10 类原生光环字段。内置显示名随中英文切换;保存的名称、库引用与 Prop(“名称”) 保持稳定,示例沿用原引用名。参数以编辑器当前项为准。

参数:player

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 战斗中可能为受保护值:只能直接返回,不可比较或运算
return UnitHealth(arg1)

取单位当前生命值(直传档范本)。

参数:player

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 受保护值不可做除法,用 FromGUID 直传 0~1 小数
local guid = UnitGUID(arg1)
if not guid then return 0 end
return UnitPercentHealthFromGUID(guid)

生命百分比(0~1)。演示为什么不能自己算除法,以及 GUID 判空。

参数:player,3

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 资源类型:0=法力 1=怒气 2=集中 3=能量 4=连击点 5=符文 6=符能 7=灵魂碎片 8=星能
-- 9=圣能 10=备用能量 11=漩涡 12=真气 13=疯狂 16=奥术充能 17=邪能 18=痛苦 19=精魂
-- 返回值可能受保护:直接返回,不可比较或运算
return UnitPower(arg1, arg2)

取某类资源当前值(第二参数为资源类型 ID)。

参数:player,4

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 资源类型:0=法力 1=怒气 2=集中 3=能量 4=连击点 5=符文 6=符能 7=灵魂碎片 8=星能
-- 9=圣能 10=备用能量 11=漩涡 12=真气 13=疯狂 16=奥术充能 17=邪能 18=痛苦 19=精魂
-- 返回值可能受保护:直接返回,不可比较或运算
return UnitPower(arg1, arg2)

与「能量」同一段代码、仅参数不同——演示代码复用。

参数:player,3

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 资源类型:0=法力 1=怒气 2=集中 3=能量 4=连击点 5=符文 6=符能 7=灵魂碎片 8=星能
-- 9=圣能 10=备用能量 11=漩涡 12=真气 13=疯狂 16=奥术充能 17=邪能 18=痛苦 19=精魂
-- 0~100;有 UnitPowerPercent(正式服)就直传,可能受保护:直接返回,不可比较或运算
-- 没有该接口(怀旧服)则消毒后相除,受保护值归 0
if UnitPowerPercent then return UnitPowerPercent(arg1, arg2) end
local p = SuperDPS.SN(UnitPower(arg1, arg2), "lib.powpct", arg1)
local m = SuperDPS.SN(UnitPowerMax(arg1, arg2), "lib.powpct", arg1)
if m == 0 then return 0 end
return p / m * 100

资源百分比(0~100)。正式服直传 UnitPowerPercent,怀旧服消毒后相除——演示按接口是否存在分流。

-- 战斗中按 1、脱战按 0
return InCombatLockdown()

是否处于战斗中(布尔按 1/0 回传)。

return UnitExists("pet")

是否有召唤宠物。

参数:target

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 目标存在且可攻击按 1(常用作输出总开关)
return UnitExists(arg1) and UnitCanAttack("player", arg1)

目标是否存在且可攻击(自由档,可直接逻辑判断)。

-- 可见敌对姓名板计数(AOE 张数);需在游戏内开启敌对姓名板
local n = 0
for i = 1, 40 do
local u = "nameplate" .. i
if UnitExists(u) and UnitCanAttack("player", u) then n = n + 1 end
end
return n

周围可见敌对目标数量,用于 AOE 判断。

参数:5277

-- timeUntilEndOfStartRecovery = 剩余秒数;直接返回,不可比较
-- (duration/startTime 战斗中受保护,勿仿)
local info = C_Spell.GetSpellCooldown(arg1)
return info and info.timeUntilEndOfStartRecovery or 0

某技能的冷却剩余秒数(参数为技能 ID)。

参数:5277

-- isActive/isOnGCD 官方保证永不受保护,可安全逻辑判断
local info = C_Spell.GetSpellCooldown(arg1)
if not info then return false end
return info.isActive and not info.isOnGCD

技能是否就绪(不在冷却、不在公共冷却)——自由档范本。

-- 61304 = 公共冷却专用查询 ID
local info = C_Spell.GetSpellCooldown(61304)
return info and info.timeUntilEndOfStartRecovery or 0

公共冷却剩余秒数。

参数:108853

-- 当前充能层数;直接返回(无充能机制的技能按 0)
local c = C_Spell.GetSpellCharges(arg1)
return c and c.currentCharges or 0

带充能技能的当前层数。

参数:116,target

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 目标在射程内按 1;直接返回,不可做逻辑判断
return C_Spell.IsSpellInRange(arg1, arg2)

目标是否在某技能射程内(参数:技能 ID, 单位)。

参数:5512

-- 非战斗数值,可直接使用
return C_Item.GetItemCount(arg1)

背包内某物品数量(药水、治疗石等)。

参数:player,774

-- 参数:player(增益只查自己),技能 ID 或名称
return SuperDPS.BuiltinAura(arg1, arg2, "remaining", "HELPFUL")

当前增益剩余秒数,使用原生光环条带;支持 player 增益。

参数:player,774

-- 参数:player(增益只查自己),技能 ID 或名称
return SuperDPS.BuiltinAura(arg1, arg2, "applications", "HELPFUL")

某增益的当前层数。

参数:target,589

-- 参数:target(减益只查当前目标),技能 ID 或名称
return SuperDPS.BuiltinAura(arg1, arg2, "remaining", "HARMFUL")

目标身上某减益的剩余秒数。

参数:target,589

-- 参数:target(减益只查当前目标),技能 ID 或名称
return SuperDPS.BuiltinAura(arg1, arg2, "applications", "HARMFUL")

目标身上某减益的层数。

参数:target,589

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 只认「自己施放」的减益(DoT 补覆盖判断)
local name, _, _, _, _, expire, source = SuperDPS.GetUnitDebuff(arg1, arg2)
if not name or source ~= "player" then return 0 end
expire = SuperDPS.SN(expire, "lib.mydotremain")
if expire == 0 then return 0 end
return expire - GetTime()

仅由你施放的减益剩余秒数,用于 DoT 补刷判断。

参数:target

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 正在施放/引导的法术 ID(打断判断),没在施法按 0
local id = select(9, UnitCastingInfo(arg1))
if not id then id = select(8, UnitChannelInfo(arg1)) end
return id or 0

目标正在施放或引导的法术 ID。

参数:target

-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,
-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40
-- 完成剩余秒数(打断时机);endTime 要算术,必须先 SN 消毒
local endMS = select(5, UnitCastingInfo(arg1))
if not endMS then endMS = select(5, UnitChannelInfo(arg1)) end
endMS = SuperDPS.SN(endMS, "lib.castremain")
if endMS == 0 then return 0 end
return endMS / 1000 - GetTime()

目标施法完成的剩余秒数。

-- 游戏内置「辅助作战」推荐的下一技能 ID,零插件依赖
return C_AssistedCombat and C_AssistedCombat.GetNextCastSpell() or 0

游戏内置推荐的下一个技能 ID。仅在对应 API 存在时可用;需要比较或作表键时先经 SN 并校验类型,完整动态宏用法见动态宏与完整实例。

-- 未装 Hekili 时恒 0
return SuperDPS.HekeliPrimary

Hekili 插件当前首推荐技能 ID。

参数:myvar

-- 读共享表:宏或初始化代码写入 全局名.Prop["名字"] = 值(全局名默认 MyDps),
-- 此属性按名字读回。值可能为受保护值:直接返回,不可比较或运算
if not arg1 then return 0 end
return SuperDPS.Prop[arg1]

读取共享值表中任意名字的值——宏或初始化代码写入,属性按名读回,任何自定义状态都能经它送回面板。

编辑器提供剩余、总时长、已过时间、开始/结束时间、剩余/已过比例、层数、存在状态与驱散类型。只支持 player 增益及 target 敌对减益;选择库条目后由生成器自动注册,无需手写初始化。层数为 0 不等于不存在,应使用 present。自施减益的来源限制仍使用原有逻辑。

remaining, duration, elapsed, startTime, endTime, remainingPercent, elapsedPercent, applications, present, dispelType

普通数值属性默认保留两位小数。坐标或朝向需要更多精度时,在初始化代码中调用 SuperDPS.SetPropertyPrecision("朝向", 6),名称须与属性名完全一致。可选 0–6 位小数;传 nil 恢复默认。显式精度最多显示 16 个字符(包含负号和小数点),超长会判为无效。秘密值保持原有两位小数渲染方式;这不是无损 float64 传输。

.wa1 的每个属性行还可写可选字段 precision(整数 0–6,null 使用默认精度)。新版客户端在导入、导出和云端保存时保留该字段,在初始化代码之前应用,因此初始化中的 SetPropertyPrecision 可覆盖它。需要朝向误差低于 0.001 弧度时,建议至少使用 4 位小数。