扩展物品变体 (DAOLib)

扩展物品变体 (DAOLib)

(测试版)突破物品变体的255限制,目前仅适用于胸甲、靴子和手套。

扩展物品变体 - DAOLib

版本 0.0.2 - 公开测试

v0.0.2。在《龙腾世纪:起源》中,为已装备的躯干、手套和靴子模型使用大于 255 的变体 ID。 此 DAOLib 插件将物品模板映射到扩展的变体行 ID,同时保留每个物品原生的 BYTE 变体作为回退。 它不会拓宽原始 UTI 字段,也不会自动转换现有模组。

已测试功能

  • 躯干护甲、手套和靴子的扩展模型变体。
  • 使用 ID 44、300、556 和 65536 的测试物品。
  • 三个受支持装备槽位的独立变体选择。
  • 游戏测试中报告了不同的已装备模型,并在区域切换和保存后保持持久。

300 和 556 共享相同的低字节,证明可以使用完整 ID 来选择它们的模型。ID 65536 还测试了超出 16 位的值。 65536 是已测试的最高 ID,并非确认的最大值。 这是一个公开测试版本,游戏结果来自单次安装。请在你的安装上重复装备、区域切换和保存/重新加载测试。

要求

  • Windows 上的《龙腾世纪:起源》1.05.13263.0。
  • DAOLib 0.5.0,经过测试的加载器版本,使用插件 API 2。
  • 匹配的 DAOAddressLibrary 地址文件,以及此版本签名检查所接受的代码布局。

此版本使用经过验证的 GOG 布局代码签名。测试安装使用了一个带有修改头部的可执行文件及其匹配的地址文件。 其他安装尚未经过独立验证。此版本的签名不支持不同的 EA 布局。DAOLib 自身对多个存储的支持并不确立此插件的兼容性。 下载内容不包含 DAOLib 加载器或游戏可执行文件。

安装

在安装或替换 DLL 之前,请完全关闭游戏。

  1. 解压英文测试压缩包。
  2. 将其中的 bin_ship 文件夹复制到你的游戏安装文件夹。

插件文件应最终位于此处:

<Game folder>\bin_ship\daolib\plugins\extended_variations
extended_variations.dll
extended_variations.ini
  1. 用于测试和作为模板使用时,将压缩包 override 文件夹内的 zz_IV_Probe2 复制到:
Documents\BioWare\Dragon Age\packages\core\override

提供的 INI 已启用,并已为包含的测试物品配置好。 如果更新较早的测试版本,请替换现有插件文件夹中的 DLL 和 INI。不要以另一个文件夹名称安装第二份副本。在替换 INI 之前,请保留任何自定义映射。 DLL 和测试资源具有不同的安装目标位置。 将所有内容安装到 Documents/override 将无法正确安装原生插件。

在游戏中测试

使用单独的测试存档和开发者控制台。 一次运行一条以下命令:

runscript give_ivtorso
runscript give_ivgloves
runscript give_ivboots

每条命令会向主角的物品栏添加四件具名测试物品。 启用插件后,预期的已装备模型为:

  • 44: 模型 A - 对照。
  • 300: 模型 B。
  • 556: 模型 C。
  • 65536: 模型 D。

这分别适用于躯干护甲、手套和靴子。 在测试手套和靴子时,请保持装备一件护甲躯干。 服装类型的躯干通常会隐藏那些独立模型。 尝试混搭套装,例如躯干 300、手套 556 和靴子 65536。一次更换一件,并检查其他部件是否保持其模型。然后切换区域,保存到单独的槽位并重新加载。 作为对比,在插件 INI 中设置 Enabled=0 并重启游戏。每种装备类型的全部四件物品届时都应使用模型 A。 即使禁用插件,物品名称仍然不同。 请比较已装备的模型,而不是名称或物品栏图标。 测试片段在 armor_light_variation、gloves_medium_variation、boots_medium_variation 中占用 ID 44、300、556 和 65536。 测试期间,避免其他片段在同一表中使用这些 ID。

模组作者说明

  1. 将你的扩展 ID 添加到由物品的 BaseItem 所选择的变体 GDA 表中。
  2. 将 UTI 的原始 ModelVariation 字段保留为 BYTE。为该物品类型使用一个现有的、可用的回退变体,范围在 1 到 254 之间。 不要将扩展 ID 放入 UTI 字段,也不要将该字段改为 WORD 或 DWORD。
  3. 在 extended_variations.ini 的 [Mappings] 下添加 UTI 模板名称,不带 .uti 扩展名,例如:
[General]
Enabled=1
[Mappings]
my_armor=65536
my_gloves=300
my_boots=556

这些条目分别指 my_armor.uti、my_gloves.uti 和 my_boots.uti。请将示例名称替换为你的实际模板名称。 行首的分号会将该行注释掉。活动映射不得以 ; 开头。 更改映射或表后请重启游戏。 同一变体表中的物品仍需要唯一 ID,除非有意共享模型。不同的变体表可以使用相同的数字 ID。 请将完整的资源文件名(包括扩展名)保持在 31 个字符以内。

范围与限制

  • 仅限已装备的躯干、手套和靴子模型。
  • 图标、材质、声音、物品属性、其他装备槽位和工具集限制未扩展。
  • 现有模组需要合适的变体表和模板映射才能使用扩展 ID。
  • 测试安装中存在 DAFix 和 Full Body Robes;尚未确立与每种模组组合的兼容性。
  • 在启用钩子之前会检查可执行文件兼容性。不要绕过签名或地址文件拒绝。

故障排除与错误报告

日志位于此处:

Documents\BioWare\Dragon Age\daolib
extended_variations.log
loader.log

所有物品不可见: 检查三个已修正、短名称的 GDA 片段是否已安装到 Documents/override。 所有物品看起来相同: 检查 Enabled=1、实际模板映射、DLL 安装位置以及游戏是否已完全重启。 手套或靴子不显示: 使用能显示这些部件的护甲躯干。服装躯干通常会隐藏它们。 报告问题时,请包含两个日志、你的游戏可执行文件/商店版本、受影响的模板和槽位、扩展 ID、回退行,以及重新装备或重新加载是否会改变结果。

禁用与卸载

要禁用扩展,请设置 Enabled=0 并重启游戏。 要移除插件,请关闭游戏并删除:

<Game folder>\bin_ship\daolib\plugins\extended_variations

从 Documents/override 中移除 zz_IV_Probe2 以移除诊断资源。在使用仍需显示测试物品的存档时,请保留这些资源,或返回到创建它们之前的存档。移除文件不会从存档中移除已创建的物品。

源码、权限与致谢

相应源码以 Extended_Variations_0.0.2_SOURCE.zip 形式提供,包括构建说明、SDK/解析器源码、MinHook 源码和测试。 插件代码按 GPLv3 条款分发,并保留第三方声明。原始游戏数据保留其自身权利,不按插件的 GPL 重新授权。

  • Whocares66-Dev 及贡献者 - DAOLib
  • Whocares66-Dev 及贡献者 - DAOAddressLibrary
  • Tsuda Kageyu 及贡献者 - MinHook
  • BioWare - 《龙腾世纪:起源》及诊断物品所引用的原版资源。

这不是那些项目的官方发布。 AI 披露: 实现和英文文档是在生成式 AI 协助下制作的。