mcpField
R
rpfd

rpfd

本地服务
github.com开发工具13 周前更新

关于 rpfd

rpfd 是用于 GTA V 等 RAGE 游戏 RPF7 归档的 Rust 工具链,面向需要检查和修改游戏归档的开发者。它提供命令行、JSON-RPC 守护进程和 VS Code 扩展,并支持多种 RPF7 加密变体。

主要功能

  1. 01读取、写入和重建 RPF7 归档
  2. 02提取、打包和校验归档
  3. 03以 XML 查看或编辑条目
  4. 04通过 JSON-RPC 管理编辑
  5. 05VS Code 工作区式归档编辑

适用场景

  1. 01检查 GTA V 游戏归档内容
  2. 02修改并重新打包服务器资源
  3. 03在 VS Code 中编辑嵌套归档

MCP 相关

README 提及可将 MCP 服务注册到编辑器或 Agent,并提供远程发现信息;此处 MCP 服务端仅用于发现,不执行归档操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbrpf-v0.3.1.mcpb0.3.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

rpfd

release rust 1.98+ VS Code Open VSX

一套依赖精简的 Rust 工具链,用于读取、编辑和重建 RPF7 归档——包括 RAGE Multiplayer 和 FiveM 服务端交给客户端的 dlc.rpf 文件,以及 Grand Theft Auto V 自带的归档。它是一个无需运行时前置条件的命令行二进制程序,同一套代码也用于 JSON-RPC 守护进程和 VS Code 扩展。

编辑器扩展可从商店安装,因此会自动获取更新:在 VS Code Marketplace 和 Open VSX 上搜索 molchalih.rpfd,或运行 code --install-extension molchalih.rpfd。

有人请你安装这个吗? Agent 可按照 INSTALL.md 中的流程操作: 先将二进制程序加入 PATH,然后为这台机器上的每个客户端注册 rpf。

格式

版本变体使用方支持情况
RPF7OPEN,未加密RAGE MP 和 FiveM 服务端资源包读取、写入
RPF7AES-256,0x0FFFFFF9GTA V,des_* 和 script_* 等嵌套归档读取、写入——密钥来自游戏可执行文件
RPF7AES-256,0x0FFFFFF7Rockstar Games Launcher读取、写入——密钥来自 Launcher.exe
RPF7NG,0x0FEFFFFFGTA V Legacy 和 Enhanced,所有顶层归档读取、写入——两者都需要内存映像
RPF8—Red Dead Redemption 2不支持
RPF6—Red Dead Redemption,2010 和 2023不支持
RPF4—Max Payne 3不支持
RPF3—GTA IV 音频、Midnight Club: LA不支持
RPF2—GTA IV,主归档不支持
RPF0—Table Tennis不支持

RPF7 之前版本的归属信息取自其他实现,并非在此测定;相关分歧已记录在格式说明中。所有非 RPF7 版本都会根据其魔数识别,并按版本号拒绝处理。

加密既针对每个条目,也针对整个归档:标签覆盖目录表和名称数据块,而每个条目的记录会标明其载荷是否经过该变换。

安装

INSTALL.md 介绍了安装方式,并分别回答三个问题:如何从 VS Code Marketplace 或 Open VSX 安装编辑器扩展(也可使用 .vsix 作为备用方案);如何向编辑器或 Agent 注册 MCP 服务;以及如果只需要二进制文件,该把它放在哪里。 最后还介绍了 Agent 如何在一台机器上完成这三项操作。 每个版本都附有适用于 macOS、Windows 和 Linux 的预编译二进制文件。

如果要从源代码构建,工具链版本固定在 rust-toolchain.toml 中。 克隆仓库,然后在克隆仓库的根目录构建,无论你把它放在哪里:

git clone https://github.com/molchalih/rpfd.git
cargo build --release          # target/release/rpf

加密归档需要密钥材料,从你自己的安装中提取:

rpf keys extract GTA5.exe         # the AES key and the hash lookup table
rpf keys extract Launcher.exe     # the second AES key, carried by no game executable
rpf keys extract <memory image>   # the NG expanded keys and decrypt tables

这里不会附带任何密钥材料,以后也不会。每份材料都会按自身字节的哈希值缓存,存放在平台配置目录中的 rpf 目录下的 keys 目录中:Linux 上为 $XDG_CONFIG_HOME 或 ~/.config,macOS 上为 ~/Library/Application Support,Windows 上为 %APPDATA%。每条命令都会自动使用该缓存,无需指定标志;rpf keys cache 会显示缓存位置和其中的材料数量:

$ rpf keys cache
cache   /Users/you/Library/Application Support/rpf/keys
entries 2

--cache-dir 可选择其他缓存,这是将多个安装彼此隔离的唯一方式;rpf keys invalidate 可清空某个缓存。任何命令都不会打印密钥,只会显示偏移量、长度、数量和路径。NG 材料仅以明文形式存在于运行中游戏的内存映像中,因此这是获取 NG 归档材料的唯一途径;如何获取不在本文讨论范围内。缺少相应材料的归档会直接报错,不会进行猜测。

用法

列出归档内容,并递归展开其中的归档:

$ rpf ls -R dlc.rpf
binary    xml          2199  content.xml
directory -               3  data
binary    xml          1445  data/carvariations.meta
binary    xml           191  data/dlctext.meta
binary    xml          5100  data/vehicles.meta
binary    xml           559  setup2.xml
directory -               2  x64
directory -               1  x64/vehiclemods
binary    -         2544128  x64/vehiclemods/meringls63amg24_mods.rpf
resource  -          262144  x64/vehiclemods/meringls63amg24_mods.rpf/meringls63amg24_brabus_diffuser_1.yft
... 20 more rows: the rest of the mods archive, and x64/vehicles.rpf

