8 个版本 (4 个稳定版)
| 1.1.0 | 2021 年 5 月 8 日 |
|---|---|
| 1.0.2 | 2020 年 9 月 4 日 |
| 1.0.1 | 2020 年 8 月 25 日 |
| 0.2.0 | 2020 年 7 月 27 日 |
| 0.1.1 | 2020 年 6 月 6 日 |
#2556 在 命令行工具
每月下载量 28 次
68KB
1K SLoC
sc_extract
sc_extract 是一个从 Supercell 游戏文件中提取图形和解码 csv 文件的高效工具。
此工具旨在从文件中获取高质量的图形和数据。它绝不旨在
- 以任何方式修改游戏
- 创建基于 Supercell 任何游戏的克隆或任何其他游戏
- 获利
功能
sc_extract 的一些功能包括
- 非常快速的速度(比 Python 工具快 10 倍以上)
- 为多个操作系统预编译的二进制文件(Linux、macOS、Windows)
- 支持多种文件格式
- 非常广泛的命令行支持
sc_extract 可以提取/处理 Supercell 游戏中找到的以下文件
_tex.sc.csv.sc文件是从 QuickBMS 提取的
sc_extract 是一个独立工具(二进制名为 sce),但它提供了一个简单的 Rust crate,具有干净的 API,允许开发人员以最小的工作量实现自己的工具。
关于此工具
此工具是这些脚本的 Rust 实现
- cr-sc-dump:tex_sc 和 csv 提取
- sc_decode:从 tex_sc 精灵中提取单个图像
Python 实现提取大文件中的图像需要很长时间。sc_extract 可以非常快速地提取数据。以下是一些比较
-
要从《斗罗大陆》版本
27.269中提取所有_tex.sc精灵,sc_extract 需要 不到 20 秒,而 cr-sc-dump 需要 超过 4 分钟 -
要从《斗罗大陆》版本
27.269的ui文件中提取所有单个图像,sc_extract 需要 大约 2.5 分钟,而 sc_decode 需要 超过 10 分钟。
注意:以下时间是在配备了1.8 GHz 双核英特尔酷睿i5处理器和8 GB RAM的MacBook Air上测试的。它们可能在您的机器上有所不同。
可以通过使用parallelize标志进一步减少sc_extract所需的时间。
安装
sc_extract可以通过三种方式安装。第一种方法(推荐)速度最快,无需安装Rust。第二种和第三种方法需要您安装Rust的2018版本。Rust适用于大量操作系统。点击上面的链接将带您到Rust的安装页面。
下载预编译的二进制文件(推荐)
您可以在此处找到适用于多个操作系统和架构的预编译二进制文件。
下载适合您机器的二进制文件。下载后,解压文件夹。您应该看到以下三个文件
sce(或Windows上的sce.exe)README.mdLICENSE
现在,使用cd进入此目录,然后按照此处描述的步骤使用它!
使用cargo install
sc_extract可在crates.io上找到。您可以通过在终端中使用cargo install sc_extract命令来安装和构建此工具。安装过程需要几分钟来构建所有依赖项,但一旦完成,该工具将非常快速地运行。
它还会自动将其添加到shell路径中,允许您从任何目录使用此工具。
从源代码构建
您可以下载此工具的源代码,然后使用cargo build --release命令自行构建。在执行此命令之前,您需要使用cd进入此工具的目录。不要忘记使用--release标志,否则您的工具将运行非常慢。
注意:以下示例命令将假定您已使用第一种或第二种方法安装了工具。如果您是从源代码安装的,您必须在所有命令中将sce替换为cargo run --release。之前版本的sc_extract的二进制文件名为sc_extract,因此如果您有旧版本,您必须使用sc_extract作为名称。
用法
注意1:您可能需要将下面的命令中的sce替换为./sce、sce.exe、sc_extract或cargo run --release。
注意2:提取的sc将被用于表示在以下章节中使用的QuickBMS提取的.sc文件。提取的sc文件没有扩展名,它们看起来像ui、loading等。
您需要提取超级细胞游戏所需的_tex.sc、提取的sc或.csv文件。您可以通过下载游戏的APK文件,将其扩展名更改为.zip,解压缩并导航到解压缩文件夹中的/assets/sc(_tex.sc文件)、/assets/csv_logic(csv文件)或csv_client(csv文件)文件夹来获取文件。要获取提取的sc文件,请参阅本节。
安装此工具后,请使用cd进入工具所在的目录(如果您将其添加到路径或使用第二种方法,则不需要这样做)。
cd path_to_sce
然后,只需使用以下命令即可提取所需的文件!
sce [FLAGS] [OPTIONS] [path]
path必须是一个有效的路径,指向单个_tex.sc、提取的sc或.csv文件或包含这些文件的目录。请参阅标志和选项部分以了解更多信息。
如果没有指定path,则使用当前目录作为路径。
如果您使用源代码安装了工具,您可能希望在提取文件之前构建工具及其所有依赖项。您可以在工具目录中运行cargo build --release命令。构建需要几分钟,但以后运行工具将非常快。
标志和选项
以下可选标志和选项可以指定以控制提取。您可能需要指定png选项(见下文)以从提取的sc文件中提取图像。
| 标志 | 短 | 描述 |
|---|---|---|
| --delete | -d | 在提取后删除源文件 |
| --parallelize | -p | 并行提取文件,使过程更快 |
| --disable-filter | -F | 禁用过滤常见易出错文件,如quickbms和.DS_Store |
| --help | -h | 打印帮助信息 |
| --version | -V | 打印版本信息 |
| 选项 | 短 | 描述 | out_path |
|---|---|---|---|
| --out | -o | 指定输出目录。如果没有指定,将在path中创建名为extracts的目录。 |
out-path必须是一个有效的路径字符串。 |
| --png | -P | 指定存储_tex.sc文件的提取图像的目录路径。这是使用提取的.sc文件剪切图像所必需的。如果没有指定路径,sc_extract将在包含源文件(提取的sc)的目录中查找png文件。 |
png-dir必须是一个有效的路径字符串。 |
| --type | -t | 指定您要提取的文件类型。默认情况下,考虑所有类型。 | kind可以是"csv"、"sc"和"tex"(不带双引号)之一。 |
示例命令
sce ./sc -F
上述命令使用 ./sc 作为源目录。它逐个遍历目录中的所有文件并提取所有有效文件。输出保存在 ./sc/extracts 目录中。它不会忽略像 quickbms 和 .DS_Store 这样的文件,因为这些文件由于 -F 标志而不会被忽略。
sce --delete -p ./sc --out ./extracts
上述命令使用 ./sc 作为源目录。它并行遍历目录中的所有文件并提取所有有效文件。输出保存在 ./extracts 目录中。未提供 png 标志,因此它会在 ./sc 中查找从 _tex.sc 提取的精灵。如果 ./sc 目录不包含精灵,则无法从提取的 sc 文件中裁剪图像。其余的提取不会受到影响。提取后,所有有效的 _tex.sc、.csv 和提取的 sc(带有png图像)文件将被删除。
sce -p ./sc --out ./sc_out -t sc --png ./sc/extracts
上述命令使用 ./sc 作为源目录。它并行遍历目录中的所有文件,并使用所有有效的提取 sc 文件裁剪图像。输出保存在 ./sc_out 目录中。用于提取的png文件将在 ./sc/extracts 目录中搜索。
使用 QuickBMS 提取 .sc 文件
QuickBMS 是提取 .sc 文件所必需的。您还需要 clash_royale.bms。QuickBMS 可以从 macOS 这里 下载。
将 QuickBMS 和 clash_royale.bms 复制到包含 .sc 文件的目录中(不是 _tex.sc),然后运行此命令
find . -not -name '*_tex.sc' -name '*.sc' -exec ./quickbms ./clash_royale.bms {} \;
如果您使用的是 Windows,您可能需要根据需要调整此命令。
运行此命令将为文件夹中的每个 .sc 文件创建一个新的文件。这些文件将与相应的 .sc 文件具有相同的名称但没有扩展名。这些被称为提取的 sc 文件,用于裁剪精灵。
更新
如果您使用了预编译的二进制文件,您只需从 Releases 页面下载新版本的二进制文件即可。
如果您使用 cargo install 安装了工具,您可以通过简单地重新使用 cargo install sc_extract 命令来更新工具。如果更新工具失败,您可以添加 --force 标志强制执行,如下所示: cargo install sc_extract --force。
如果您使用源代码安装,您将需要使用新源代码重复 Building From Source 部分中描述的过程。
许可协议
sc_extract 在 MIT 许可协议下提供。有关详细信息,请参阅 LICENSE。
鸣谢
如果没有以下人员创建原始的 Python 脚本,此工具将不会存在。
依赖项
~23–34MB
~324K SLoC