DOVAH

Forum Replies Created

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • in reply to: Crafting [Scenario Generator] #4985

    DOVAH
    Participant
    0

    So this script is amazing. I’ve been feeling the empty space where ACME Crafting Bot used to be and this goes a long way towards filling in that gap. (Now if only there was a way to track what items you have inside Miqobot like you can in ACME, or even get the items out of your retainers like it could in later versions)

    I’ve been using it as a bookmarklet in Chrome. You just put the following into a bookmark and when you click on the bookmark it’ll run on the page and show a popup with the info that you can then copy/paste to the script.

    WARNING: It DOES break for crafts with a very large list because it’ll shorten it with a “…” but the output is still there in the console so you can copy it from there as normal.

    
    javascript: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)").children("a:eq(1)").children("span").text(); }; 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; $(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); 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){ miqo = miqo.replace(/recipe\(Kite Shield\)/g, "recipe(Kite Shield, 3)"); miqo = miqo.replace(/recipe\(Goatskin Wristbands\)/g, "recipe(Goatskin Wristbands, 2)"); miqo = miqo.replace(/recipe\(Hempen Breeches\)/g, "recipe(Hempen Breeches, 2)"); miqo = miqo.replace(/recipe\(Copper Ring\)/g, "recipe(Copper Ring, 2)"); miqo = miqo.replace(/recipe\(Lapis Lazuli\)/g, "recipe(Lapis Lazuli, 2)"); miqo = miqo.replace(/recipe\(Brass Ring\)/g, "recipe(Brass Ring, 2)"); miqo = miqo.replace(/recipe\(Silver Ring\)/g, "recipe(Silver Ring, 2)"); miqo = miqo.replace(/recipe\(Garnet\)/g, "recipe(Garnet, 2)"); miqo = miqo.replace(/recipe\(Mythril Ring\)/g, "recipe(Mythril Ring, 3)"); miqo = miqo.replace(/recipe\(Horn Staff\)/g, "recipe(Horn Staff, 8)"); miqo = miqo.replace(/recipe\(Electrum Ring\)/g, "recipe(Electrum Ring, 2)"); miqo = miqo.replace(/recipe\(Honey\)/g, "recipe(Honey, 8)"); miqo = miqo.replace(/recipe\(Horn Fishing Rod\)/g, "recipe(Horn Fishing Rod, 2)"); miqo = miqo.replace(/recipe\(Ether\)/g, "recipe(Ether, 8)"); miqo = miqo.replace(/recipe\(Poisoning Potion\)/g, "recipe(Poisoning Potion, 2)"); miqo = miqo.replace(/recipe\(Paralyzing Potion\)/g, "recipe(Paralyzing Potion, 2)"); miqo = miqo.replace(/recipe\(Blinding Potion\)/g, "recipe(Blinding Potion, 2)"); miqo = miqo.replace(/recipe\(Sleeping Potion\)/g, "recipe(Sleeping Potion, 2)"); miqo = miqo.replace(/recipe\(Silencing Potion\)/g, "recipe(Silencing Potion, 2)"); miqo = miqo.replace(/recipe\(Boarskin Ring\)/g, "recipe(Boarskin Ring, 2)"); miqo = miqo.replace(/recipe\(Rose Gold Earrings\)/g, "recipe(Rose Gold Earrings, 2)"); miqo = miqo.replace(/recipe\(Mortar\)/g, "recipe(Mortar, 21)"); miqo = miqo.replace(/recipe\(Campfire\)/g, "recipe(Campfire, 2)"); miqo = miqo.replace(/recipe\(Manor Fireplace\)/g, "recipe(Manor Fireplace, 2)"); miqo = miqo.replace(/recipe\(Wall Chronometer\)/g, "recipe(Wall Chronometer, 2)"); miqo = miqo.replace(/recipe\(Cloche\)/g, "recipe(Cloche, 3)"); miqo = miqo.replace(/recipe\(Smithing Bench\)/g, "recipe(Smithing Bench, 2)"); miqo = miqo.replace(/recipe\(Wall Lantern\)/g, "recipe(Wall Lantern, 2)"); miqo = miqo.replace(/recipe\(Holy Rainbow Hat\)/g, "recipe(Holy Rainbow Hat, 2)"); miqo = miqo.replace(/recipe\(Reading Glasses\)/g, "recipe(Reading Glasses, 2)"); miqo = miqo.replace(/recipe\(Gaganaskin Gloves\)/g, "recipe(Gaganaskin Gloves, 2)"); miqo = miqo.replace(/recipe\(Gold Ingot\)/g, "recipe(Gold Ingot, 2)"); miqo = miqo.replace(/recipe\(Orchestrion\)/g, "recipe(Orchestrion, 4)"); miqo = miqo.replace(/recipe\(Camphor\)/g, "recipe(Camphor, 14)"); miqo = miqo.replace(/recipe\(Cordial\)/g, "recipe(Cordial, 2)"); miqo = miqo.replace(/recipe\(Survival Hat\)/g, "recipe(Survival Hat, 2)"); miqo = miqo.replace(/recipe\(Survival Shirt\)/g, "recipe(Survival Shirt, 3)"); miqo = miqo.replace(/recipe\(Survival Halfslops\)/g, "recipe(Survival Halfslops, 2)"); miqo = miqo.replace(/recipe\(Survival Boots\)/g, "recipe(Survival Boots, 2)"); miqo = miqo.replace(/recipe\(Luminous Fiber\)/g, "recipe(Luminous Fiber, 2)"); miqo = miqo.replace(/recipe\(Near Eastern Antique\)/g, "recipe(Near Eastern Antique, 2)"); miqo = miqo.replace(/recipe\(Coerthan Souvenir\)/g, "recipe(Coerthan Souvenir, 2)"); miqo = miqo.replace(/recipe\(Maelstrom Materiel\)/g, "recipe(Maelstrom Materiel, 2)"); miqo = miqo.replace(/recipe\(Heartfelt Gift\)/g, "recipe(Heartfelt Gift, 2)"); miqo = miqo.replace(/recipe\(Orphanage Donation\)/g, "recipe(Orphanage Donation, 2)"); miqo = miqo.replace(/recipe\(Platinum Ingot\)/g, "recipe(Platinum Ingot, 2)"); return miqo; }; var scenario = function(){ var miqo = ""; miqo += "//Pre-Requisite Crafting\r\n"; miqo += "solverPreset(recommended)\r\nnqhq(balanced)\r\nreclaimOff()\r\n\r\n"; miqo += chapter("PreRequisiteCrafting-section")+"\r\n"; miqo += "//Crafting List\r\n"; miqo += "solverPreset(recommended)\r\nnqhq(balanced)\r\nreclaimHQ(50)\r\n\r\n"; miqo += chapter("CraftingList-section")+"\r\n"; miqo += "//Repair\r\n"; miqo += "reclaimOff()\r\nrepair()\r\n"; miqo = antiDuplicate(miqo); window.prompt("Copy to clipboard: Ctrl+C, Enter", miqo); return miqo; }; console.log(scenario());
    
    in reply to: Patch 3.55a/3.55b – Miqobot Status #2923

    DOVAH
    Participant
    0

    So I think Diadem is a new map, as when I tried the Treasure Hunt function in there it came back with an unknown zone error.

    Sadly I closed the bot without thinking to copy down the Zone ID, but I wanted to let you know about it. I was in the gathering one.

    in reply to: Market bot for prices #2922

    DOVAH
    Participant
    0

    I mean, not something that walks to the bell… but something that grabbed prices for a list of items and output them to a csv file would be amazing.

    in reply to: Gathering Issue #2800

    DOVAH
    Participant
    0

    Ooh, colored log text sounds nice!

    To expand on catandfiddle’s idea, perhaps a log level system? Something as simple as an “Activate Debug Logs” checkbox to activate more detailed information, and then later down the line maybe categories that can be enabled/disabled for a cleaner output?

    in reply to: Patch 3.5 – Miqobot Status #2763

    DOVAH
    Participant
    0

    Thanks for the quick update!

    in reply to: Patch 3.5 – Miqobot Status #2656

    DOVAH
    Participant
    0

    Just a heads up there’s apparently a hotfix coming tonight, which would presumably break at least some of Miqobot all over again.

    in reply to: Cactpot Solver #2651

    DOVAH
    Participant
    1+

    Crap, I had written out a whole thing here and thought I posted it before I closed my browser. Apparently not.

    Let’s see what I can remember from it.

    I remember I talked about my usual approach to development, which is to emulate sitcom plots. First you build the framework as a pilot, establishing all the things you’ll need and giving an idea of what will be coming. Then you have the big features as the arc plot, something that you work on and build up to in the background over time. Then you have the small features as the episode plot, delivering things that aren’t nearly as complex as the arc plot, but still have something usable to show for it. That way you deliver things at a steady pace while avoiding either needing to take a long break for a large feature, or having a sudden rush of features set the customer’s expectations for that pace. Also as a personal thing, it means I don’t burn out on one specific feature and if I get stuck on something I can work on a different feature and come back with fresh eyes.

    To set expectations it might be good to have a development roadmap. Right now you just have lists of features that will someday be in the game, and most are from a long time ago. If you post what you plan on prioritizing then people might be able to give better feedback. For what it’s worth I would have absolutely agreed with putting that time in on the crafting solver as it makes your bot stand out from Minion, and the guy behind ACME Crafting Bot has been getting somewhat surly lately.

    As best I remember, the order I had things in was:

    1, Scenario Scripting

    This sounds like it’s the closest to done, and there are a lot of features that mention that they’ll work better once Scenario Scripting is in place. So this is probable where you’ll get the most bang for your buck. It’ll also probably help as a framework for other features.

    2, Combat

    When I first opened up Miqobot the first thing I did was flip through all the tabs. The face that the combat and scenario tabs basically just said “Coming soon!” worried me quite a bit. I thought I had bought an incomplete program and seeing that both of these had been “Coming Soon” for over 10 months based on the forum posts didn’t help. Personally I would remove these tabs for now or at least combine them both into some kind of “upcoming features” tab.

    For the actual function this would go best in stages. Have the first stage be something like “Run this macro when I’m in combat” Then add other features in stages like healing, food use, conditional use for things like cooldowns, and eventually FATE Grinding.

    3, DX9 Support

    I love that your bot is DX11 native as it’s the first time I’ve really played the game using it, and I can appreciate that the code for the two versions is radically different. But even if it doesn’t get the latest features right away, even if it’s a few versions behind, a DX9 version would be nice. Maybe have a DX9 version with every major release and the betas can still be DX11 only. A lot of people are still stuck on hardware that only supports DX9, and people who use multiple bots are still going to need to switch back and forth to use the different functions.

    4, Triple Triad

    Man I suck at Triple Triad. But I want those cards. While this is probably low priority I’m not aware of another bot that does this, so it would make yours stand out. Also it was announced 10+ months ago.

    5, Questing

    This doesn’t really affect me as I like actually running the quests and for experience this would take a backseat to FATE grinding anyways. I’d wait to see if someone sets something up using the scenario scripter before you put too much time into this.

    Last, New Trial Code

    Personally I’d say either adopt Minion’s model where you charge $3 for a 48 hour code while giving them away for free in the thread to people who ask for them (And coincidentally have your thread always be at the top of the forum) or just accept that a few people will have free trials. The guy who put out that version retracted his post anyways, so he’s not going to make a new version. Unless you suddenly saw hundreds of people getting new trial licenses every day (which I assume is how that works) I think you could just re-enable the trials without too much trouble. That’s up to you though.

    in reply to: Patch 3.5 – Miqobot Status #2650

    DOVAH
    Participant
    1+

    Yeah, as a solo player the possible trap locations is super useful for me. I can just weave between them the best I can and hardly ever get caught by them.

Viewing 8 posts - 1 through 8 (of 8 total)