Ejemplo n.º 1
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!");
     }
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
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);
            }
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
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!");
     }
 }
Ejemplo n.º 7
0
        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!");
            }
        }
Ejemplo n.º 8
0
        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!");
            }
        }