7个版本
0.0.10 | 2024年7月8日 |
---|---|
0.0.9 | 2024年7月2日 |
0.0.7 | 2024年5月24日 |
0.0.4 | 2024年4月24日 |
#625 in 解析器实现
210KB
5K SLoC
wz-reader-rs
Maplestory *.Wz 文件读取器,用Rust编写,尝试从WzComparerR2.WzLib和MapleLib移植相似代码
这是一个Rust学习项目,性能可能不如C#。
依赖项
- 图像
- flate2
- image
- 字符解密
- aes
- ecb
- 数据
- hashbrown - 哈希表
- memmap2
- 其他
- rayon
- scroll
- thiserror
最低支持的Rust版本
wz_reader的最低支持版本是1.70.0
示例
use wz_reader::util::{resolve_base, walk_node};
// NodeCast trait provide try_as_* functions to casting WzNode
use wz_reader::NodeCast;
fn main() {
// resolve wz files
let base_node = resolve_base(r"D:\MapleStory\Data\Base.wz", None).unwrap();
// try to parsing every nodes on the way
walk_node(&base_node, true, &|node| {
let node_read = node.read().unwrap();
if let Some(sound_node) = node_read.try_as_sound() {
let path = std::path::Path::new("./sounds").join(node_read.name.as_str());
if sound_node.save(path).is_err() {
println!("failed to extract sound: {}", node_read.get_full_path());
}
}
});
}
您可以在示例文件夹中找到更多示例用法。
许可协议
本项目采用MIT许可协议。
依赖项
~9MB
~138K SLoC