内置属性与示例
以下列出 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 endreturn 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(正式服)就直传,可能受保护:直接返回,不可比较或运算-- 没有该接口(怀旧服)则消毒后相除,受保护值归 0if UnitPowerPercent then return UnitPowerPercent(arg1, arg2) endlocal 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 endreturn p / m * 100资源百分比(0~100)。正式服直传 UnitPowerPercent,怀旧服消毒后相除——演示按接口是否存在分流。
-- 战斗中按 1、脱战按 0return 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 = 0for i = 1, 40 do local u = "nameplate" .. i if UnitExists(u) and UnitCanAttack("player", u) then n = n + 1 endendreturn 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 endreturn info.isActive and not info.isOnGCD技能是否就绪(不在冷却、不在公共冷却)——自由档范本。
-- 61304 = 公共冷却专用查询 IDlocal 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")目标身上某减益的层数。
自施减益剩余
Section titled “自施减益剩余”参数: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 endexpire = SuperDPS.SN(expire, "lib.mydotremain")if expire == 0 then return 0 endreturn expire - GetTime()仅由你施放的减益剩余秒数,用于 DoT 补刷判断。
参数:target
-- 单位参数可填:player/target/focus/pet/mouseover/targettarget,-- 或 party1-4/raid1-40/boss1-8/arena1-5/nameplate1-40-- 正在施放/引导的法术 ID(打断判断),没在施法按 0local id = select(9, UnitCastingInfo(arg1))if not id then id = select(8, UnitChannelInfo(arg1)) endreturn 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)) endendMS = SuperDPS.SN(endMS, "lib.castremain")if endMS == 0 then return 0 endreturn endMS / 1000 - GetTime()目标施法完成的剩余秒数。
-- 游戏内置「辅助作战」推荐的下一技能 ID,零插件依赖return C_AssistedCombat and C_AssistedCombat.GetNextCastSpell() or 0游戏内置推荐的下一个技能 ID。仅在对应 API 存在时可用;需要比较或作表键时先经 SN 并校验类型,完整动态宏用法见动态宏与完整实例。
Hekili推荐
Section titled “Hekili推荐”-- 未装 Hekili 时恒 0return SuperDPS.HekeliPrimaryHekili 插件当前首推荐技能 ID。
参数:myvar
-- 读共享表:宏或初始化代码写入 全局名.Prop["名字"] = 值(全局名默认 MyDps),-- 此属性按名字读回。值可能为受保护值:直接返回,不可比较或运算if not arg1 then return 0 endreturn SuperDPS.Prop[arg1]读取共享值表中任意名字的值——宏或初始化代码写入,属性按名读回,任何自定义状态都能经它送回面板。
原生光环字段
Section titled “原生光环字段”编辑器提供剩余、总时长、已过时间、开始/结束时间、剩余/已过比例、层数、存在状态与驱散类型。只支持 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 位小数。