Example #1
0
        private void button7_Click(object sender, EventArgs e)
        {
            var input = richTextBox4.Text;

            Regex ItemRegex             = new Regex(@"(.*)\s+x\s+(\d+).*", RegexOptions.Compiled);
            List <LisbethOrder> outList = new List <LisbethOrder>();

            var lines = richTextBox4.Text.Split('\n');
            int id    = 0;

            foreach (var line in lines)
            {
                if (ItemRegex.IsMatch(line))
                {
                    string test     = $@"<CraftAction Name=""{ItemRegex.Match(line).Groups[1]}"" ActionId=""XXXX""/>";
                    string item     = ItemRegex.Match(line).Groups[1].Value.Trim().Replace('-', ' ');
                    int    count    = int.Parse(ItemRegex.Match(line).Groups[2].Value.Trim());
                    var    realItem = SaintCHelper.realm.GameData.Items.First(s => s.Name.ToString().Equals(item));
                    var    recipe   = SaintCHelper.realm.GameData.GetSheet <Recipe>().First(i => i.ResultItem == realItem);

                    LisbethOrder result = new LisbethOrder(id, 1, realItem.Key, count, recipe.ClassJob.Name.ToString().FirstCharToUpper());
                    outList.Add(result);
                    id++;
                    richTextBox2.Text += $"{result}\n"; // $"{item} - {count} {realItem.Key} {recipe.ClassJob.Name.ToString().FirstCharToUpper()}\n";
                }
                else
                {
                    richTextBox2.Text += $"{line}\n";
                }
            }

            richTextBox1.Text = JsonConvert.SerializeObject(outList, (Newtonsoft.Json.Formatting)Formatting.None);
        }
Example #2
0
        private void button9_Click(object sender, EventArgs e)
        {
            var input = richTextBox4.Text;

            //Regex ItemRegex = new Regex(@"(.*)\s+x\s+(\d+).*", RegexOptions.Compiled);
            Regex ItemRegex             = new Regex(@"(\d+)x\s+(.+)", RegexOptions.Compiled);
            List <LisbethOrder> outList = new List <LisbethOrder>();
            string listName             = textBox2.Text.Trim();

            var lines = richTextBox4.Text.Split('\n');
            int id    = 0;

            foreach (var line in lines)
            {
                if (ItemRegex.IsMatch(line))
                {
                    string item     = ItemRegex.Match(line).Groups[2].Value.Trim(); //.Replace('-', ' ');
                    int    count    = int.Parse(ItemRegex.Match(line).Groups[1].Value.Trim());
                    var    realItem = SaintCHelper.realm.GameData.Items.First(s => s.Name.ToString().Equals(item));
                    var    recipe   = SaintCHelper.realm.GameData.GetSheet <Recipe>().First(i => i.ResultItem == realItem);

                    LisbethOrder result = new LisbethOrder(id, 1, realItem.Key, count, recipe.ClassJob.Name.ToString().FirstCharToUpper());
                    outList.Add(result);
                    id++;
                    richTextBox2.Text += $"{item} {result}\n"; // $"{item} - {count} {realItem.Key} {recipe.ClassJob.Name.ToString().FirstCharToUpper()}\n";
                }
                else
                {
                    richTextBox2.Text += $"{line}\n";
                }
            }

            richTextBox1.Text  = listName + "\n";
            richTextBox1.Text += JsonConvert.SerializeObject(outList, (Newtonsoft.Json.Formatting)Formatting.None);

            using (StreamWriter outputFile = new StreamWriter(Path.Combine("H:\\FCWorkshop", $"{listName}.json"), false))
            {
                outputFile.Write(JsonConvert.SerializeObject(outList, (Newtonsoft.Json.Formatting)Formatting.None));
            }
        }
