mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2026-05-15 02:58:12 +08:00
R26_dev8 - First public commit
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
using CodeWalker.GameFiles;
|
||||
using CodeWalker.Properties;
|
||||
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.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace CodeWalker
|
||||
{
|
||||
public partial class ExtractKeysForm : Form
|
||||
{
|
||||
private volatile bool KeysLoaded = false;
|
||||
private volatile bool InProgress = false;
|
||||
private volatile bool AbortOperation = false;
|
||||
|
||||
public ExtractKeysForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void ExtractKeysForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
FolderTextBox.Text = Settings.Default.GTAFolder;
|
||||
|
||||
try
|
||||
{
|
||||
GTA5Keys.LoadFromPath(Settings.Default.GTAFolder);
|
||||
KeysLoaded = true;
|
||||
UpdateStatus("Keys loaded. Nothing to do here!");
|
||||
}
|
||||
catch
|
||||
{
|
||||
//default label text has this case
|
||||
//UpdateStatus("Keys not found! Please scan a GTA 5 exe...");
|
||||
}
|
||||
}
|
||||
|
||||
private void FolderTextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
Settings.Default.GTAFolder = FolderTextBox.Text;
|
||||
ExeTextBox.Text = FolderTextBox.Text + "\\" + "GTA5.exe";
|
||||
}
|
||||
|
||||
private void FolderBrowseButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
FolderBrowserDialog.SelectedPath = Settings.Default.GTAFolder;
|
||||
DialogResult res = FolderBrowserDialog.ShowDialog();
|
||||
if (res == DialogResult.OK)
|
||||
{
|
||||
FolderTextBox.Text = FolderBrowserDialog.SelectedPath;
|
||||
}
|
||||
}
|
||||
|
||||
private void ExeBrowseButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(FolderTextBox.Text) && !string.IsNullOrEmpty(ExeTextBox.Text))
|
||||
{
|
||||
OpenFileDialog.InitialDirectory = FolderTextBox.Text;
|
||||
OpenFileDialog.FileName = ExeTextBox.Text;
|
||||
}
|
||||
DialogResult res = OpenFileDialog.ShowDialog();
|
||||
if (res == DialogResult.OK)
|
||||
{
|
||||
ExeTextBox.Text = OpenFileDialog.FileName;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void UpdateStatus(string text)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new Action(() => { UpdateStatus(text); }));
|
||||
}
|
||||
else
|
||||
{
|
||||
StatusLabel.Text = text;
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
private void BeginButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (InProgress) return;
|
||||
if (KeysLoaded)
|
||||
{
|
||||
if (MessageBox.Show("Keys are already loaded. Do you wish to do the extraction anyway?", "Keys already loaded", MessageBoxButtons.OKCancel) != DialogResult.OK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
InProgress = true;
|
||||
AbortOperation = false;
|
||||
|
||||
string exepath = ExeTextBox.Text;
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
if (AbortOperation)
|
||||
{
|
||||
UpdateStatus("Key extraction aborted.");
|
||||
return;
|
||||
}
|
||||
|
||||
FileInfo dmpfi = new FileInfo(exepath);
|
||||
|
||||
UpdateStatus(string.Format("Scanning {0} for keys...", dmpfi.Name));
|
||||
|
||||
|
||||
byte[] exedat = File.ReadAllBytes(exepath);
|
||||
GTA5Keys.GenerateV2(exedat, UpdateStatus);
|
||||
|
||||
|
||||
UpdateStatus("Saving found keys...");
|
||||
|
||||
//GTA5Keys.SaveToPath();
|
||||
|
||||
UpdateStatus("Keys extracted successfully.");
|
||||
KeysLoaded = true;
|
||||
InProgress = false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
UpdateStatus("Error - " + ex.ToString());
|
||||
|
||||
InProgress = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user