Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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);
        }