public static bool GenerateOJNList(ClientCheck Client) { if (!Directory.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Client.Music))) { _ = Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Client.Music)); } DirectoryInfo Folder = new( Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Client.Music) ); FileInfo[] Files = Folder.GetFiles("o2ma*.ojn"); if (Files.Length < 1) { _ = MessageBox.Show($"There no known files \"o2ma*.ojn\" in folder \"{Client.Music}\", check your folder if there any songs!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } int MAX_SONG_FILES_COUNT = 620; if (Files.Length > MAX_SONG_FILES_COUNT) { _ = MessageBox.Show($"Maximum client song count reached! ({Files.Length}/{MAX_SONG_FILES_COUNT})", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } Dictionary <string, OJN> ojnList = new(); foreach (FileInfo file in Files) { Log.Write($"OJNRead -> {file.Name}"); byte[] rawData = File.ReadAllBytes(file.FullName); OJN ojn = OJNDecoder.Decode(rawData); ojnList.Add(file.Name, ojn); } List <KeyValuePair <string, OJN> > list = ojnList.ToList(); list.Sort((KeyValuePair <string, OJN> pair1, KeyValuePair <string, OJN> pair2) => { return(pair1.Value.Id.CompareTo(pair2.Value.Id)); }); using MemoryStream ms = new(); using BinaryWriter br = new(ms); br.Write(ojnList.Count); foreach (KeyValuePair <string, OJN> itr in ojnList) { Log.Write($"OJNParse -> {itr.Key}"); br.Write(OJNEncoder.Encode(itr.Value, true)); } File.WriteAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Image", Client.OJNList), ms.ToArray()); return(true); }
public new void Show() { if (!File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "OTwo.exe"))) { _ = MessageBox.Show("Cannot find game executable! (OTwo.exe)", "Error", MessageBoxButton.OK, MessageBoxImage.Error); Hide(); return; } base.Show(); if (client == null) { client = new(); client.GetVersion("OTwo.exe"); MusicList.ItemsSource = null; } if (!File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Image", client.Avatar))) { _ = MessageBox.Show( string.Format(CultureInfo.CurrentCulture, "Cannot find game avatar file! ({0})", client.Avatar), "Error", MessageBoxButton.OK, MessageBoxImage.Error ); Hide(); return; } if (parser != null) { IsHide = false; ReloadComboBox(); return; } gender = config.Value("Gender") == 1 ? ItemGender.Male : ItemGender.Female; _ = Instrument.Items.Add(new ComboBoxItem().Content = "None"); _ = Hair.Items.Add(new ComboBoxItem().Content = "None"); _ = Accessory.Items.Add(new ComboBoxItem().Content = "None"); _ = Glove.Items.Add(new ComboBoxItem().Content = "None"); _ = Necklace.Items.Add(new ComboBoxItem().Content = "None"); _ = Glass.Items.Add(new ComboBoxItem().Content = "None"); _ = Hat.Items.Add(new ComboBoxItem().Content = "None"); _ = Pant.Items.Add(new ComboBoxItem().Content = "None"); _ = Earring.Items.Add(new ComboBoxItem().Content = "None"); _ = Shoe.Items.Add(new ComboBoxItem().Content = "None"); _ = Wing.Items.Add(new ComboBoxItem().Content = "None"); _ = Pet.Items.Add(new ComboBoxItem().Content = "None"); parser = new(this); byte[] data = parser.GetRawOJS("Avatar", "Itemdata_China.dat"); if (data == null) { data = parser.GetRawOJS("Avatar", "ItemData_China.dat"); } parser.Destroy(); ItemLists = ItemListParser.LoadData(data, this); foreach (ItemList item in ItemLists) { if (item.Gender == ItemGender.Unknown) { continue; } if (item.ItemCategory is ItemCategory.InstrumentBass or ItemCategory.InstrumentDrum or ItemCategory.InstrumentGuitar or ItemCategory.InstrumentPiano) { _ = Instrument.Items.Add(new ComboBoxItem().Content = item.Name); } if (item.ItemCategory == ItemCategory.Hair) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Hair.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Hair.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory is ItemCategory.Accessory or ItemCategory.Accessory2) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Accessory.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Accessory.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory == ItemCategory.Glove) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Glove.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Glove.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory == ItemCategory.Necklace) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Necklace.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Necklace.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory == ItemCategory.Hat) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Hat.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Hat.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory == ItemCategory.Pant) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Pant.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Pant.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory == ItemCategory.Glass) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Glass.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Glass.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory == ItemCategory.Earring) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Earring.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Earring.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory == ItemCategory.Shoe) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Shoe.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Shoe.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory == ItemCategory.Wing) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Wing.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Wing.Items.Add(new ComboBoxItem().Content = item.Name); } } } if (item.ItemCategory == ItemCategory.Pet) { if (item.Gender != ItemGender.Both) { if (item.Gender == gender) { _ = Pet.Items.Add(new ComboBoxItem().Content = item.Name); } } else { if (item.Gender == ItemGender.Both) { _ = Pet.Items.Add(new ComboBoxItem().Content = item.Name); } } } } IsHide = false; ReloadComboBox(); LoadOJNList(); }
public static async Task <bool> CanRunRPC(TextBox tbText1, TextBox tbText2, TextBox tbSmallText, TextBox tbLargeText, TextBox tbClientID = null, bool tokenTextChanged = false) { var isEnabled = true; if (tbText2.Text.Length == 1) { tbText2.SetResourceReference(Control.BorderBrushProperty, "Red"); tbText2.ToolTip = new ToolTip(App.Text.LengthMustBeAtLeast2CharactersLong); isEnabled = false; } else { tbText2.SetResourceReference(Control.BorderBrushProperty, "AccentColour4SCBrush"); tbText2.ToolTip = null; } if (tbText1.Text.Length == 1) { tbText1.SetResourceReference(Control.BorderBrushProperty, "Red"); tbText1.ToolTip = new ToolTip(App.Text.LengthMustBeAtLeast2CharactersLong); isEnabled = false; } else { tbText1.SetResourceReference(Control.BorderBrushProperty, "AccentColour4SCBrush"); tbText1.ToolTip = null; } if (tbSmallText.Text.Length == 1) { tbSmallText.SetResourceReference(Control.BorderBrushProperty, "Red"); tbSmallText.ToolTip = new ToolTip(App.Text.LengthMustBeAtLeast2CharactersLong); isEnabled = false; } else { tbSmallText.SetResourceReference(Control.BorderBrushProperty, "AccentColour4SCBrush"); tbSmallText.ToolTip = null; } if (tbLargeText.Text.Length == 1) { tbLargeText.SetResourceReference(Control.BorderBrushProperty, "Red"); tbLargeText.ToolTip = new ToolTip(App.Text.LengthMustBeAtLeast2CharactersLong); isEnabled = false; } else { tbLargeText.SetResourceReference(Control.BorderBrushProperty, "AccentColour4SCBrush"); tbLargeText.ToolTip = null; } var profile = MasterCustomPage.Profiles != null && MasterCustomPage.CurrentButton != null ? MasterCustomPage.Profiles[MasterCustomPage.CurrentButton.Content.ToString()] : null; if (OnCustomPage && profile != null) { if (!RPC.IsRPCRunning) { MainPage._MainPage.btnUpdate.IsEnabled = false; MainPage._MainPage.btnStart.IsEnabled = false; } var isValidCode = ulong.TryParse(tbClientID.Text, NumberStyles.Any, new NumberFormatInfo(), out var ID); if (App.Config.CheckToken && tokenTextChanged) { if (ID.ToString().Length != tbClientID.MaxLength || !isValidCode) { RPC.IDToUse = 0; tbClientID.SetResourceReference(Control.BorderBrushProperty, "Red"); tbClientID.ToolTip = !isValidCode ? new ToolTip(App.Text.ClientIDIsNotValid) : new ToolTip(App.Text.ClientIDMustBe18CharactersLong); isEnabled = false; } else { tbClientID.SetResourceReference(Control.BorderBrushProperty, "Orange"); tbClientID.ToolTip = new ToolTip(App.Text.CheckingClientID); await Task.Delay(1000); HttpResponseMessage T = null; try { var Client = new HttpClient(); T = await Client.GetAsync("https://discordapp.com/api/v6/oauth2/applications/" + ID.ToString() + "/rpc"); } catch { if (MainPage._MainPage.frmContent.Content is MasterCustomPage && RPC.Type == RPC.RPCType.Custom) { App.Logging.Error("API", App.Text.DiscordAPIDown); tbClientID.ToolTip = new ToolTip($"{App.Text.NetworkIssue}!"); tbClientID.SetResourceReference(Control.BorderBrushProperty, "Red"); isEnabled = false; } } if (MainPage._MainPage.frmContent.Content is MasterCustomPage && RPC.Type == RPC.RPCType.Custom && T != null && profile.ClientID == MasterCustomPage.Profiles[MasterCustomPage.CurrentButton.Content.ToString()].ClientID) { if (T.StatusCode == HttpStatusCode.BadRequest) { App.Logging.Error("API", App.Text.ClientIDIsNotValid); tbClientID.ToolTip = new ToolTip(App.Text.ClientIDIsNotValid); tbClientID.SetResourceReference(Control.BorderBrushProperty, "Red"); isEnabled = false; } else { var response = T.Content.ReadAsStringAsync().GetAwaiter().GetResult(); ClientCheck Check = Newtonsoft.Json.JsonConvert.DeserializeObject <ClientCheck>(response); if (Check != null && Check.message != "") { App.Logging.Error("API", App.Text.ClientIDIsNotValid); tbClientID.ToolTip = new ToolTip(App.Text.ClientIDIsNotValid); tbClientID.SetResourceReference(Control.BorderBrushProperty, "Red"); isEnabled = false; } else { if (MainPage._MainPage.frmContent.Content is MasterCustomPage) { RPC.IDToUse = ID; } tbClientID.SetResourceReference(Control.BorderBrushProperty, "AccentColour4SCBrush"); tbClientID.ToolTip = null; } } } } } else if (MainPage._MainPage.frmContent.Content is MasterCustomPage) { if (tokenTextChanged) { RPC.IDToUse = ID; tbClientID.SetResourceReference(Control.BorderBrushProperty, "AccentColour4SCBrush"); tbClientID.ToolTip = null; } else if (tbClientID.BorderBrush == Application.Current.Resources["Red"]) { isEnabled = false; } } } if (MainPage._MainPage.frmContent.Content is MultiRPCPage && RPC.Type == RPC.RPCType.MultiRPC || OnCustomPage && MasterCustomPage.Profiles[MasterCustomPage.CurrentButton.Content.ToString()] == profile && !RPC.AFK) { if (MainPage._MainPage.btnStart.Content.ToString() == App.Text.Shutdown) { MainPage._MainPage.btnUpdate.IsEnabled = isEnabled; MainPage._MainPage.btnStart.IsEnabled = true; } else { MainPage._MainPage.btnUpdate.IsEnabled = false; MainPage._MainPage.btnStart.IsEnabled = isEnabled; } } return(isEnabled); }