Example #3
0
        private void button14_Click(object sender, EventArgs e)
        {
            var DoH     = Enumerable.Range(12, 16);
            var DoL     = Enumerable.Range(28, 6);
            var Armor   = Enumerable.Range(34, 10);
            var Jewelry = Enumerable.Range(40, 4);
            List <LisbethOrder> outList = new List <LisbethOrder>();
            var recipes = SaintCHelper.realm.GameData.GetSheet <Recipe>();

            var skybuilders  = recipes.Where(row => row.ResultItem.AsInt16("Level{Equip}") >= 43 && row.ResultItem.AsInt16("Level{Equip}") <= 43);
            var skybuilders2 = recipes.Where(row => row.ResultItem.AsInt16("Level{Equip}") >= 43 && row.ResultItem.AsInt16("Level{Equip}") <= 43);
            int id           = 0;

            var items = skybuilders.Where(i =>
                                          (Armor.Contains(i.ResultItem.ItemUICategory.Key) || DoH.Contains(i.ResultItem.ItemUICategory.Key)) && !i.ResultItem.Name.ToString().Contains("Vintage") &&
                                          (i.ResultItem.As <BaseParam>("BaseParam[0]").Key == 70 || i.ResultItem.As <BaseParam>("BaseParam[0]").Key == 71 || i.ResultItem.As <BaseParam>("BaseParam[0]").Key == 11));

            var items2 = skybuilders2.Where(i =>
                                            (Jewelry.Contains(i.ResultItem.ItemUICategory.Key)) &&
                                            (i.ResultItem.As <BaseParam>("BaseParam[0]").Key == 70 || i.ResultItem.As <BaseParam>("BaseParam[0]").Key == 71 || i.ResultItem.As <BaseParam>("BaseParam[0]").Key == 11));


            foreach (var recipe in items.Concat(items2).Distinct())
            {
                richTextBox3.Text += $"{recipe.ResultItem.Name} - {recipe.ResultItem.Key}\n";
                //recipe.ResultItem.
                richTextBox2.Text += $"{recipe.ResultItem.Key},";
                var item = new LisbethOrder(id, 1, recipe.ResultItem.Key, 1, recipe.ClassJob.Name.ToString().FirstCharToUpper());
                outList.Add(item);
                id++;
            }

            using (StreamWriter outputFile = new StreamWriter(Path.Combine("H:\\", $"DohLevel38-422.json"), false))
            {
                outputFile.Write(JsonConvert.SerializeObject(outList, (Newtonsoft.Json.Formatting)Formatting.None));
            }
        }
