Forum › Forums › Grids and Presets › Crafting [Scenario Generator]
This topic contains 216 replies, has 69 voices, and was last updated by Lyfox 2 years, 8 months ago.
-
AuthorPosts
-
June 11, 2017 at 8:10 am #3440
EDIT:
This generator is now adapted for Garland Tools.Part 1. Ffxivcrafting.com (read here)
Part 2. Garland Tools.——————————————————————————
So lately ive been using this site for crafting: http://ffxivcrafting.com/
Its insanely convenient for stuff like GC deliveries and gear sets. You make a list of recipes and it tells you all the reagents all the way to the bottom of craft tree. Now that Miqo gave us scenarios i thought maybe i could use it for some smart scenario baking. It turned out amazingly great and now i think every respectful miqocrafter must have this tool.Its written in javascript but relax you dont need to know coding to use it. Everything is already coded you just have to ctrlc-ctrlv in the right places.
1. Go to recipe book: http://ffxivcrafting.com/recipes . Use search by name and button on the right to make your crafting list.
2. Go to your crafting list: http://ffxivcrafting.com/list . Press the green button “Craft These Items”.
3. Go through sections #1 and #2 and upload these into your inventory. If youre a hoarder like me you should have everything in your retainers. Click on those youve obtained its a cool visual progress.
4. Now open web console. Ctrl-Shift-J in most browsers.
5. Copy and paste this script:var rJob = function(val){ return $(val).children("td:eq(4)").children("img:eq(0)").attr("src").replace("/img/jobs","").replace("/","").replace("-inactive","").replace(".png",""); }; var rRecipe = function(val){ return $(val).children("td:eq(0)").find("a:eq(1)").text().trim(); }; var rNeeded = function(val){ var txt = $(val).children("td:eq(1)").children("span").text(); var val = $(val).children("td:eq(1)").children("input").val(); return val > 0 ? val : txt; }; var rYields = function(val){ return $(val).attr("data-yields"); }; var rCount = function(val){ return Math.ceil(rNeeded(val)/rYields(val)); }; var chapter = function(tableId){ var reagents = $("tbody#"+tableId).children("tr.reagent").not(".success"); reagents.sort(function(a, b){ var lvlA = parseInt( $(a).attr("data-ilvl") ); var lvlB = parseInt( $(b).attr("data-ilvl") ); return (lvlA < lvlB) ? -1 : (lvlA > lvlB) ? 1 : 0; }); for(var i=0; i<reagents.length; i++){ var craftsLater = []; var from = -1; var to = -1 //console.log(reagents.get().map(rRecipe)); $(reagents.get().reverse()).each(function(index){ var itemId = $(this).attr("data-item-id"); var requires = $(this).attr("data-requires").split("&").map(function(value){ return value.split("x")[1]; }); var isCraftable = requires.reduce(function(isCraftable, requireId){ if(!isCraftable) return false; if(craftsLater.indexOf(requireId)>=0){ from = index; to = craftsLater.indexOf(requireId); return false; } return true; }, true); //console.log(rRecipe(this)+":"+(isCraftable?1:0)); if(!isCraftable) return false; craftsLater.push(itemId); }); if(from < 0 || to < 0) break; from = reagents.length-1 - from; to = reagents.length-1 - to; reagents.splice(to, 0, reagents.splice(from, 1)[0]); } var miqo = ""; reagents.each(function(){ miqo += "job("+rJob(this)+")\r\n"; miqo += "recipe("+rRecipe(this)+")\r\n"; miqo += "craft("+rCount(this)+")\r\n"; }); miqo += "//--Section crafts: "+reagents.get().reduce(function(allCount, val){ return allCount+rCount(val); },0)+"\r\n"; return miqo; }; var antiDuplicate = function(miqo){ var dupList = [ ["Kite Shield", 3], ["Goatskin Wristbands", 2], ["Hempen Breeches", 2], ["Copper Ring", 2], ["Lapis Lazuli", 2], ["Brass Ring", 2], ["Silver Ring", 2], ["Garnet", 2], ["Mythril Ring", 3], ["Horn Staff", 8], ["Electrum Ring", 2], ["Honey", 9], ["Horn Fishing Rod", 2], ["Ether", 8], ["Poisoning Potion", 2], ["Paralyzing Potion", 2], ["Blinding Potion", 2], ["Sleeping Potion", 2], ["Silencing Potion", 2], ["Elixir", 7], ["Obelisk", 2], ["Mailbreaker", 2], ["Rampager", 2], ["Boarskin Ring", 2], ["Pearl", 7], ["Astrolabe", 2], ["Rose Gold Earrings", 2], ["Sarnga", 2], ["Mortar", 22], ["Campfire", 2], ["Oasis Partition", 2], ["Manor Fireplace", 2], ["Cloche", 3], ["Smithing Bench", 2], ["Manor Harp", 2], ["Wall Lantern", 2], ["Holy Rainbow Hat", 2], ["Reading Glasses", 2], ["Archaeoskin Boots", 3], ["Gaganaskin Gloves", 2], ["Gazelleskin Ring", 4], ["Hedge Partition", 2], ["Wolfram Cuirass", 2], ["Wolfram Gauntlets", 2], ["Wolfram Sabatons", 2], ["Gold Ingot", 2], ["Serpentskin Gloves", 3], ["Orchestrion", 4], ["Camphor", 14], ["Cordial", 2], ["Survival Hat", 2], ["Survival Shirt", 3], ["Survival Halfslops", 2], ["Survival Boots", 2], ["Luminous Fiber", 2], ["Teahouse Bench", 2], ["Oden", 10], ["Carpeting", 2], ["Near Eastern Antique", 2], ["Coerthan Souvenir", 2], ["Maelstrom Materiel", 2], ["Heartfelt Gift", 2], ["Orphanage Donation", 2], ["Gyr Abanian Souvenir", 2], ["Far Eastern Antique", 2], ["Gold Saucer Consolation Prize", 2], ["Resistance Materiel", 2], ["Sui-no-Sato Special", 2], ["Cloud Pearl", 2], ["Signature Buuz Cookware", 2], ["Platinum Ingot", 2], ["Griffin Leather", 2], ["Wall Chronometer", 2], ]; dupList.forEach(function(row){ miqo = miqo.replace(new RegExp("recipe\\("+row[0]+"\\)", "g"), "recipe("+row[0]+", "+row[1]+")"); }); return miqo; }; var scenario = function(){ var miqo = ""; miqo += "//Pre-Requisite Crafting\r\n"; miqo += "solverPreset(recommended)\r\n"; miqo += "nqhq(balanced)\r\n"; miqo += "reclaimOff()\r\n\r\n"; miqo += chapter("PreRequisiteCrafting-section")+"\r\n"; miqo += "//Crafting List\r\n"; miqo += "solverPreset(recommended)\r\n"; miqo += "nqhq(balanced)\r\n"; miqo += "reclaimHQ(50)\r\n\r\n"; miqo += chapter("CraftingList-section")+"\r\n"; miqo += "//Repair\r\n"; miqo += "reclaimOff()\r\n"; miqo += "repair()\r\n"; miqo = antiDuplicate(miqo); //window.prompt("Copy to clipboard: Ctrl+C, Enter", miqo); return miqo; }; console.log(scenario());
6. Press Enter. Boom! You get the complete crafting scenario. Now copy and paste it into Miqobot.
7. Start.What this script does is simply parsing the webpage on your screen, extracting jobs, recipe names, and how many to craft. My personal investment is sorting by level and by dependency. The website likes to put reagents in weird order like Holy Rainbow Cloth – Holy Water. My script detects and reverts the wrong order.
And what is also cool is that website has all languages support. My script doesnt care about languages it parses names as they are so you get the correct scenario for Miqobot regardless.I think Miqo said there will be something similar in Miqobot one day. But until then – youre welcome.
EDIT: See that commented window.prompt near the end of script? Uncomment it and you will get a popup with scenario code already selected so you wont have to select it manually in console. Saves you a few seconds.
- This topic was modified 7 years, 5 months ago by Lyfox.
June 11, 2017 at 4:24 pm #3453June 11, 2017 at 10:43 pm #3462Thanks! Thought id show an example as well. Heres what i do to craft Ironworks left side set.
1. Use this link to quickly fill the crafting list: http://ffxivcrafting.com/list/saved/15516,1:15534,1:15519,1:15518,1:15515,1:15517,1
2. Press “Craft These Items”, Ctrl-Shift-J, copypaste the script above. See attached picture.(Note how Camphor correctly appears before Eikon Leather.)
- This reply was modified 7 years, 5 months ago by Lyfox.
Attachments:
You must be logged in to view attached files.June 12, 2017 at 12:33 am #3466June 12, 2017 at 6:21 pm #3483June 14, 2017 at 6:30 pm #3506June 15, 2017 at 1:38 pm #3525The only problem that I’ve been able to find is that the recopies assume that they are the only recipe matching in the list for instance something like Camphor will try and Craft Camphor Lumber instead of Camphor because it comes first in the list. I’ve been thinking of how to solve this but without a large list of potential duplicates I’m not sure how to solve it
June 15, 2017 at 3:57 pm #3527June 15, 2017 at 8:11 pm #3528June 24, 2017 at 9:19 pm #3728June 24, 2017 at 9:36 pm #3729A question , I’ve to manually switch jobs to craft? It has line error if I don’t switch manually
Sorry for the stupid question , Had to put it on hotbar. Was wondering if you turned self sufficient on? For a long list of GC delivery I wonder if self sufficient is turned on will it be bugged?
June 24, 2017 at 10:56 pm #3732Switching jobs is fully automated but of course you need em on hotbar.
Yea self sufficient is always on why not. Full GC delivery in one go. Pretty sure it can handle 100+ reagents no sweat, just make sure you have enough inventory space.Ive got something for that duplicates problem, should be easily solved. Will post later.
June 25, 2017 at 12:29 am #3734The truth I do not understand much that you tried to teach with this, that helps miqobot with the collection? It happens that when I press Ctrl-Shift-J this is left blank, I use browser opera, I attach an image thanks
- This reply was modified 7 years, 4 months ago by Perezoso.
June 25, 2017 at 12:33 am #3736June 25, 2017 at 12:39 am #3737 -
AuthorPosts
You must be logged in to reply to this topic.