Flutter插件ngpack的使用方法介绍
Flutter插件ngpack的使用方法介绍
ngpack
是一个简单的命令行应用程序,用于列出或从 ggpack
文件中提取文件。ggpack
文件由《Thimbleweed Park》游戏使用,这是一款非常棒的冒险游戏,你可以现在就去购买,你不会后悔的(Steam、GOG)。
构建与运行
- 克隆项目:
git clone https://github.com/scemino/ngpack.git
- 运行:
dart run bin/ngpack.dart list -p "*.bnut" ThimbleweedPark.ggpack1
- 或创建可执行文件:
dart compile exe bin/ngpack.dart
以上就是所有步骤。
Flutter插件ngpack使用方法
A tool to list/extract/create Thimbleweed Park ggpack file.
Usage: ngpack <command> [arguments]
Global options:
-h, --help 打印此用法信息。
可用命令:
create 创建一个包含匹配模式的文件的 ggpack。
extract 从 ggpack 中提取匹配模式的文件到当前工作目录。
list 列出 ggpack 中匹配模式的文件。
运行 "ngpack help <command>" 获取更多关于某个命令的信息。
A tool to convert Thimbleweed Park savegame to json and json to TWP savegame.
Usage: ngsave <command> [arguments]
Global options:
-h, --help 打印此用法信息。
可用命令:
fromjson 将指定的 json 文件转换为存档。
tojson 将指定的存档文件转换为 json。
运行 "ngsave help <command>" 获取更多关于某个命令的信息。
A tool to convert Thimbleweed Park achievement file (save.dat) to text and text to achievement.
Usage: ngach <command> [arguments]
Global options:
-h, --help 打印此用法信息。
可用命令:
from 将指定的文本文件转换为成就。
to 将指定的成就文件转换为文本。
运行 "ngach help <command>" 获取更多关于某个命令的信息。
感谢
本项目改编自优秀的项目https://github.com/mrmacete/r2-ggpack 和 twp-ggdump https://github.com/mstr-/twp-ggdump。
功能
- 浏览
ggpack
中的所有文件 - 使用 globbing 搜索文件
- 从
ggpack
中提取文件 - 将 wimpy 文件转换为 json
- 将 json 文件转换为 wimpy 文件
- 将 bnut 文件转换为 nut 文件
- 将 nut 文件转换为 bnut 文件
- 创建一个包
- 自动检测用于解码
ggpack
文件的 xor 密钥 - 将 TWP 存档转换为 json
- 将 json 转换为 TWP 存档
- 读取/写入 TWP 成就
完整示例代码
以下是一个完整的示例代码,展示了如何使用 ngpack
插件进行基本操作。
import 'package:universal_io/io.dart';
import 'package:ngpack/ngpack.dart';
void main(List<String> arguments) {
// 创建一个 ggpack 文件
final key = knownXorKeys.fromId(KnownXorKeyId.Key56ad);
final bytes = GGPackBuilder(key)
.addContent('hello.txt', 'hello world') // 添加文本文件
.addMap('hello.wimpy', {'hello': 'world', 'int': 42, 'double': 3.14, 'null': null}) // 添加 wimpy 文件
.build(); // 构建并返回字节数据
// 列出所有文件
final pack = GGPackDecoder(bytes, xorKey: key);
pack.forEach(print); // 打印文件名
// 显示文件内容
print('hello.txt: ' + pack.extractContent('hello.txt')); // 提取并打印文本文件内容
print('hello.wimpy: ' + pack.extractMap('hello.wimpy').toString()); // 提取并打印 wimpy 文件内容
// 读取存档文件
final savegameBytes = File('savegame1.save').readAsBytesSync();
final savedata = savegame.decode(savegameBytes);
// 修改存档文件中的某些数据
savedata.map['actors']['ransome']['_roomKey'] = 'MainStreet'; // 修改房间钥匙
// 保存修改后的存档文件
File('savegame1.save').writeAsBytesSync(savegame.encode(savedata));
}
更多关于Flutter插件ngpack的使用方法介绍的实战教程也可以访问 https://www.itying.com/category-92-b0.html