
SpellEfficiency
《魔兽世界:无限》:打开法术书时,在侧面板列出每个法术每个等级的效率指标,辅助法系/治疗做技能等级取舍(downranking)。
查看大图SpellEfficiency 法术效率
《魔兽世界:无限》插件:打开法术书时,在侧面板列出每个法术每个等级的效率指标,辅助法系/治疗做技能等级取舍(downranking)。
数值不自己套公式,而是读取法术书本身显示的计算后结果(已含天赋、装备、等级、光环),插件只做文本解析和除法——属性或天赋怎么变都不失真。
主要功能
- 七列指标:
名称(等级) | 消耗 | 效果(均) | DPM | DPCT | HPM | HPCT- DPM = 均伤/法力,HPM = 均疗/法力(省蓝视角)
- DPCT/HPCT = 效果 ÷ max(施法时间, GCD 1.5s)(省施法时间视角,瞬发按一个 GCD 计)
- DoT/HoT 按每跳 × 跳数折算总值;图腾按 持续 × 攻速;闪电之盾按 充能 × 触发率
- 点击表头排序:DPM/DPCT/HPM/HPCT 四列可点,首点由大到小、再点同列翻转方向、点别的列切换排序键;当前排序键高亮并带 ▼/▲ 箭头
- 默认折叠:只显示 20 个有数值的法术,无数值的(buff/功能技)隐藏;底部「展开全部」切换显示全部
- 自动刷新:跟随法术书显隐;换装/属性/冷却/天赋变化时数值自动重算(法术书关闭期间零计算,事件防抖合并)
开发者:Hook 实时排序数据
主组件对外暴露排序完成后的数据,便于基于数值开发新功能(高亮最优等级、动作条提示、插件联动等):
SpellEfficiency.Hooks:Register("OnDataReady", function(ordered, ctx)
-- ordered: 排序后的行表(折叠态为前 20 行)
-- row.item = { slot, spellID, name, rank, isPassive }
-- row.c = { manaCost, avg, dpm, hpm, dpct, hpct, kind }
-- row.index = 法术书原始顺序(同值排序的稳定键)
-- ctx = { expanded, sortKey, desc, total, keyedCount }
for _, row in ipairs(ordered) do
-- 例如:找出当前排序下效率最高的法术
end
end)
"OnDataReady":SidePanel 每次排序完成、渲染前触发(行数据只读)"OnSnapshotRebuild":法术快照重建完成,参数 snapshot- 每个 hook 独立 pcall 隔离,单个报错不影响主流程;
Unregister(name, fn)可注销 - 用法:在本插件之后加载的任意代码(如你自己的小插件)注册即可
命令
/sef:开关侧面板/sef reset:强制刷新缓存/sef debug:打开可复制的诊断窗口(接口状态、法术明细 + 原始描述、 10 例解析自检)——核对数值/反馈 bug 时用
运行环境
- 目标客户端:魔兽世界无限 B测(wow_classic_beta,build 1.60.1.70124,
## Interface: 16001) - 接口依据:warcraft.wiki.gg - Spellbook 及 C_SpellBook / C_Spell 各 API 页
- 兼容:
16001为代码覆盖目标;11509(经典旧世)同套 API,未实测
目录结构
SpellEfficiency/
├── SpellEfficiency.toc # 清单,加载顺序:Core → Modules
├── Core/
│ ├── Init.lua # 入口:插件表、SavedVariables、斜杠命令、诊断报告
│ ├── Locale.lua # 本地化字符串(zhCN 默认,enUS 回退)
│ ├── ApiCompat.lua # 运行期接口探测 + 法术书枚举封装
│ ├── Events.lua # 统一事件分发、防抖
│ └── Hooks.lua # 扩展钩子(OnDataReady / OnSnapshotRebuild)
├── Modules/
│ ├── SpellIndex.lua # 法术书结构快照(法术 × 等级列表)
│ ├── ValueExtract.lua # 消耗/效果数值提取(含 10 例内置自检)
│ ├── Calc.lua # DPM/DPCT/HPM/HPCT 计算与 revision 缓存
│ ├── SidePanel.lua # 锚定法术书的面板 UI(排序/折叠/展开)
│ ├── Refresh.lua # 刷新策略:事件 → 脏标记 → 可见时重建
│ └── DebugView.lua # 可复制的诊断窗口
├── Scripts/deploy.ps1 # 部署到客户端 AddOns 目录
├── Scripts/package.ps1 # 打包发布 zip(仅 toc + Core/Modules 的 lua + Media/*.tga)
├── Scripts/make-icon.ps1 # 渲染图标(GDI+ 生成 Media/icon.png + icon.tga)
├── Media/icon.tga # 插件图标(toc IconTexture 引用)
├── Media/icon.png # 图标预览(README 用,不进包)
└── docs/ARCHITECTURE.md # 架构设计
正在加载版本记录…
- 正在加载更新日志…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。