// 解析WZ文件 public void ParseWzFile() { WzTools.CreateWzKey(this.type); this.ParseMainWzDirectory(); GC.Collect(); GC.WaitForPendingFinalizers(); }
public void SaveToDisk(string path) { string temp = System.IO.Path.GetTempPath(); if (Directory.Exists(temp + @"HaRepacker$temp.build")) { WzTools.DelDir(temp + @"HaRepacker$temp.build"); } WzTools.CreateWzKey(this.type); this.CreateVersionHash(); this.wzDir.SetHash(this.versionHash); Directory.CreateDirectory(temp + @"HaRepacker$temp.build"); this.wzDir.GenerateDataFile(temp + @"HaRepacker$temp.build"); uint imgOffsets = this.wzDir.GetImgOffsets(this.wzDir.GetOffsets(0x3e)); BinaryWriter wzWriter = new BinaryWriter(File.Create(path)); for (int i = 0; i < 4; i++) { wzWriter.Write((byte)this.ident[i]); } wzWriter.Write((long)(imgOffsets - 60)); wzWriter.Write(60); WzTools.WriteNullTerminatedString(wzWriter, "Package file v1.0 Copyright 2002 Wizet, ZMS"); wzWriter.Write(this.version); this.wzDir.SaveDirectory(wzWriter); this.wzDir.SaveImages(wzWriter, temp + @"HaRepacker$temp.build"); wzWriter.Close(); WzTools.DelDir(temp + @"\HaRepacker$temp.build"); }
// 解析WZ文件 public void ParseWzFile() { WzTools.CreateWzKey(WzMapleVersion.GMS); // 将内存中的数据初始化为一个二进制流准备读取 BinaryReader reader = new BinaryReader(new MemoryStream(this.wzFileBytes)); while (reader.PeekChar() != -1) { int num = reader.ReadInt32(); // 读取4个字节 05 00 00 00 char[] stringToDecrypt = new char[num]; for (int i = 0; i < num; i++) { stringToDecrypt[i] = (char)((ushort)reader.ReadInt16()); // 读取2个字节 05 00 } reader.ReadUInt16(); string item = WzTools.DecryptString(stringToDecrypt); if ((reader.PeekChar() == -1) && (item[item.Length - 1] == '/')) { item = item.TrimEnd("/".ToCharArray()) + "g"; } this.listEntries.Add(item); } reader.Close(); }