前置 Mod
详情

这个 mod 的诞生,是因为我已经无法再为向 True Directional Movement 添加更多不相关的 HUD 元素找到合理的理由。我决定将所有 HUD 组件移到一个单独的 mod 中,同时对它们进行重做和改进。该插件也将作为一种枢纽,供我(或其他人)其他想要添加和控制 HUD 小组件的 SKSE 插件使用。
请原谅这个俗气的名字,但我实在无法抗拒它与 True Directional Movement 在名字上的联系。

- 可为任意数量的角色显示浮动信息条——敌人或队友。
- Boss 生命条
- 可移动/缩放的玩家生命/法力/耐力条、龙吼冷却指示器和组合附魔充能计
- 最近拾取日志
- 供其他插件使用的 API
- 可由其他插件使用的特殊条,用于表示眩晕进度或当前平衡值等数值
- 一切都通过 SKSE 完成,可随时安装/卸载
- 模块化且灵活——所有功能都可通过 MCM 禁用和配置


信息条是一种小型动画小组件,用于显示敌人生命值,并且可选显示其他可能感兴趣的信息。所有功能都可以按角色类型(当前目标、敌人、队友和其他)分别开关。
- 名称
- 左侧指示器,可以包含灵魂图标(由 Mern 制作),表示所需的灵魂石等级;或一个根据相对难度着色的极简方块;或简单地以数字显示角色等级
- 资源条(法力/耐力)——可配置为仅在资源偏离默认值时显示
- 最近伤害计数器
- 特殊条——详见下文小节
默认设置会以这样的方式配置:你的当前目标(原版目标条中会显示在罗盘下方的目标,或 True Directional Movement 目标锁定的当前目标)拥有更宽的生命条,并启用名称和灵魂指示器;而其他敌人则显示更小、更极简的信息条。


你遇到的某些敌人会被自动检测为 Boss,mod 会以屏幕上一个大型静态条的形式显示其生命值。
Boss 条与浮动信息条共享许多功能,但它们可以独立配置。屏幕位置可通过 MCM 自由更改,并且可以选择在 Boss 条可见时将字幕向上移,或禁用罗盘,以便条能在你的 HUD 上找到合适的位置。
为方便起见,有两个设置预设可供加载:一个将 Boss 条设置为替代罗盘(并带有一个小型龙吼冷却指示器来弥补隐藏的罗盘),另一个将条设置在屏幕底部。任何功能都可以单独配置,预设只会加载一些默认设置值。
可配置在多 Boss 战斗期间同时显示的 Boss 条最大数量。如果你同时面对更多 Boss,则会形成队列;当前显示的某个 Boss 被击败后,另一个会顶替其位置。
Boss 检测是一个灵活的系统,允许用户配置并创建兼容性“补丁”。它使用放置在 Data/SKSE/Plugins/TrueHUD 中的 .ini 文件。(为了保持兼容性,放置在 Data/SKSE/Plugins/TrueDirectionalMovement 中的 .ini 文件也会被读取) 它会读取此文件夹中的所有 .ini 文件,因此你可以拥有多个互不冲突、无需手动合并的 .ini 文件。欢迎创建并上传自定义 .ini 文件,为默认无法正确处理兼容性的 mod 添加支持。默认配置文件应该能处理大多数情况,并且希望它是不言自明的。
Boss 检测逻辑如下:
- 检查 NPC 黑名单。如果 NPC 的 BaseID 被包含在内,那么即使该 NPC 符合以下任何条件,也不会被视为 Boss。
- 检查种族。如果种族被包含在 .ini 中,目标将被视为 Boss。默认情况下,这主要包括龙和龙祭司。
- 检查 NPC 的 BaseID。如果它被包含在 .ini 中,目标将被视为 Boss。我在其中添加了几个有名字的敌人,不过我相信可能漏掉了一些。
- 检查 NPC 是否定义在当前 Location 的、已在 .ini 中配置的 LocRefTypes 中。默认情况下,我添加了 'Boss' LocRefType。在原版中,它用于标记地牢尽头的 Boss 敌人。像 Vigilant 这样的 mod 似乎会将大多数(如果不是全部)Boss 正确添加为 Boss LocRefType,因此它们应该会被自动支持。然而,Bethesda 也把像商人这样的 NPC 标记为其住所的 Boss,所以当你攻击他们时会出现 Boss 条。这可能并不理想,因此我添加了黑名单。不过除了添加一个商人作为例子外,我并没有填充它。
如果你想向 .ini 中添加内容,不要编辑插件自带的基础 .ini,而是制作你自己的 .ini文件(最好使用唯一名称,以免与其他文件冲突),并且只包含新增内容,并带有 [BossRecognition] 标头。插件会读取文件夹中找到的所有 .ini 文件,并将所有内容合并在一起。
如果你想禁用基础 .ini 中的某些记录,可以在自定义 .ini 中将它们添加为 'RemoveRace'、'RemoveLocRefType'、'RemoveNPC' 和 'RemoveNPCBlacklist'。
一个包含商人之类内容的黑名单可在这里获取。如果我的描述不够清楚,你也可以把它当作一个单独自定义 .ini 的示例。


