private void repackToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog FD = new OpenFileDialog(); FD.Filter = "All MPK Files|*.mpk"; if (FD.ShowDialog() == DialogResult.OK) { MPKManager Writer = new MPKManager(new StreamReader(FD.FileName).BaseStream); string Dir = FD.FileName + "~\\"; List <NPCSManager.File> Files = new List <NPCSManager.File>(); foreach (string File in Directory.GetFiles(Dir)) { Files.Add(new NPCSManager.File() { Path = Path.GetFileName(File), Content = new StreamReader(File).BaseStream }); } Writer.InjectFiles(Files.ToArray(), new StreamWriter(FD.FileName + "-patched.mpk").BaseStream); foreach (NPCSManager.File f in Files) { f.Content.Close(); } } }
private void extractToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog FD = new OpenFileDialog(); FD.Filter = "All MPK Files|*.mpk"; if (FD.ShowDialog() == DialogResult.OK) { MPKManager Reader = new MPKManager(new StreamReader(FD.FileName).BaseStream); NPCSManager.File[] Files = Reader.Open(); string Dir = FD.FileName + "~\\"; if (!System.IO.Directory.Exists(Dir)) { System.IO.Directory.CreateDirectory(Dir); } foreach (NPCSManager.File F in Files) { string Name = Dir + F.Path; if (System.IO.File.Exists(Name)) { System.IO.File.Delete(Name); } Stream Out = new StreamWriter(Name).BaseStream; int c = 0; byte[] Buffer = new byte[(1024 * 1024) * 5]; do { c = F.Content.Read(Buffer, 0, Buffer.Length); Out.Write(Buffer, 0, c); } while (c > 0); Out.Close(); } } }