private void button9_Click(object sender, EventArgs e) { if (openMapDialog.ShowDialog() == DialogResult.OK) { if (File.Exists("war3map_edited.wts")) { File.Delete("war3map_edited.wts"); } if (File.Exists("war3map.j")) { File.Delete("war3map.j"); } if (File.Exists("war3mapMisc.txt")) { File.Delete("war3mapMisc.txt"); } //导出文件 MpqLib.Mpq.CArchive map = new MpqLib.Mpq.CArchive(openMapDialog.FileName); if (map.FileExists("war3map.j")) { map.ExportFile("war3map.j", "war3map.j"); } if (map.FileExists("war3mapMisc.txt")) { map.ExportFile("war3mapMisc.txt", "war3mapMisc.txt"); } if (map.FileExists("war3map.wts")) { map.ExportFile("war3map.wts", "war3map_edited.wts"); } else { label1.Text = "war3map.wts doesn't exist in this map."; map.Close(); return; } TransferStatus(true); label1.Text = "Transfering strings from war3map.wts..."; wts_file wts = new wts_file("war3map_edited.wts"); wts.SaveStripDataFile(true); wts.StringMapping(); //打包进地图 map.ImportFile("war3map.wts", "war3map_edited.wts"); map.Flush(); map.Compact(); map.Close(); if (File.Exists("war3map_edited.wts")) { File.Delete("war3map_edited.wts"); } TransferStatus(false); refreshfrm(); label1.Text = "Finish."; MessageBox.Show("Finish!"); } }
private void button16_Click_1(object sender, EventArgs e) { openFileDialog2.FileName = ""; ChangeLabel(1); openFileDialog2.ShowDialog(); if (openFileDialog2.FileName.Trim() != "" && File.Exists(openFileDialog2.FileName)) { //MessageBox.Show(openFileDialog2.FileName); try { //if (File.Exists(@"Input\Blizzard.j")) { File.Delete(@"Input\Blizzard.j"); } if (File.Exists(@"Input\war3map.j")) { File.Delete(@"Input\war3map.j"); } if (File.Exists(@"Input\war3map.wts")) { File.Delete(@"Input\war3map.wts"); } if (File.Exists(@"Input\war3mapMisc.txt")) { File.Delete(@"Input\war3mapMisc.txt"); } MpqLib.Mpq.CArchive archive = new MpqLib.Mpq.CArchive(openFileDialog2.FileName); if (!System.IO.Directory.Exists("Input")) { System.IO.Directory.CreateDirectory("Input"); } if (archive.FileExists("war3map.j")) { archive.ExportFile("war3map.j", @"Input\war3map.j"); } if (archive.FileExists("war3map.wts")) { archive.ExportFile("war3map.wts", @"Input\war3map.wts"); } if (archive.FileExists("war3mapMisc.txt")) { archive.ExportFile("war3mapMisc.txt", @"Input\war3mapMisc.txt"); } archive.Close(); MessageBox.Show("Files have been extracted at: Input\\"); } catch { MessageBox.Show("Opps, Something wrong happened during the extracting process."); } } ChangeLabel(0); }
public Updater(Form1 parent, string patchMpqPath, string targetMpqPath, string gamePath, bool logging = true) { _parent = parent; doLogging = logging; nirPath = gamePath; PatchMPQ = new MpqLib.Mpq.CArchive(patchMpqPath); TargetMPQ = new MpqLib.Mpq.CArchive(targetMpqPath); MpqPath_for_del_listfile = targetMpqPath; // Import external listfile if (!TargetMPQ.FileExists("(listfile)")) { if (File.Exists("(listfile)")) TargetMPQ.ImportListFile("(listfile)"); else return; } // Get version sourceVersion = ""; destVersion = ""; if (PatchMPQ.FileExists("(version)")) { var H_versionlist = new MpqLib.Mpq.CFileStream(PatchMPQ, "(version)"); var versionlist_raw = new byte[H_versionlist.Length]; versionlist_raw = H_versionlist.Read((int)H_versionlist.Length); H_versionlist.Close(); string[] list = Encoding.ASCII.GetString(versionlist_raw).Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); destVersion = list[0]; if (list.Length > 1) sourceVersion = list[1]; } // initialize progressBar if (_parent != null) { steps = PatchMPQ.FileCount; deletelist = readDeleteList(); steps += deletelist.Length; exportlist = readExportList(); steps += exportlist.Length; _parent.setProgressBarMax(steps); } }
public static string getGameVersion(string gamePath, string mpqName = "Nirvana.mpq") { gamePath = resolvePath(gamePath); string mpqPath = gamePath + mpqName; var Archive = new MpqLib.Mpq.CArchive(mpqPath); string version = ""; try { if (Archive.FileExists("(version)")) { var H_versionFile = new MpqLib.Mpq.CFileStream(Archive, "(version)"); var version_raw = new byte[H_versionFile.Length]; version_raw = H_versionFile.Read((int)H_versionFile.Length); H_versionFile.Close(); version = Encoding.ASCII.GetString(version_raw); } } catch { } Archive.Close(); return version; }
private void button16_Click_1(object sender, EventArgs e) { openFileDialog2.FileName = ""; ChangeLabel(1); openFileDialog2.ShowDialog(); if (openFileDialog2.FileName.Trim() != "" && File.Exists(openFileDialog2.FileName)) { //MessageBox.Show(openFileDialog2.FileName); try { //if (File.Exists(@"Input\Blizzard.j")) { File.Delete(@"Input\Blizzard.j"); } if (File.Exists(@"Input\war3map.j")) { File.Delete(@"Input\war3map.j"); } if (File.Exists(@"Input\war3map.wts")) { File.Delete(@"Input\war3map.wts"); } if (File.Exists(@"Input\war3mapMisc.txt")) { File.Delete(@"Input\war3mapMisc.txt"); } MpqLib.Mpq.CArchive archive = new MpqLib.Mpq.CArchive(openFileDialog2.FileName); if (!System.IO.Directory.Exists("Input")) { System.IO.Directory.CreateDirectory("Input"); } if (archive.FileExists("war3map.j")) { archive.ExportFile("war3map.j", @"Input\war3map.j"); } if (archive.FileExists("war3map.wts")) { archive.ExportFile("war3map.wts", @"Input\war3map.wts"); } if (archive.FileExists("war3mapMisc.txt")) { archive.ExportFile("war3mapMisc.txt", @"Input\war3mapMisc.txt"); } archive.Close(); MessageBox.Show("Files have been extracted at: Input\\"); } catch { MessageBox.Show("Opps, Something wrong happened during the extracting process."); } } ChangeLabel(0); }
private void button9_Click(object sender, EventArgs e) { if (openMapDialog.ShowDialog() == DialogResult.OK) { if (File.Exists("war3map_edited.wts")) { File.Delete("war3map_edited.wts"); } if (File.Exists("war3map.j")) { File.Delete("war3map.j"); } if (File.Exists("war3mapMisc.txt")) { File.Delete("war3mapMisc.txt"); } //导出文件 MpqLib.Mpq.CArchive map = new MpqLib.Mpq.CArchive(openMapDialog.FileName); if (map.FileExists("war3map.j")) { map.ExportFile("war3map.j", "war3map.j"); } if (map.FileExists("war3mapMisc.txt")) { map.ExportFile("war3mapMisc.txt", "war3mapMisc.txt"); } if (map.FileExists("war3map.wts")) { map.ExportFile("war3map.wts", "war3map_edited.wts"); } else { label1.Text = "war3map.wts doesn't exist in this map."; map.Close(); return; } TransferStatus(true); label1.Text = "Transfering strings from war3map.wts..."; wts_file wts = new wts_file("war3map_edited.wts"); wts.SaveStripDataFile(true); wts.StringMapping(); //打包进地图 map.ImportFile("war3map.wts", "war3map_edited.wts"); map.Flush(); map.Compact(); map.Close(); if (File.Exists("war3map_edited.wts")) { File.Delete("war3map_edited.wts"); } TransferStatus(false); refreshfrm(); label1.Text = "Finish."; MessageBox.Show("Finish!"); } }
private void button7_Click(object sender, EventArgs e) { if (openMapDialog.ShowDialog() == DialogResult.OK) { TransferStatus(true); if (Directory.Exists("map")) { Directory.Delete("map", true); } Directory.CreateDirectory(@"map\Units"); #region ---解压mpq--- //开始解压文件 label1.Text = "Extracting Files..."; //用于设置进度条。 progressBar1.Minimum = 0; progressBar1.Maximum = unitsfilelist.GetLength(0); progressBar1.Step = 1; progressBar1.Value = 0; MpqLib.Mpq.CArchive map = new MpqLib.Mpq.CArchive(openMapDialog.FileName); for (int i = 0; i < unitsfilelist.Length; i++) { progressBar1.PerformStep(); string filename = @"Units\" + unitsfilelist[i]; if (map.FileExists(filename)) { map.ExportFile(filename, @"map\Units\" + unitsfilelist[i]); } } if (map.FileExists(@"war3map.w3i")) //解w3i { map.ExportFile(@"war3map.w3i", @"map\" + @"war3map.w3i"); } if (map.FileExists(@"war3map.wts")) //解wts { map.ExportFile(@"war3map.wts", @"map\" + @"war3map.wts"); } //map.Close(); #endregion #region ---读取stringlist--- label1.Text = "Load string list..."; string inidata = @"inilist.txt"; string wtsdata = @"wts_data.txt"; if (!File.Exists(inidata)) { MessageBox.Show("inilist.txt missing"); return; } StreamReader sr = new StreamReader(inidata); string[] iniss = sr.ReadToEnd().Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); sr.Close(); if (!File.Exists(wtsdata)) { MessageBox.Show("wts_data.txt missing"); return; } StreamReader sr2 = new StreamReader(wtsdata); string[] wtsss = sr2.ReadToEnd().Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); sr2.Close(); #endregion #region ---还原w3i--- if (File.Exists(@"map\war3map.w3i")) { label1.Text = "Restoring war3map.w3i..."; RestoreFileStringFromW3i(@"map\war3map.w3i", wtsss, "GAME_STRING ", true); } #endregion #region ---还原wts--- if (File.Exists(@"map\war3map.wts")) { label1.Text = "Restoring war3map.wts..."; RestoreFileString(@"map\war3map.wts", wtsss, "GAME_STRING ", true); } #endregion #region ---还原slk--- label1.Text = "Restoring slk..."; //遍历文件夹 DirectoryInfo TheFolder = new DirectoryInfo(@"map\Units"); FileInfo[] TheFiles = TheFolder.GetFiles(); //用于设置进度条。 progressBar1.Minimum = 0; progressBar1.Maximum = TheFiles.GetLength(0); progressBar1.Step = 1; progressBar1.Value = 0; foreach (FileInfo NextFile in TheFolder.GetFiles()) { if (NextFile.Extension == ".txt" || NextFile.Extension == ".fdf") { RestoreFileString(NextFile.FullName, iniss, "INI_STRING "); //it also comes with the "GAME_STRING " Application.DoEvents(); RestoreFileString(NextFile.FullName, wtsss, "GAME_STRING "); Application.DoEvents(); } progressBar1.PerformStep(); Application.DoEvents(); } #endregion #region ---重新压入地图--- //war3map.j导入 if (File.Exists("war3map.j")) { File.Copy("war3map.j", @"map\war3map.j", true); } //war3mapMisc.txt导入 if (File.Exists("war3mapMisc.txt")) { File.Copy("war3mapMisc.txt", @"map\war3mapMisc.txt", true); } label1.Text = "Import to map..."; PackAllFileToMpq(Application.StartupPath + @"\map", Application.StartupPath + @"\map", map); map.Flush(); map.Compact(); map.Close(); #endregion label1.Text = "Finish."; TransferStatus(false); refreshfrm(); MessageBox.Show("Finish!"); } }
private void button7_Click(object sender, EventArgs e) { if (openMapDialog.ShowDialog() == DialogResult.OK) { TransferStatus(true); if (Directory.Exists("map")) { Directory.Delete("map", true); } Directory.CreateDirectory(@"map\Units"); #region ---解压mpq--- //开始解压文件 label1.Text = "Extracting Files..."; //用于设置进度条。 progressBar1.Minimum = 0; progressBar1.Maximum = unitsfilelist.GetLength(0); progressBar1.Step = 1; progressBar1.Value = 0; MpqLib.Mpq.CArchive map = new MpqLib.Mpq.CArchive(openMapDialog.FileName); for (int i = 0; i < unitsfilelist.Length; i++) { progressBar1.PerformStep(); string filename = @"Units\" + unitsfilelist[i]; if (map.FileExists(filename)) { map.ExportFile(filename, @"map\Units\" + unitsfilelist[i]); } } if (map.FileExists(@"war3map.w3i")) //解w3i { map.ExportFile(@"war3map.w3i", @"map\" + @"war3map.w3i"); } if (map.FileExists(@"war3map.wts")) //解wts { map.ExportFile(@"war3map.wts", @"map\" + @"war3map.wts"); } //map.Close(); #endregion #region ---读取stringlist--- label1.Text = "Load string list..."; string inidata = @"inilist.txt"; string wtsdata = @"wts_data.txt"; if (!File.Exists(inidata)) { MessageBox.Show("inilist.txt missing"); return; } StreamReader sr = new StreamReader(inidata); string[] iniss = sr.ReadToEnd().Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); sr.Close(); if (!File.Exists(wtsdata)) { MessageBox.Show("wts_data.txt missing"); return; } StreamReader sr2 = new StreamReader(wtsdata); string[] wtsss = sr2.ReadToEnd().Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); sr2.Close(); #endregion #region ---还原w3i--- if (File.Exists(@"map\war3map.w3i")) { label1.Text = "Restoring war3map.w3i..."; RestoreFileStringFromW3i(@"map\war3map.w3i", wtsss, "GAME_STRING ", true); } #endregion #region ---还原wts--- if (File.Exists(@"map\war3map.wts")) { label1.Text = "Restoring war3map.wts..."; RestoreFileString(@"map\war3map.wts", wtsss, "GAME_STRING ", true); } #endregion #region ---还原slk--- label1.Text = "Restoring slk..."; //遍历文件夹 DirectoryInfo TheFolder = new DirectoryInfo(@"map\Units"); FileInfo[] TheFiles = TheFolder.GetFiles(); //用于设置进度条。 progressBar1.Minimum = 0; progressBar1.Maximum = TheFiles.GetLength(0); progressBar1.Step = 1; progressBar1.Value = 0; foreach (FileInfo NextFile in TheFolder.GetFiles()) { if (NextFile.Extension == ".txt" || NextFile.Extension == ".fdf") { RestoreFileString(NextFile.FullName, iniss, "INI_STRING "); //it also comes with the "GAME_STRING " Application.DoEvents(); RestoreFileString(NextFile.FullName, wtsss, "GAME_STRING "); Application.DoEvents(); } progressBar1.PerformStep(); Application.DoEvents(); } #endregion #region ---重新压入地图--- //war3map.j导入 if (File.Exists("war3map.j")) { File.Copy("war3map.j", @"map\war3map.j", true); } //war3mapMisc.txt导入 if (File.Exists("war3mapMisc.txt")) { File.Copy("war3mapMisc.txt", @"map\war3mapMisc.txt", true); } label1.Text = "Import to map..."; PackAllFileToMpq(Application.StartupPath + @"\map", Application.StartupPath + @"\map", map); map.Flush(); map.Compact(); map.Close(); #endregion label1.Text = "Finish."; TransferStatus(false); refreshfrm(); MessageBox.Show("Finish!"); } }