玩家小组件由生命、法力和耐力条、动画龙吼冷却指示器以及附魔充能计组成。它旨在替代原版 HUD 计量条,具有改进的动画、可开关的“懒人”幻影条,以及可配置的位置和宽度。
为方便起见,有两个设置预设可供加载:
- 类似原版——条的位置和宽度与原版相同。
- 组合——类似其他游戏,条垂直堆叠,其宽度根据最大生命/法力/耐力缩放,并带有动画龙吼指示器。
任何功能都可以单独配置,预设只会加载一些默认设置值。这些元素可以设置为始终显示、仅在战斗中显示,或在相关数值变化时动态显示。
耐力条可以改为显示坐骑的耐力,并带有 Mern 制作的漂亮边框图标。
这些条完全支持生存模式惩罚,以及耐力/法力耗尽时的闪烁事件。


你获得的物品会在最近拾取列表中短暂显示。和往常一样,MCM 中有大量可访问的设置。该小组件可以设置为在某些菜单中也可见,例如制作菜单或交易菜单。原本通知你物品已加入背包的消息可以选择跳过。
物品图标需要安装 SkyUI。如果没有安装,它们将不会显示。


特殊条是一项需要其他插件使用的功能。它是一个额外条,可以显示在生命条上方。使用本 mod API 的插件可以请求控制特殊条,并提供用于返回该条当前值/最大值的函数。例如,它可以像《战神》或《刺客信条:英灵殿》等游戏中的眩晕条一样使用。
如果你的 mod 使用了该功能,请告诉我,我会在下面列出:

- SKSE
- Address Library for SKSE Plugins
- SkyUI,用于在 Mod Configuration Menu 中访问插件设置,以及显示拾取图标
- MCM Helper,用于使 Mod Configuration Menu 正常工作
将压缩包解压到游戏 Data 目录,或使用你选择的 mod 管理器。

我尽量保持插件的模块化。例如,如果你只使用 Boss 条,就不必担心与无关功能的不兼容。
- 技术上兼容任何原版 HUD mod/HUD 材质替换。新的小组件完全不会受到影响。唯一可能的不兼容情况是,另一个 mod 控制原版小组件(罗盘或生命/法力/耐力及附魔计量条)的可见性时,可能导致本 mod 隐藏的小组件重新出现。
- 与添加新 HUD 功能的 mod 完全兼容,例如 moreHUD。
- 应该与所有其他内容兼容。
一些代码片段已从 True Directional Movement 移过来,但绝大多数代码是全新的。我相信有些问题可能被我遗漏了。报告任何问题时,请清楚地描述它们,最好附上重现方法。如果发生崩溃,请提供崩溃日志。对于 SKSE 插件来说,它们实际上非常有用。
至于功能请求,欢迎提出建议,但请理解这最终是我对这个 mod 的构想,我可能不同意你的想法。请把建议当作建议,不要假设我一定会实现它们。