第二列说明条目中存放的内容;pso、rbf 和 meta 支持 XML 视图:

$ rpf cat --as xml des_hosp_ceil2.rpf des_hosp_ceil2.ytyp
<?xml version="1.0" encoding="UTF-8"?>
<hash_D98BB561 pso:struct="hash_D98BB561">
  <hash_F17E7F28 pso:array="atarray"/>
  <hash_018A3B1B pso:array="atarray">
    <pso:item pso:struct="hash_82D6FC83">
      <hash_BF74DFA7 pso:float="100.0"/>
      <hash_67D26872 pso:uint="0"/>
      <hash_6C1523E4 pso:uint="0"/>
      <hash_D9EF8236 pso:float3="-2.80584, -2.95097, 0.0"/>
      <hash_E78AA618 pso:float3="2.80584, 2.95097, 3.0961"/>
      <hash_D61872FF pso:float3="0.0, 0.0, 1.54805"/>
      <hash_82E8C5DE pso:float="4.356308"/>
      <hash_AD5D5B4C pso:float="5.0"/>
      <hash_E6E17F14 pso:string.counted="DES_Hosp_Ceil2"/>
      <hash_75D215A1 pso:string.counted="DES_Hosp_Ceil2_txd"/>
      <hash_19471791 pso:null="string.counted"/>
      <hash_FC1FB6FB pso:null="string.counted"/>
      <hash_D3C717FC pso:hashstring="hash_00000000"/>
      <hash_F17E7F28 pso:array="atarray"/>
    </pso:item>
  </hash_018A3B1B>
  <hash_E6E17F14 pso:hashstring="hash_334D5CB2"/>
  <hash_3C6F8844 pso:array="atarray"/>
  <hash_069ADF93 pso:array="atarray"/>
  <hash_65E9D4EB pso:array="atarray"/>
</hash_D98BB561>

rpf put --as xml 会以条目自身的编码将编辑后的文档写回。先查看写入的开销,再执行写入——字节数取决于你的 edited.meta,并非固定值;使用 --dry-run 可以在写入任何内容之前了解开销:

$ rpf put dlc.rpf data/vehicles.meta edited.meta --dry-run
would patch 1632 bytes in place at 2048 (room for 2048)

$ rpf put dlc.rpf data/vehicles.meta edited.meta
patched 1632 bytes in place at 2048 (room for 2048)

put --create、rm、mv 和 mkdir 会移动标头之后的所有偏移量,因此总会重建归档,并会事先说明。重建是原子操作:归档旁的临时文件会一步替换原文件。

拆解归档、重新构建并检查结果:

$ rpf extract dlc.rpf tree/
7 files and 3 directories into tree/

$ rpf pack tree/ rebuilt.rpf
11 entries, 65160704 bytes

$ rpf verify rebuilt.rpf --against tree/
27 entries read back; 7 of 7 recorded checksums checked against tree/
20 entries carry no recorded checksum: an entry inside a nested archive is covered by the checksum of the entry that holds it

所有报告命令都支持 --json;其余选项请查看 rpf --help。 clients/agent/README.md 介绍如何通过程序调用工具:JSON 结构、失败对象,以及用于输出无人会阅读的负载的 cat --out。

守护进程

rpf serve --stdio 使用 JSON-RPC 协议,每行处理一个对象。它支持二进制文件的所有功能,会将编辑保留到 commit 时再提交,并会通过可取消的通知报告耗时较长的重建进度。

$ echo '{"jsonrpc":"2.0","id":1,"method":"open","params":{"path":"/tmp/dlc.rpf"}}' | rpf serve --stdio
{"id":1,"jsonrpc":"2.0","result":{"entries":11,"handle":1,"len":144504832,"path":"/private/tmp/dlc.rpf"}}

编辑器扩展

clients/vscode 会将归档挂载为工作区文件夹:文件可以像其他文件一样打开、编辑和保存,嵌套归档则会作为文件夹中的文件夹显示。归档只会通过一次明确操作写入,并会预览补丁或重建内容。请参阅 clients/vscode/README.md。

退出代码

退出代码保持稳定,因此调用方无需阅读消息即可判断失败类型:0 表示成功,每个非零代码都对应一种失败类型。守护进程会在 JSON-RPC 的 error.code 中报告相同数字,并在 error.data.reason 中提供对应的符号名称。

代码表位于 clients/agent/README.md,由该文档负责维护,其中还说明了每个代码会提示调用方接下来采取什么操作。

构建和测试

cargo build --release

持续集成会运行以下检查;前三项会在 macOS、Linux 和 Windows 上运行。在本地通过这些检查,更有可能让持续集成顺利通过:

cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all
cargo test -p rpf-core --test oracle -- --nocapture
RUSTDOCFLAGS='-D warnings' cargo doc --no-deps --workspace
cargo deny check
./tools/docgate/docgate.sh

它还会检查每条提交消息;运行 git config core.hooksPath .githooks 即可在本地执行相同检查。

测试套件无需游戏数据:需要游戏数据的测试会被跳过。RPF_CORPUS、RPF_GAME_EXE、RPF_GAME_IMAGE 和 RPF_METADATA 分别用于指定归档、游戏可执行文件、运行中游戏的内存映像以及提取出的元数据负载;对应的 RPF_REQUIRE_* 变量会将跳过测试改为测试失败。

许可证

可任选 MIT OR Apache-2.0。请参阅 LICENSE-MIT 和 LICENSE-APACHE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。