public static void LoadRPC(Form f, Listeners.OnNativeListener onNative) { using (OpenFileDialog ofd = new OpenFileDialog()) { ofd.Title = "Load RPC BASE From File"; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { rpc.Clear(); Thread t = new Thread(new ThreadStart(() => { try { isFinished = false; String backup = f.Text; f.Invoke(new Action(() => { f.Text = "Loading RPC BASE..."; })); string file = System.IO.File.ReadAllText(ofd.FileName); string[] s_native = file.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); foreach (string native in s_native) { string[] hash = native.Split(new string[] { "=" }, StringSplitOptions.None); if (hash.Length > 1) { string name = hash[0].Trim(); UInt32 offset = Convert.ToUInt32(hash[1].Trim(), 16); if (!rpc.ContainsKey(name)) { rpc.Add(name, offset); } } } isFinished = true; f.Invoke(new Action(() => { onNative.OnNativesLoaded("RPC BASE Loaded!"); f.Text = "RPC BASE Loaded"; new Thread(new ThreadStart(() => { Thread.Sleep(3000); f.Invoke(new Action(() => { f.Text = backup; })); })).Start(); })); } catch (Exception ex) { f.Invoke(new Action(() => { onNative.OnNativesFailed("Failed To Load RPC BASE"); })); } })); t.Start(); } else { } } }
/// <summary> /// Load Natives From URL /// </summary> /// <param name="f">this form </param> /// <param name="onNative">public class Form1 : Form, GTAVDB.Listeners.OnNativeListener</param> /// <param name="link">Provide Link to load natives</param> public static void LoadNatives(Form f, Listeners.OnNativeListener onNative,string link) { natives.Clear(); Thread t = new Thread(new ThreadStart(() => { try { isFinished = false; String backup = f.Text; f.Invoke(new Action(() => { f.Text = "Loading Natives..."; })); WebClient wc = new WebClient(); string file = wc.DownloadString(link); string[] s_native = file.Split(new string[] { "," }, StringSplitOptions.None); foreach (string native in s_native) { string[] hash = native.Split(new string[] { "=" }, StringSplitOptions.None); if (hash.Length > 1) { string name = hash[0].Trim(); UInt32 offset = Convert.ToUInt32(hash[1].Trim(), 16); if (!natives.ContainsKey(name)) { natives.Add(name, offset); } } } f.Invoke(new Action(() => { onNative.OnNativesLoaded("Loaded"); f.Text = "Natives Loaded"; new Thread(new ThreadStart(() => { Thread.Sleep(3000); f.Invoke(new Action(() => { f.Text = backup; isFinished = true; })); })).Start(); })); }catch(Exception ex){ f.Invoke(new Action(() => { onNative.OnNativesFailed("Failed To Load Natives"); })); } })); t.Start(); }