-
传奇版?
抱歉,没有。特别版的引擎稳定得多,而且像 CommonLibSSE 这样的框架让高级插件的实现容易得多。我们应该向前看了。不过,如果你愿意接受挑战,欢迎尝试将 mod 移植到 LE。我宁愿把时间花在其他事情上,也不愿支持过时版本的游戏。
-
我可以在游戏过程中安装/卸载它吗?
可以。该插件不会对你的游戏产生持久影响,可以随时安装/卸载。
-
在 MCM 中更改选项后,小组件行为不正确。
我尝试让小组件兼容在运行时更改主要设置,但如果出现任何混乱,重置小组件应该能修复。保存并重新加载应该足以移除所有小组件。
-
MCM 是空白的!
你的 MCM Helper 或本 mod 没有正确安装。,
-
设置被重置了!
不要删除 MCM Helper 创建的 .ini 文件(如果你使用 Mod Organizer 2,它默认会出现在 override 文件夹中)。
-
使用本 mod 时我的 HDT 物理冻结了!
这是由旧版 HDT 引起的。
-
使用本 mod 时我无法与菜单交互!
这是由旧版 Skyrim Souls 引起的。请获取最新更新。
-
我认为这个 mod 导致我的游戏崩溃了!
请发布 .NET Script Framework / Crash Logger 崩溃日志。当崩溃实际上是由这样的 SKSE 插件引起时,它非常有用。否则没有更多信息我也无能为力。
请阅读 mod 描述,并仔细探索 MCM 中的选项。有几次我被问到某个功能,而它早已作为选项在 MCM 中实现了。

-
对于想要重新贴图这些小组件的艺术家——请随意!我已将所有资源放入 TrueHUD_Assets0.swf 文件。欢迎修改并重新分发它。源 .fla 文件在我的 GitHub 上。我会尽力在未来的更新中不再改动这个文件;如果我在更新中添加更多资源,我会创建 TrueHUD_Assets1.swf,依此类推。
但是,请不要重新编译/重新分发 TrueHUD_Widgets.swf。我希望控制这个文件,以便能自由地修复问题和添加更多功能。 -
SKSE——有一个 API 头文件(基于 SmoothCam 的头文件),允许与本插件通信并控制某些功能。如果你想使用它但不确定如何操作,请随时提问。你可以查看 True Directional Movement 的源码作为示例,不过它也有自己的 API,所以有些不同。
-
SKSE——如果你需要绘制一些线条或形状,可以使用调试绘制 API 函数来帮助你的插件开发。
-
我计划在不久的将来为尽可能多的 API 函数添加 Papyrus 版本。
如果你是 mod 作者,并想为你的 mod 添加一些兼容性,请告诉我,我们看看能做些什么。


SKSE 团队,感谢制作 SKSE。
Ryan,感谢无价的 CommonLibSSE、CommonLibSSE plugin template,以及 QuickLootRE,我将它用作带有 UI 元素的 SKSE 插件模板。
meh321,感谢 Address Library 和尝试性的地址匹配文件,它们让移植到 AE 变得轻而易举。
Nuukem,感谢将 CommonLib 更新到 AE。
expired6978,感谢 Floating Healthbars。其中不少代码对学习如何动态添加小组件很有帮助。
Ahzaab,感谢 moreHUD。其中不少代码对学习如何动态添加小组件很有帮助。
Shrimperator,感谢 Better Third Person Selection 中的调试绘制代码,调试绘制 API 正是基于它。
Fhaarkas,感谢 SkyHUD——附魔充能计使用了 SkyHUD 的资源,并直接受到它的启发。
感谢所有分享自己工作的《天际》逆向工程师,以及所有分享其 SKSE 插件或 ActionScript 小组件源码的人。没有这些,我无法学会如何做到这一切。
Mern,感谢超棒的灵魂石图标和坐骑耐力小组件边框。
dunc001,感谢帮助我学习如何制作漂亮的小组件。
Loki,感谢测试 API。
Parapets,感谢对 MCM Helper 的帮助。
感谢 Decompiled UI 源码,让我能够仔细检查原版游戏 UI 来创建我的小组件。
mod 描述中使用了 Sovngarde 字体。



