SkyHook - 一个基于DSD的xTranslator XML加载器先读这里SkyHook 是一个非官方的修改项目,源自
动态字符串分发器 由 SkyHorizon / SkyHorizon3 制作。
这是
不 动态字符串分配器。
这就是
未 DSD替代品。
这就是
不 保证翻译你游戏中的每一段文本。
使用SkyHook即表示您同意以下取舍:- 性能低于预翻译插件或专用分发器。
- 某些翻译文本可能缺失。
某些XML文件可能因插件未激活、记录无法解析或其它模组先行更改文本而无法生效。
你可能需要阅读SkyHook.log并自行排查XML/加载顺序问题。
如果你想要最安全的标准配置,请使用原版DSD或合适的翻译插件。SkyHook是为那些无论如何都想尝试运行时XML/TXT翻译的人准备的。
SkyHook 的作用SkyHook从以下位置加载xTranslator的SSTXMLRessources XML文件:
Data/SKSE/Plugins/SkyHook/*.xml
它还可以加载简单的TXT词典,并从以下位置挂钩UI文本键:
Data/SKSE/Plugins/SkyHook/*.txt
此Mod通过SKSE插件在运行时应用翻译。其配置适用于《天际》特别版(SE)和周年纪念版(AE)。此构建不支持VR版本。
快速安装安装SKSE。
安装地址库一体化(所有游戏版本)
像安装普通SKSE插件一样安装SkyHook。
将xTranslator XML文件放入Data/SKSE/Plugins/SkyHook/。
开始游戏。
若游戏内有内容未翻译,请查看 Documents/My Games/Skyrim Special Edition/SKSE/SkyHook.log 文件。
功能列表及其用途。剧透:
显示
功能教程:XML运行时翻译
作用:
在游戏运行时加载xTranslator XML文件。
如何使用:
导出或获取xTranslator XML文件。
2. 将其放在此处:Data/SKSE/Plugins/SkyHook/YourFile.xml
3. 确保XML包含Params/Addon。
4. 确保该插件在你的加载顺序中处于激活状态。
5. 启动游戏并查看 SkyHook.log。
SkyHook理解的XML数据:
- EDID
- 录音,例如 QUST:CNAM
- REC/@id
- REC/@idMax
- 来源
- 目的地
- sID
- 部分
在以下情况下使用:
您已经有了xTranslator XML,想要在不重新构建插件的情况下进行测试。
警告:
错误的XML、未启用的插件、不支持的记录或错误的匹配数据可能导致翻译缺失。
功能引导:无源匹配
作用:
尝试通过XML sID、活动插件记录、EDID和REC数据来匹配翻译,而无需当前游戏内文本与XML源文本一致。
如何使用:
在SkyHook.ini中:
[Runtime]
模式 = 无源模式
在这种情况下使用:
您正在游玩非英文游戏,或者您的游戏文本已被其他模组修改。
警告:
如果 SkyHook 无法解析记录身份,文本仍可能丢失。
功能教程:匹配模式
作用:
使用旧版行为,即游戏内文本必须与XML源文本一致。
使用方法:
在 SkyHook.ini 中:
[Runtime]
模式 = 来源匹配
在此情况下使用:
你正在测试一个问题,并希望严格匹配源文本。
警告:
这通常对非英语游戏更不利。如果另一个模组或语言包已经更改了文本,此模式可能会遗漏许多翻译。
功能教程:精确源回退
作用:
当无源匹配失败时,SkyHook 可尝试使用精确形式加 XML 源文本进行后备匹配。
使用方法:
在SkyHook.ini中:
[Runtime]
EnableExactSourceFallback = true
在以下情况下使用:
你想要常规的备份安全网。除非你在测试严格无源行为,否则请保持开启状态。
警告:
如果当前游戏文本不再等于XML源文本,精确源匹配将失败。
功能教程:支持TXT词典
作用:
加载简易TXT字典文件,用于额外的文本替换或手动回退。
如何使用:
将TXT文件放入Data/SKSE/Plugins/SkyHook/目录。
2. 在 SkyHook.ini 中,保留:
[InGameTextHook]
EnableTXTDictionary = true
在以下情况下使用:
您想要简单的手动文本替换或UI备用条目。
警告:
TXT字典比XML记录匹配更简单。它们很有用,但不能完全替代正确的XML数据。
功能介绍:界面文本提取
作用:
可以为UI挂接游戏内文本查找功能。
如何使用:
在.txt文件中,格式应为源文本<制表符>目标文本。例如,如果你想捕捉游戏主菜单中的“新游戏”,请在.txt中这样写:
$new<tab>你的翻译文本放在这里
或者你也可以使用Translate_ENGLISH.txt作为基础。
在SkyHook.ini中:
[InGameTextHook]
EnableHook = true
用于调试:
LogHits = true (复制复制区内的文字;这实际上是游戏所查找的原始文本。)
LogMisses = true
在以下情况下使用:
你正在尝试翻译UI文本键,这在SkyUI上也能正常工作,无需改动SkyUI本身。
警告:
此项默认关闭。也许是性价比之选。
功能教程:插件加载顺序模式(仅限MO2)
作用:
根据活动插件优先级排序XML文件,使用Mod Organizer 2中每个文件的Params/Addon部分。
如何使用:
在SkyHook.ini中:
[XML]
LoadOrderMode = plugin
优先级如何运作:
优先级更高的插件获胜。如果多个XML文件针对同一插件,则按文件名降序排列作为决胜规则。
当出现以下情况时使用此物品:
您希望行为遵循插件优先级。这是默认推荐模式。
警告:
在此模式下重命名文件并不能自由控制全局优先级。插件加载顺序才是主要规则。
功能教程:文件名加载顺序模式
作用:
让XML文件名顺序全局控制优先级。
如何使用:
在SkyHook.ini中:
[XML]
LoadOrderMode = 文件名
优先级如何运作:
文件按全局文件名升序加载。后续文件仅在与前序文件解析到同一记录槽位时覆盖前序文件。
示例:
1Update.xml在2Dragonborn.xml之前加载。
若两个文件包含相同的已解析记录槽位,则2Dragonborn.xml可生效。若2Dragonborn.xml不含该记录,则不会抹除先前1Update.xml中的翻译。
在以下情况下使用:
你想通过重命名XML文件来控制翻译优先级。
警告:
这并不会神奇地翻译更多文本。它只会在找到相同记录时,决定哪个文件优先。
功能教程:NPC模板名称缓存
作用:
有助于保持通用/模板NPC名称的翻译,如守卫名称。
如何使用:
在SkyHook.ini中,保留:
[运行]
EnableEarlyNPCFullNameIndex = true
它使用的文件:
SkyHook 可以创建或使用:
SkyHook.npc-name-cache.tsv
在以下情况下使用:
你想要更好的NPC全名覆盖率。
警告:
XML更改后的首次运行可能会进行额外扫描,因此可能会较慢。
功能教程:参考EDID索引
功能说明:
允许SkyHook索引REFR记录EDID。
使用方法:
在SkyHook.ini中:
[运行时]
EnableReferenceEDIDIndex = true
在以下情况使用:
仅在你确实需要REFR EDID匹配并知晓其原因时才使用它。
警告:
在大型模组列表中,REFR记录非常庞大。除非你在测试,否则请关闭此选项,因为它可能影响性能。
功能教程:调试信息前缀
用途:
为调试用途,在替换字符串中添加表单/插件前缀。
如何使用:
在SkyHook.ini中:
[日志]
EnableDebugInfo = true
在以下情况下使用:
你需要查看替代品的来源。
警告:
除非你想在游戏中看到调试文本,否则正常游玩时请勿使用此功能。
功能教程:通用调试日志
功能说明:
将更通用的SkyHook调试信息写入日志。
如何使用:
在SkyHook.ini中:
[日志]
EnableDebugLog = true
在此使用:
你正在报告一个Bug,或想查看该模组加载方式为何与预期不符的原因。
警告:
调试日志可能会很冗长。
功能教程:运行时遗漏日志
作用:
记录无来源的运行时缺失,例如遗漏的 INFO NAM1 或 QUST CNAM 文本。
如何使用:
在SkyHook.ini中:
[日志]
EnableRuntimeMissLog = true
在以下情况下使用:
你知道某段文本应该被翻译,但它仍是英文或缺失。
警告:
这与TXT界面的命中/未命中日志不同。
功能教程:sID解析器日志
功能说明:
在索引XML文件时记录XML sID解析器的命中和未命中情况。
如何使用:
在SkyHook.ini中:
[日志]
EnableSIDResolverLog = true
对于极其详尽的成功匹配:
EnableSIDResolverHitLog = true
在以下情况下使用:
您正在调试XML sID条目是否解析为活动的插件记录。
警告:
EnableSIDResolverHitLog 的日志非常冗长。仅建议在短期测试运行时启用。
功能教程:XML加载顺序日志
功能说明:
记录详细的XML加载顺序。
使用方法:
在SkyHook.ini中:
[日志]
EnableXMLLoadOrderLog = true
在以下情况下使用:
你需要弄清楚为什么一个XML文件会优于另一个。
警告:
这仅记录优先级,不会更改优先级。
功能教程:挂钩冲突保护
功能说明:
如果 DSD 或其他 SKSE 插件已经占用了某个挂钩点,SkyHook 将跳过该冲突挂钩,而不会对其进行修补。
如何使用:
在SkyHook.ini中,保留:
[兼容性]
EnableHookConflictGuard = true
如果已加载Dynamic String Distributor,请保留:
DisableDSDOverlapWhenDetected = true
日志中查看更多详情:
EnableDetailedHookConflictLog = true
在以下情况下使用:
一直如此。比起和其他DLL争抢同一个钩子,这样更安全。
警告:
跳过的钩子意味着某些SkyHook功能可能无法正常工作。这也是SkyHook不能替代DSD的另一个原因。
已知限制与预翻译插件相比,预期性能会有所降低。
- 某些设置中缺少翻译文本是预期行为。
XML 不正确、缺少 Params/Addon、插件未激活,或记录数据不受支持,都可能导致漏检。
- 在SkyHook处理文本之前,其他模组可能会修改它。
- 兼容性保护程序在其他插件已拥有钩子时,可跳过这些钩子。
此版本不支持VR。
制作人员名单SkyHook 是源自 Dynamic String Distributor 的非官方修改项目。完全归功于SkyHorizon / SkyHorizon3开发的动态字符串分发器:动态字符串分发器源仓库动态字符串分发器Nexus页面SkyHook 还支持与SKSE、CommonLibSSE-NG、MergeMapper API、SimpleIni、Boost.Unordered、zlib以及Microsoft XmlLite/Shlwapi平台库进行构建或集成。这些库各自的许可证和条款仍然适用。许可与再分发SkyHook 以 GPL-3.0 协议分发,属于修改后的源码发布版本。若您分发 SkyHook 二进制文件,请同时提供该确切版本对应的源代码。
源 空中钩索要从多个ESM/ESP文件中一次性导出一批.xml文件,你可能需要使用这个版本的Zedit。
批量XML导出GitHub
用法:
下载发布版本,或从源码自行编译。
加载你需要的插件,然后右键选择“Automate”,选中skyhook的script.js。
所有XML输出将位于Data\SKSE\Plugins\SkyHook\_zedit_export文件夹中,如果使用MO2,则位于覆盖文件夹中。