一个强大的 Proto 文件处理工具,专为游戏协议文件处理而设计。支持字段替换、文件拆分、配置生成等多种功能。
- 🔤 智能字段替换 - 基于 Trie 树的高效字符串替换算法,支持批量字段映射
- 📦 模块化拆分 - 将单体 Proto 文件拆分为独立的模块化文件
- 🎮 游戏协议支持 - 生成 PacketOpcodes,支持游戏协议处理
- 🚫 消息黑名单 - 灵活的消息过滤机制
- 🔐 XOR 字段配置 - 自动生成加密字段配置
- 🔄 映射还原 - 映射文件的反向还原 -- TODO
# 克隆项目
git clone https://github.com/HongchengQ/proto_script_jnl.git
cd proto_script_jnl
# 构建项目
mvn package-
准备配置文件
cp config_example.json config.json
-
准备输入文件
- 将原始 Proto 文件放入
proto/input/all_in_one.proto - 将映射文件放入
proto/input/mapping.tsv - (可选)配置消息黑名单
proto/input/messageBlacklist.json
- 将原始 Proto 文件放入
-
运行程序
java -jar target/proto_script_jnl-pm-jar-with-dependencies.jar
{
"gameVersion": "2.0.0", // 游戏版本标记
"bootMode": 0, // 启动模式 TODO
"inputFilePath": "proto/input/all_in_one.proto",
"replaceMappingFilePath": "proto/input/mapping.tsv",
"replaceOutputDirectory": "proto/all_in_one_proto_output",
"splitOutputDirectory": "proto/dispersible_proto_output",
"clearOutputFolderForever": true // 运行前清理输出目录
}{
"packetOpcodesOptional": {
"createPacketOpcodes": true,
"opsOutputDirectory": "proto/packet_opcodes_output"
},
"generateMessageBlacklistOptional": {
"enableBlacklist": true,
"blacklistFilePath": "proto/input/messageBlacklist.json"
},
"generateXorFieldConfig": {
"enableGenerateXorFieldConfig": true,
"xorOutputDirectory": "proto/xor_field_config_output"
}
}使用制表符分隔的 TSV 格式:
混淆字段 解混淆字段
IAAEHMCIHOG This is the replacement text
{
"message_name": true, // true: 过滤掉此消息
"another_message": false, // false: 保留此消息
"114514": true // cmdid 也可以
}- 使用基于 Trie 树的高效字符串替换算法
- 自动生成替换注释记录
- 支持批量处理大量字段
- 智能分析消息依赖关系
- 自动生成模块化文件结构
- 支持命令 ID 提取和幻数处理
- 自动生成数据包操作码
- 支持消息黑名单过滤
- XOR 字段配置自动生成
- Logback - 日志框架
- Jackson - JSON 处理
- Apache Commons CSV - CSV 文件处理
- Reflections - 反射库
- Lombok - 代码简化
欢迎提交 Issue 和 Pull Request!
本项目采用 LICENSE 许可证。