using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; using Extentions; namespace VictusPatchGen { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void UpdateButtonClick(object sender, EventArgs e) { try { FileInfo hFileInfo = new FileInfo(String.Format("{0}\\{1}", Directory.GetCurrentDirectory(), "hash.dat")); FileInfo vFileInfo = new FileInfo(String.Format("{0}\\{1}", Directory.GetCurrentDirectory(), "version.dat")); FileInfo eFileInfo = new FileInfo(String.Format("{0}\\{1}", Directory.GetCurrentDirectory(), "Victus.exe")); if (vFileInfo.Exists) File.Delete(vFileInfo.FullName); if (!eFileInfo.Exists) throw new FileNotFoundException("File not found: Victus.exe"); List lFiles = new List(Directory.GetFiles(".\\ressystem", "*.*", SearchOption.AllDirectories)); List lHash = new List(); for (int i = 0; i < lFiles.Count; i++) { FileInfo iFileInfo = new FileInfo(String.Format("{0}\\{1}", Directory.GetCurrentDirectory(), lFiles[i])); lHash.Add(iFileInfo.GetMD5Hash()); } using (FileStream fStream = File.Create(hFileInfo.FullName)) { StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < lFiles.Count; i++) { if (lFiles[i].Contains("FPLIST.ons") || lFiles[i].Contains("KeyMapping.mco") || lFiles[i].Contains("Option.mco") || lFiles[i].Contains("OptionSound.mco")) continue; sBuilder.Append(lFiles[i]); sBuilder.Append(Environment.NewLine); sBuilder.Append(lHash[i]); if (i+1 < lFiles.Count) { sBuilder.Append(Environment.NewLine); } } Byte[] buffer = sBuilder.ToString().Encrypt(); fStream.Write(buffer, 0, buffer.Length); } using (FileStream eFile = File.Open(eFileInfo.FullName, FileMode.Open)) { eFile.Seek(0x4E, SeekOrigin.Begin); Byte[] buffer = BitConverter.GetBytes(Convert.ToInt32(VersionTextbox.Text)); eFile.Write(buffer, 0, 4); } using (FileStream fStream = File.Create(vFileInfo.FullName)) { StringBuilder sBuilder = new StringBuilder(); sBuilder.Append(VersionTextbox.Text); sBuilder.Append(Environment.NewLine); sBuilder.Append(eFileInfo.GetMD5Hash()); Byte[] buffer = sBuilder.ToString().Encrypt(); fStream.Write(buffer, 0, buffer.Length); } } catch (Exception ex) { MessageBox.Show(ex.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } MessageBox.Show(@"Version update success!", @"Victus Patch Info Generator", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void Form1_Load(object sender, EventArgs e) { try { FileInfo eFileInfo = new FileInfo(String.Format("{0}\\{1}", Directory.GetCurrentDirectory(), "Victus.exe")); if (!eFileInfo.Exists) throw new FileNotFoundException("File not found: Victus.exe"); using (FileStream eFile = File.Open(eFileInfo.FullName, FileMode.Open)) { eFile.Seek(0x4E, SeekOrigin.Begin); Byte[] buffer = new byte[4]; eFile.Read(buffer, 0, 4); VersionTextbox.Text = BitConverter.ToInt32(buffer, 0).ToString(); } } catch (Exception ex) { MessageBox.Show(ex.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Environment.Exit(0); } } } }