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); }
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)); } }
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)); } }
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"; // } }
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)); } } }