Example #4
0
        private void button10_Click(object sender, EventArgs e)
        {
            var list = SaintCHelper.realm.GameData.GetSheet <Quest>().Where(i => i.JournalGenre.JournalCategory.Key == 54).Select(i => i.JournalGenre).Distinct();



            // var items = SaintCHelper.realm.GameData.Items;

            var items   = SaintCHelper.realm.GameData.Items;
            var recipes = SaintCHelper.realm.GameData.GetSheet <Recipe>();



            foreach (var classN in list)
            {
                richTextBox2.Text += $" {classN.Name}\n";
                List <LisbethOrder> outList = new List <LisbethOrder>();
                int group = 0;

                var quests = SaintCHelper.realm.GameData.GetSheet <Quest>().Where(i => i.JournalGenre.Key == classN.Key);
                foreach (var quest in quests.OrderBy(q => q.AsInt16("ClassJobLevel[0]")))
                {
                    if (!quest.Instructions.Any(i => i.Key.ToString().Contains("RITEM")))
                    {
                        continue;
                    }
                    QuestData questData;
                    using (StreamReader sr = new StreamReader($@"G:\titanbotsmono\Toolbox\Dumptruck\bin\Release\2019.11.06.0000.0000\quests\{quest.Key}.json"))
                    {
                        // Read the stream to a string, and write the string to the console.
                        String line = sr.ReadToEnd();
                        questData = JsonConvert.DeserializeObject <QuestData>(line);
                    }

                    richTextBox1.Text += quest.Name + $"({quest.Key}) Level: {quest.AsInt16("ClassJobLevel[0]")}\n";

                    richTextBox3.Text += $"{questData.Name}\n";
                    foreach (var step1 in questData.StepProgression)
                    {
                        richTextBox3.Text += $"{step1.Step} {step1.Todo.HandOver.Count}\n";
                        foreach (var todo in step1.Todo.HandOver)
                        {
                            richTextBox3.Text += $"\t{todo.ItemId} {todo.Count} {todo.HQ_Only}\n";
                        }
                    }

                    int step = 0;
                    foreach (var arg in quest.Instructions.Where(i => i.Key.ToString().Contains("RITEM")))
                    {
                        //richTextBox1.Text += "\t" +  arg.Value + "\n";

                        if (SaintCHelper.realm.GameData.GetSheet <Recipe>().All(i => i.ResultItem.Key != arg.Value))
                        {
                            continue;
                        }

                        var recipe = SaintCHelper.realm.GameData.GetSheet <Recipe>().First(i => i.ResultItem.Key == arg.Value);


                        //    id++;

                        int count = 1;
                        if (questData.StepProgression.First(i => i.Step == 255).Todo.Count > 0)
                        {
                            count = questData.StepProgression.First(i => i.Step == 255).Todo.Count;
                        }


                        LisbethOrder result = new LisbethOrder(step, quest.AsInt16("ClassJobLevel[0]"), arg.Value, count, recipe.ClassJob.Name.ToString().FirstCharToUpper());

                        outList.Add(result);

                        richTextBox1.Text += "\t" + recipe.ResultItem.Name + $"  {count}\n";
                        step++;
                    }

                    group++;
                }

                // var lua = new LuaParser(quests.First(i => i.Key == 65671), SaintCHelper.realm);

                //  var test1 = lua.GetTodoArgs(5, 0); 1000691
                //   var test = lua._scriptVars;

/*                using (StreamWriter outputFile = new StreamWriter(Path.Combine("H:\\", $"{classN.Name}.json"), false))
 *              {
 *                  outputFile.Write(JsonConvert.SerializeObject(outList, (Newtonsoft.Json.Formatting) Formatting.Indented));
 *              }*/
            }
            //var test1 = lua.GetTodoArgs(1, 0);

            //      var test2 = lua.GetNpcTradeItemInfo(1, 1000691);//lua.TestId(1, 0);

/*            var q = quests.First(i => i.Key == 65671);
 *          var qnKey = (q["Id"] as XivString);
 *          var folder = qnKey.ToString().Split('_')[1].Substring(0, 3);
 *          var text = SaintCHelper.realm.GameData.GetSheet($"quest/{folder}/{qnKey}");
 *          var textdict = new Dictionary<string, string>();
 *
 *          foreach (var x in text)
 *          {
 *              textdict[(x[0] as XivString).ToString()] = (x[1] as XivString).ToString();
 *          }
 *
 *
 *          var todo = BuildTodo(q, textdict, lua, qnKey.ToString().ToUpper());*/

            // richTextBox3.Text += "\t" + questData. + "\n";
            //     foreach (var t in questData.StepProgression)
            //      {
            //         richTextBox3.Text += t.Todo.Description + "\t" + t.Todo.Count + "\n";
            //     }
        }
