伦尼的模组加载器(Lenny’s Mod Loader)的核心目标是提供便捷的游戏修改方式。针对《荒野大镖客 2》(RDR 2)的当前版本,它支持替换游戏中的任意文件 —— 无论是模型等流式文件,还是数据文件、字体文件等各类文件。该工具还包含完整的用户界面(UI)支持,与《侠盗猎车手 5》(GTA V)版本的功能一致。
三张截图分别展示了替换后的资源、替换后的字体,以及通过修改元文件(meta file)将瓦伦丁镇的警方响应替换为圣丹尼斯警方响应的效果。这些示例均包含在示例下载包中,详见下方 “示例” 部分了解更多信息。
安装步骤
- 将 “ModLoader” 文件夹中的所有文件复制到《荒野大镖客 2》的游戏根目录下,确保 vfs.asi 等文件与 RDR2.exe 位于同一文件夹中。
- “Mod Manager”(模组管理器)文件夹可放置在任意位置,无需放入游戏目录。
- 新模组需放入 lml 文件夹;若模组网站支持,也可点击 “通过模组管理器下载” 按钮(详见安装视频示例)。
Beta 11 版本亮点 – 数据文件合并与清单支持
本次更新新增多项实用功能:
- 大幅优化了对游戏加载初期使用的文件的覆盖支持。虽已尽力避免副作用,但如果之前可用的模组出现功能异常,请及时反馈。例如,旧版本无法替换天穹纹理(skydome textures)来修改月亮效果,感谢 @VideoTech 的测试支持。
- 数据文件加载功能允许你将对特定文件(如 assets_* 或 metapeds)的修改拆分到独立文件中,无需修改原有文件(本质是实现文件合并)。这将极大简化自定义角色模型(custom peds)等模组的制作流程,让大部分修改集中在独立文件中。需注意,该功能并非适用于所有游戏文件,仅支持内部游戏解析器允许添加内容的文件(如不支持目录文件)。此外,现已支持角色模型(peds)和地图的自定义清单文件(manifest files)。角色模型支持已通过全面测试,而地图支持需等待 CodeX 工具能生成相关文件后才能充分发挥作用。感谢 BHmaster 提供的功能示例,可在下载包中查看。
Beta 9 版本亮点
本次为维护性更新,主要修复了随机出现的 DRM 完整性崩溃问题。特别感谢 @calledme.kev 花费数十小时测试多个版本以定位问题!同时,对依赖只读数据的集合调用添加了大量缓存机制,降低了伦尼的模组加载器(LML)的性能占用。
Beta 8 版本亮点
新增多项功能,包括支持覆盖 RPF 文件中的 _manifest.ymf 和 _cache.ych 文件;改进了哈希文件(hashed files)的替换支持,现已涵盖 ymap 等更多文件类型;流式文件夹(streaming folder)现在也可将 ymap 等 pso 文件作为文本文件加载。游戏中强制要求以 pso 格式加载的大部分数据文件(如 cameras.ymt 或原型定义文件)已被修补,支持以文本文件格式加载。为提升启动性能,本次更新进行了大量重构,同时仍提供旧版本供选择,详见更新日志(changelog)了解详情。
Ymap 与 Ytyp 支持(Beta 7 版本)
本版本首次引入对 ymap(地图文件)和 ytyp(类型定义文件)的实验性支持。包含两个简单示例:通过修改 ymap 移动瓦伦丁镇周围的部分蓝色木桶(可查看酒馆后方),以及通过 ytyp 大幅提亮酒馆内部灯光(感谢 Modifiver)。对于 ymap 修改,若通过脚本卸载 imap 并修改磁盘上的文件,重新加载后即可应用更改,无需重启游戏。
Bk2 支持(Beta 7 版本)
Bink 视频文件(.bk2 格式)在旧版本中虽已技术支持,但存在部分问题。当前版本中,其命名规则需特别注意:文件名需包含两个 “.”,因为扩展名 “.bk2” 是实际文件名的一部分。例如,需将文件命名为 “movie.bk2.bk2” 才能确保正确替换,替换路径示例为 “replace\movies_0\movies\filename.bk2.bk2”。
配置文件(Beta 7 版本)
新增配置文件 lml.ini,需放置在游戏根目录下。该文件主要面向开发者,支持调整日志输出详细程度(增多或减少),方便定位需替换的文件。若将日志级别(log level)设为 0,可查看游戏加载文件的大部分请求,更易准确识别目标文件路径。需注意,许多文件仅通过哈希值(hash)而非文件名加载。若不使用流式文件夹(streaming)和替换文件夹(replace),可选择禁用以提升性能。
Ymt 支持(Beta 5 版本)
本次更新的核心亮点是支持编辑包含未知哈希值的 ymt 文件。替换步骤如下:使用 OpenIV 将 ymt 文件导出为 xml 格式,通过 install.xml 文件或替换文件夹(replace)替换原始文件。由于替换的是 ymt 文件,即使导出的文件内容为 xml 格式,也需保留 ymt 扩展名,且替换文件夹方法要求文件名与原始文件一致。现在你可通过纯文本编辑该文件,游戏加载时会自动将其识别为 ymt 文件并修复所有名称。详见内置示例了解更多操作。
若发现某文件经伦尼的模组加载器(LML)处理后仍无法正常运行(例如,通过 OpenIV 直接导出未修改的文件导致游戏崩溃),请及时反馈。目前已知 weapons.ymt 文件存在兼容问题,这并非伦尼的模组加载器(LML)的缺陷,而是 OpenIV 的导出漏洞导致部分武器标志(weapon flags)缺失。“高辊左轮手枪” 示例中的标志已手动修复,因此可正常使用,但直接从 OpenIV 导出的文件会存在该问题。已向 OpenIV 团队反馈,预计后续会修复此导出漏洞。在此之前,若需修改武器相关 ymt 文件,需手动检查文件、收集缺失的标志并在 xml 中恢复,这要求你具备一定的游戏文件结构相关知识。
Ymt 示例
下载包中包含由 @Modifiver 提供的丰富示例,涵盖游戏多方面的修改。可在示例文件夹中查看,将其复制到 lml 文件夹即可体验!
从无 install.xml 支持的旧版本升级(Beta 2 及更早版本)
本版本的伦尼的模组加载器(LML)引入了 install.xml 文件,用于指导模组加载方式。模组可按文件夹分类存放,无需再使用嵌套文件夹结构。该机制已在《侠盗猎车手 5》(GTA V)版本中验证可行,现移植至本版本。你仍可使用 lml 文件夹下的替换文件夹(replace)和流式文件夹(streaming),但模组管理器界面(Mod Manager UI)仅识别采用新 install.xml 机制的模组,因此建议将现有模组转换为新系统。仅支持 install.xml 的模组可使用 “通过模组管理器下载” 功能。详见下方示例了解新系统的使用方法。
验证文件是否替换成功
若怀疑文件未成功替换,可查看日志文件(log file),搜索与目标文件相关的条目。可能是路径设置错误导致替换失败:替换文件夹(replace)中的文件可搜索 “replaced” 关键词,流式文件夹(stream)中的文件可搜索 “adding” 关键词。
支持说明
本工具为《荒野大镖客》(RDR)系列的首个版本,可能存在较多问题,部分文件的替换效果可能不符合预期。若在替换特定文件时遇到困难,欢迎在此留言或联系我们,并提供修改后的文件及文件结构,以便我们协助排查。
安装视频
点击查看详细安装视频(含示例操作指南),感谢 @Gan Ceann 制作:
(注:原文未提供具体视频链接,需以实际提供的链接为准)
流式文件夹(stream)与替换文件夹(replace)的详细说明(旧版本)
lml 文件夹下包含两个子文件夹:“replace”(替换文件夹)和 “stream”(流式文件夹),两者均可用于文件替换,但替换文件夹功能更强大,操作也更复杂。流式文件夹可能是你在地图编辑器(Map Editor)或狂暴训练器(Rampage Trainer)中熟悉的功能,可直接加载流式文件。
流式文件夹(stream)
与其他同类工具类似,该文件夹在游戏加载时直接加载流式文件。例如,模型文件、纹理文件等可放入此处,自动替换游戏中的原有资源。若仅知道资源的哈希值(hash)而不知文件名,可将文件命名为 “0x 哈希值。扩展名”(例如,0x9E54B506.ytd 对应 w_melee_machete01+hi.ytd),工具仍能识别并正确替换。这是快速替换流式文件的便捷方式,无需关注文件在游戏目录中的具体位置,仅需确保文件名正确。
替换文件夹(replace)
该文件夹会创建整个游戏文件结构的虚拟映射,只要知道文件的完整路径,即可替换任意游戏文件。路径规则与 OpenIV 中浏览 RPF 文件时显示的路径类似,但不完全相同。例如,若要修改 dispatch.meta 文件,需修改 update.rpf 中的对应文件(common.rpf 中的文件会被其覆盖),此时需创建如下路径:“replace\update\common\data\dispatch.meta”—— 这与 OpenIV 中的路径完全一致(不含 update 后的 .rpf 后缀)。此后,游戏每次尝试访问该文件时,都会加载你替换后的版本,操作十分简便。
再例如,若要替换 scaleform_frontend.rpf 中的字体文件 font_lib_efigs.gfx,需创建路径:“replace\update\x64\patch\data\cdimages\scaleform_frontend\font_lib_efigs.gfx”。
注意事项
文件路径并不总是与 RPF 文件名完全匹配,因此替换文件夹的操作相对复杂,但能提供更高的控制权。例如,若要替换 player_zero_coat_001_open.ydd 文件,该文件同时存在于 packs_1.rpf(原始文件)和 dlc.rpf(来自 patchpack001 更新)中,DLC 文件的路径规则略有不同。其完整替换路径为:“replace\dlc_patchPack001\x64\packs\base\models\component_models\player_zero_coat_001_open.ydd”。可见,该路径与直接在 RPF 中看到的路径并不完全一致 —— 这也是许多文件更适合用流式文件夹替换的原因。游戏对部分文件的路径映射有特殊规则,打开 dlc.rpf(位于 patchpack001 中)的 setup2.xml 文件即可了解:设备名称(device name)为 dlc_patchPack001,作为该归档文件中所有文件的 “根目录”,因此路径需以 “dlc_patchPack001” 开头,再跟随 RPF 内部的文件结构,最终形成上述完整替换路径。操作虽不复杂,但确实比流式文件夹繁琐,需特别注意路径准确性。
鸣谢
感谢 NTA 在 fwEvents、挂钩(hooking)、fiDevice 和 sysAllocator 方面的研究成果;
感谢 listener 多年来在 fiDevice 方面的贡献及提供的建议(愿你一切安好!);
感谢 OpenIV 团队开发的 OpenIV 工具;
感谢 dexyfex 开发的 CodeWalker 工具;
感谢 Gan Ceann、Will、GameRoll 参与测试,以及 Jewels、GuiCORLEONEx794、jack.sharif、Modifiver 提供的示例资源。




评论(0)