Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QueFrame — 魔兽世界 12.1 单位框架

把 Z-Perl(X-Perl 的续作,作者 Resike)移植到 魔兽世界 12.1(Midnight)正式服 的分支:重新命名、重做 12.x 兼容层,并修完"机密值 (Secret Values)"机制带来的一堆显示问题。

A rebranded port of Z-Perl (the continuation of X-Perl by Resike) to WoW 12.1 retail, with a rewritten 12.x compatibility layer for the Secret Values system.


能用的功能

框体 状态
玩家 / 目标 / 目标的目标 / 焦点 / 宠物 ✅ 职业颜色、精确血量与法力数值、百分比、头像、增益减益
小队 / 小队宠物 ✅ 同上
团队 / 团队宠物 ✅ 同上
团队工具窗(团队助手 / 主坦 / 花名册 / 增益监控) ⚠️ 已移植,仍在逐个验证
其他 施法条、仇恨指示、距离检测、点击施法、鼠标提示、完整选项面板

安装

  1. 下载本仓库(Code → Download ZIP,或 git clone)。
  2. 把 QueFrame、QueFrame_* 这些文件夹整个放进 World of Warcraft/_retail_/Interface/AddOns/。
  3. ⚠️ 新装的插件必须退出到角色选择界面再进入游戏(或重启客户端)—— /reload 不会扫描新目录,这是暴雪的设定。
  4. 游戏内输入 /que 打开设置面板;/que layout 会输出各框体与血条/法力条的实际尺寸(显示异常排查用)。

12.x 移植要点

暴雪在 12.0 引入了"机密值(Secret Values)":战斗/受限场景下 UnitHealth、UnitPower、 UnitClass、UnitIsPlayer 等会向插件的执行路径返回机密值。机密值不能比较、不能做算术、 不能当表键,否则立刻抛 Lua 错误。

本分支的处理方式:

  • 能显示,但不算:FontString:SetFormattedText 是官方允许接收机密值的接口,所以血量/法力 数值是原始值直接显示(3284/3284),不是推算值。百分比通过引擎的 curve (C_CurveUtil.CreateCurve(),0→0 / 1→100)原生换算,避免自己乘 100。
  • 职业颜色:只在读到明确的 UnitIsPlayer == true 时上职业色;读到 false(怪物)不上; 读不到时只信"这个框体曾经确认是玩家"(按 GUID 校验),宁可素色也不给怪物穿一件错的职业色。
  • 12.x 删掉的 API 逐个补兜底:SetPortraitToTexture(已删除)、GetSpellInfo(移到 C_Spell)、SecureAuraHeaderTemplate(移除)等。
  • local X = X 这种加载期全局捕获会静默拿到 nil,一调用就抛错并中断该函数后续所有语句 —— 这类地雷已全插件扫描清理。
  • 依赖战斗日志的特性(部分高亮/施法追踪)在 12.x 对插件不再开放,已做降级。

修复记录

  • 目标框血条 / 蓝条不再"填不满框体":QueFrame_StatsFrame_Setup 现在能识别"被传入 statsFrame" 的调用(QueFrame_Globals.xml 中 statsFrame 模板自身的 OnLoad 就是这么调的)。此前该调用会立刻 return —— 谁也没为它做过初始排版。每次更新都会重排的框体(玩家 / 目标的目标 / 焦点)看不出来, 而目标框只在"蓝条显隐变化"或"打开选项面板"时才重排,于是整场停在 XML 模板的原始几何 (160×40 的框里 112×10 的条、上下各空 9px)。现在所有框体创建时都会按当前模式排一次。
  • 蓝条显隐后的高度同步:12.x 机密值分支里 SetManaType 显示蓝条后直接 return,现在补上 框体高度与重排,蓝条出现时堆叠关系正确。
  • 暴雪小队框体的隐藏:QueFrame_KeepBlizzFrameHidden 内部把函数当表索引 (QueFrame_KeepBlizzFrameHidden[frame])会抛错并中断该函数后续语句,导致 OnShow 隐藏钩子 从未装上(BugGrabber 里连报 10 次)。改用独立注册表。
  • slash 帮助文本:把残留的 /xperl 改为 /que,并补上 /que layout 说明。

已知限制

  • 数值文字是精确原始值,但读取仍受暴雪限制:在受限场景(副本 / 团队 / 战场 / 竞技场 / 部分战斗) 插件可能读不到部分数据,此时会退化为"只显示能拿到的部分",不会显示错误数字。
  • 依赖战斗日志的功能(HoT / 盾高亮等)在 12.x 不可用。
  • 部分职业的职业能量条(连击点 / 氤氲 / 符能…)使用了暴雪的模板,12.x 上模板会对插件路径产生污染, 已按职业降级处理(对应职业的能量条可能不显示)。
  • 团队工具窗(RaidAdmin / RaidHelper / RaidMonitor)是移植版,仍在验证中。

许可与署名

  • 上游:Z-Perl(X-Perl 的续作,作者 Resike)。
  • 本分支:QueFrame,由 Que 完成 12.1 移植与修复。
  • 许可:GNU GPL v3(沿用上游许可,全文见根目录 LICENSE)。 依 GPL v3:保留原作者版权与署名、本项目同样以 GPL v3 发布、再分发时请一并保留 LICENSE 与署名,并注明所做的修改。
  • 内置第三方库(LibStub、CallbackHandler-1.0、LibHealComm-4.0、LibClassicDurations 等) 遵循各自的许可。

English summary

QueFrame is a port of Z-Perl (the continuation of X-Perl by Resike) to World of Warcraft 12.1 retail (Midnight), rebranded and with a rewritten compatibility layer for the 12.x Secret Values system.

Highlights: class colours, exact health/power values and percentages (secret values are handed straight to the widget formatter instead of being computed), removed 12.x APIs shimmed, and every load-time global capture that had silently become nil audited and fixed.

Licensed under GPL v3 (as upstream). Original credit: Resike / X-Perl / Z-Perl.

About

WoW 12.1 UnitFrames — a port of Z-Perl (X-Perl) by Resike, with a rewritten 12.x Secret Values compatibility layer

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages