#skyrim #cell #binary-parser #forms #extracting #id #exterior

bin+lib skyrim-cell-dump

用于解析 Skyrim 插件文件并提取 CELL 数据的库和二进制文件

15 个版本

0.4.2 2023 年 11 月 1 日
0.4.1 2022 年 10 月 1 日
0.4.0 2022 年 9 月 30 日
0.3.3 2022 年 3 月 26 日
0.3.0 2021 年 7 月 24 日

737解析实现 中排名

每月 40 次下载

MIT 许可

27KB
544 代码行

skyrim-cell-dump

用于解析 Skyrim 插件文件并提取 CELL 数据的库和二进制文件。

该库的主要目标是尽可能快地提取插件编辑的每个外部单元格的表单 ID 和 X 和 Y 坐标,忽略插件的其他部分。

安装

cargo install skyrim-cell-dump

或者,通过检出仓库并运行来构建自己的版本

cargo build --release --features build-binary

使用方法

Usage: skyrim-cell-dump.exe <plugin> [-f <format>] [-p]

Extracts cell edits from a TES5 Skyrim plugin file

Options:
  -f, --format      format of the output (json or text)
  -p, --pretty      pretty print json output
  --help            display usage information

美观的 JSON 格式看起来像这样

{
  "header": {
    "version": 1.0,
    "num_records_and_groups": 792,
    "next_object_id": 221145,
    "author": "Critterman",
    "description": "An example plugin",
    "masters": [
      "Skyrim.esm",
      "Update.esm",
      "Dawnguard.esm",
      "HearthFires.esm",
      "Dragonborn.esm"
    ]
  },
  "worlds": [
    {
      "form_id": 60,
      "editor_id": "Tamriel"
    }
  ],
  "cells": [
    {
      "form_id": 100000001,
      "editor_id": "SomeInterior",
      "x": null,
      "y": null,
      "world_form_id": null,
      "is_persistent": false
    },
    {
      "form_id": 3444,
      "editor_id": null,
      "x": 0,
      "y": 0,
      "world_form_id": 60,
      "is_persistent": true
    },
    {
      "form_id": 46432,
      "editor_id": "SomeExterior01",
      "x": 32,
      "y": 3,
      "world_form_id": 60,
      "is_persistent": false
    },
    {
      "form_id": 46464,
      "editor_id": "SomeExterior02",
      "x": 33,
      "y": 2,
      "world_form_id": 60,
      "is_persistent": false
    },
    {
      "form_id": 46498,
      "editor_id": null,
      "x": 32,
      "y": 1,
      "world_form_id": 60,
      "is_persistent": false
    }
  ]
}

注意:我仅测试了解析 Skyrim 特别版的 .esp.esm.esl 文件。

导入

您可以将此存储库包含在您的 Cargo.toml 中,并使用以下方式获取解析的 Plugin 结构

use skyrim_cell_dump::parse_plugin;

let plugin_contents = std::fs::read("Plugin.esp").unwrap();
let plugin = parse_plugin(&plugin_contents).unwrap();

依赖关系

~7MB
~197K SLoC