Example #5
0
        private void button8_Click(object sender, EventArgs e)
        {
            var recipes = SaintCHelper.realm.GameData.GetSheet <CompanyCraftSequence>().Skip(1).Where(i => i.CompanyCraftDraftCategory.Key == 2);
            Dictionary <string, Dictionary <Item, int> > itemDictionaryType = new Dictionary <string, Dictionary <Item, int> >();

            foreach (var recipe in recipes)
            {
                var    parts = recipe.CompanyCraftParts.Where(i => i.Key > 0);
                string typeS = recipe.ResultItem.Name.ToString().Split('-')[0];
                if (!itemDictionaryType.ContainsKey(typeS))
                {
                    itemDictionaryType.Add(typeS, new Dictionary <Item, int>());
                }

                richTextBox2.Text += $"Part: {recipe.ResultItem.Name} {recipe.CompanyCraftType} {recipe.CompanyCraftDraft}\n";

                //        foreach (var testItem in recipe.CompanyCraftDraft.RequiredItems)
                //        {
                //          richTextBox1.Text += $"{type} {recipe.CompanyCraftDraft != null}\n";
                //        }
                //
                List <LisbethOrder>    outList        = new List <LisbethOrder>();
                Dictionary <Item, int> itemDictionary = new Dictionary <Item, int>();
                foreach (var part in parts)
                {
                    var phases   = part.CompanyCraftProcesses.Select(i => i.Requests);
                    int phaseNum = 1;
                    //richTextBox2.Text += $"Sub part: {part.CompanyCraftType.Name}\n";
                    foreach (var phase in phases)
                    {
                        //richTextBox2.Text += $"\tPhase: {phaseNum}\n";
                        foreach (var item in phase)
                        {
                            string itemS = item.SupplyItem.Item.Name;
                            int    count = item.TotalQuantity;
                            if (itemDictionary.ContainsKey(item.SupplyItem.Item))
                            {
                                itemDictionary[item.SupplyItem.Item] += count;
                            }
                            else
                            {
                                itemDictionary.Add(item.SupplyItem.Item, count);
                            }

                            if (itemDictionaryType[typeS].ContainsKey(item.SupplyItem.Item))
                            {
                                itemDictionaryType[typeS][item.SupplyItem.Item] += count;
                            }
                            else
                            {
                                itemDictionaryType[typeS].Add(item.SupplyItem.Item, count);
                            }
                        }

                        phaseNum++;
                    }
                }

                int id = 0;
                foreach (var item in itemDictionary)
                {
                    var recipeItem = SaintCHelper.realm.GameData.GetSheet <Recipe>().FirstOrDefault(i => i.ResultItem == item.Key);
                    if (recipeItem == null)
                    {
                        continue;
                    }
                    LisbethOrder result = new LisbethOrder(id, 1, item.Key.Key, item.Value, recipeItem.ClassJob.Name.ToString().FirstCharToUpper());
                    outList.Add(result);
                    richTextBox2.Text += $"\t\t{result}\n";
                    id++;
                }


                var location = Path.Combine("H:\\FCWorkshop", typeS);
                if (!Directory.Exists(location))
                {
                    Directory.CreateDirectory(location);
                }


                using (StreamWriter outputFile = new StreamWriter(Path.Combine(location, $"{recipe.ResultItem.Name}.json"), false))
                {
                    outputFile.Write(JsonConvert.SerializeObject(outList, (Newtonsoft.Json.Formatting)Formatting.None));
                }
            }

            foreach (var dictType in itemDictionaryType)
            {
                richTextBox1.Text += $"{dictType.Key}\n";
                List <LisbethOrder> outList = new List <LisbethOrder>();
                int id = 0;
                foreach (var item in dictType.Value)
                {
                    richTextBox1.Text += $"\t{item.Key} x {item.Value}\n";
                    var recipeItem = SaintCHelper.realm.GameData.GetSheet <Recipe>().FirstOrDefault(i => i.ResultItem == item.Key);
                    if (recipeItem == null)
                    {
                        continue;
                    }
                    LisbethOrder result = new LisbethOrder(id, 1, item.Key.Key, item.Value, recipeItem.ClassJob.Name.ToString().FirstCharToUpper());
                    outList.Add(result);
                    //richTextBox2.Text += $"\t\t{result}\n";
                    id++;
                }

                using (StreamWriter outputFile = new StreamWriter(Path.Combine("H:\\FCWorkshop", $"{dictType.Key}.json"), false))
                {
                    outputFile.Write(JsonConvert.SerializeObject(outList, (Newtonsoft.Json.Formatting)Formatting.None));
                }
            }
        }