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

回到顶部