This project is abandoned and its default file will likely not work with the most recent version of World of Warcraft. Whether this project is out of date or its author has marked it as abandoned, this project is no longer maintained.
GnomeWorks TradeSkill Frame -
a complete replacement for the blizzard trade skill frame.
Hard to determine if the difficulty filter _needs_ to be moved to it's own dropbox... For me it's much more obvious that there is a filter I can use (instead of "blind right clicking" on the header column). Don't know if there is enough space to move most (all) filters to their own dropbox) but I'd prefer such a solution.
I have the same problem as Oukami — the create button is dimmed. The queue button was there, I think. I did have some filtering enabled, if I remember correctly. I'll go back and check that when I get a chance.
highend: do you think the difficulty filter needs its own dropdown? it's doable, but i'm not sure why it and not other filters (like craftable, usable, profitable, etc).
i do think it can be a little vague as to what your current filtering settings are. perhaps some kind of icon strip could be devised to identify the current filters .. either attached to the column or even in a single location. right now, i simply highlight a column header if that column is being filtered. i think that's how it will be staying for now until a better solution came be designed.
okami: are you saying you can't select a recipe or that the "create"/"queue" buttons are disabled?
there has a been a report that filtering confuses the ability to create via the create button. did you have any filtering enabled?
For some reason with the newest version (r40) I can't select items to craft. I had to revert back to r39 to get that function back. I would try to select an item listed by clicking on it, but nothing would happen. Is it just me having this issue, or are others as well?
I like the "group by" dropdown functionality.
Do you think it would make more sense to move the "filter by difficulty" out of the recipe name header and put it in a drop down field (above or under the group by filter)?
The inventory list is broken, too. If I craft anything (e.g. epic gems) they never show up in that list.
there's a new version up. first pass of grouping has been added. you can select from the "standard" set of grouping methods: group by category, group by slot, or no grouping. you can also select subgroups to specifically limit the view.
i somehow broke something in the queue and it's a bit too late for me to figure out exactly wtf it was. it has to do with the basics of whether gw thinks you can craft something. the disabled button that says "nothing to process" should theoretically enable and indicate the recipe you'll craft by clicking on it. unfortunately, it doesn't. :(
you can, at least, use the Create button on the main window to craft in the mean time. hope to fix it soon.
Found another problem. put something in the queue, and then get the mats for it, the button that says "stop" (at least, I think that's what it says, the left one in the queue window) should, I think, change to "process", but it doesn't. No error message though. Maybe that's just not implemented yet?
Yeah, I'm getting the same error. Tried to chase it down to a conflict with another addon, but it seems to be random. It seems to corrupt the saved variables, and once that happens the only fix seems to be to dump the file and start fresh - until the next time. :-(
Message:Interface\AddOns\GnomeWorks\Inventory.lua:203:attempttoindexlocal'playerData'(anilvalue)Time:ThuJul109:09:452010Count:632Stack:[C]:?Interface\AddOns\GnomeWorks\Inventory.lua:203:infunction`GetInventoryCount'Interface\AddOns\GnomeWorks\Inventory.lua:121: in function `InventoryRecipeIterations'Interface\AddOns\GnomeWorks\MainWindow.lua:961:infunction`func'Interface\AddOns\GnomeWorks\ScrollFrame.lua:375: in function <Interface\AddOns\GnomeWorks\ScrollFrame.lua:354>Interface\AddOns\GnomeWorks\ScrollFrame.lua:370: in function `UpdateData'Interface\AddOns\GnomeWorks\ScrollFrame.lua:386:infunction`RefreshRows'Interface\AddOns\GnomeWorks\ScrollFrame.lua:849: in function `Refresh'Interface\AddOns\GnomeWorks\plugins\lsw.lua:380:infunction`RefreshWindow'...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:1226: in function `triggerFunction'...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:2182:infunction<...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:2174>Locals:self=<table>{RecipeGroupPruneList=<function>defined@Interface\AddOns\GnomeWorks\RecipeGroups.lua:595ToggleTradeSkillOptionDropDown=<function>defined@Interface\AddOns\GnomeWorks\RecipeGroups.lua:849CancelTimer=<function>defined@Interface\AddOns\Ace3\AceTimer-3.0\AceTimer-3.0.lua:311RecipeGroupAddSubGroup=<function>defined@Interface\AddOns\GnomeWorks\RecipeGroups.lua:196InventoryScan=<function>defined@Interface\AddOns\GnomeWorks\Inventory.lua:224SetInventoryCount=<function>defined@Interface\AddOns\GnomeWorks\Inventory.lua:146TRADE_SKILL_UPDATE=<function>defined@Interface\AddOns\GnomeWorks\MainWindow.lua:1111RecipeGroupConstructDBString=<function>defined@Interface\AddOns\GnomeWorks\RecipeGroups.lua:562GetTradeIcon=<function>defined@Interface\AddOns\GnomeWorks\GetTradeSkill.lua:155QueueWindow=GnomeWorksQueueFrame{}GetInventoryCount=<function>defined@Interface\AddOns\GnomeWorks\Inventory.lua:161RegisterMessageDispatch=<function>defined@Interface\AddOns\GnomeWorks\GnomeWorks.lua:74ScheduleTimer=<function>defined@Interface\AddOns\Ace3\AceTimer-3.0\AceTimer-3.0.lua:276ShowReagents=<function>defined@Interface\AddOns\GnomeWorks\Details.lua:327AddToQueue=<function>defined@Interface\AddOns\GnomeWorks\Queue.lua:911RegisterMessage=<function>defined@Interface\AddOns\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:118UnregisterMessage=<function>defined@Interface\AddOns\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:181data=<table>{}RecipeGroupSort=<function>defined@Interface\AddOns\GnomeWorks\RecipeGroups.lua:413SetFilterText=<function>defined@Interface\AddOns\GnomeWorks\MainWindow.lua:1125PopSelection=<function>defined@Interface\AddOns\GnomeWorks\SkillList.lua:399ExpandAllHeaders=<function>defined@Interface\AddOns\GnomeWorks\ScrollFrame.lua:580RecipeGroupOpRename=<function>defined@Interface\AddOns\GnomeWorks\RecipeGroups.lua:1007GetTradeSkillIcon=<function>defined@Interface\AddOns\GnomeWorks\GetTradeSkill.lua:196ConstructPseudoTrades=<function>defined@Interface\AddOns\GnomeWorks\GetTradeSkill.lua:55IsTradeSkillLinked=<function>defined@Interface\AddOns\GnomeWorks\GetTradeSkill.lua:196OnLoad=<function>defined@Interface\AddOns\GnomeWorks\GnomeWorks.lua:257DoTradeSkillUpdate=<function>defined@Interface\AddOns\GnomeWorks\MainWindow.lua:1043ParseSkillList=<function>defined@Interface\AddOns\GnomeWorks\SkillList.lua:213PLAYER_GUILD_UPDATE=<function>defined@Interface\AddOns\GnomeWorks\GnomeWorks.lua:248RecipeGroupNew=<function>defined@Interface\AddOns\GnomeWorks\RecipeGroups.lua:68RecipeGroupOpNew=<function>defined@Interface\AddOns\GnomeWorks\RecipeGroups.lua:926GetSkillColor=<function>defined@Interface\AddOns\GnomeWorks\SkillList.lua:772CreateQueueWindow=<function>defined@Interface\AddOns\GnomeWorks\Queue.lua:1341Recip
yeah, gnomeworks is kind of memory intensive -- particularly if you browse all the available recipes. it retains all this data in memory which is probably in the 3mb range (pretty much all info you'd need to know about a particular recipe plus some reverse lookups). there's a bit of wasted data that gets generated when you browse as well -- it wraps the recipe list into a grouping data structure and doesn't let go. i'll definitely work on the latter issue -- just need to wipe that data when you switch views. i'll probably address it when i get back into the group management stuff (custom groups, view by slot, etc).
but i think the nature of the mod is going to mean that it's not going to be the most lightweight thing on the planet... i figure it'll probably be in the 5mb realm for a hardcore user and probably 1-2mb for somebody that just crafts casually and doesn't browse the entire tradeskill list.
ya know, i've never actually used glypher (no scribe) so maybe it's not as applicable to other tradeskills as i'm thinking, but it seems to me that if market conditions are different for different tradeskills, you could easily provide options to a system to consider those different forces at your discretion.
do you use lilsparkys workshop? that hooks gw (and skillet and many other tradeskills mods) together to auctioneer (and other ah mods) to provide ah prices into the tradeskill frame. there is logic in there to price out the cheapest path to construct an item, tho it pays not attention to available materials. i do not want to have gw duplicate this effort. i do want lsw to be able to have a hand in guiding crafting beyond simply passively reporting prices (which is all it does right now). i will definitely be adding a price column to the queue list to indicate costs and i my current thought has me adding a lsw function somewhere (a button on the queue frame?) that will "lock in" a fixed path to make your items as cheaply as possible (preferably with an understanding of what reagents are currently available in the ah). i'm still reconciling this fixed path with the dynamic nature of the queue system..
there is not really any docs for gw plugins. there are currently two plugins in the gw folder that i wrote partially to see what kinds of things i needed to expose. you can browse thru them and see if they make sense. they probably plug into some internal gw stuff still...
i agree with you about the tools being offered at the ah. back in the early days of tbc, i had a little mod that just put the disenchant value next to each item in the auction house. i made boats of cash just scraping for the primo items to de. it was especially nice because of the weird item-level overlap of that era. the required levels diverged from the item levels so you couldn't just search for level 56-60 green armor and know what you'd get. of course, now auctioneer has a module to scan for good de values... sigh. the good news is that blizzard is making it rain gold these days, so it's still pretty easy to make money at the ah.
Thank you again for offering so much insight into what you're doing. You've definitely gone above and beyond what I'd normally expect from a developer. I also appreciate you mentioning the Auctioneer people are on top of this. I'll probably just wait for them to release a patch and keep using skillet in the mean time.
The idea of a built-in mod to figure out what's profitable, then intelligently craft & post it sounds really intriguing. I've also wondered why glypher only handles glyphs. My conclusion is that the glyph market's dynamics are somewhat unique and amenable to automation for short-term profits.
Anyway, raw trade goods, intermediate trade goods, potions/elixirs/scrolls, vanity items, combat gear, etc all have slightly different market dynamics. Because of this I do like Auctioneer's notion of having several different pricing mechanics. I do think that for a plugin to make this easier, you want the crafting and the posting somewhat tied together—hooking into both Auctioneer and GW. You'd also need some kind of market feedback (BeanCounter) to determine how many of each item you can reasonably sell before market conditions change. There's also questions about finding optimal stack sizes, or posting with multiple stack sizes, but that may be reaching a bit too far into the AI sky.
So thanks for the suggestion, I'm going to do a little more looking into this. Is there any emerging documentation for how to write a gw addon? I've only just started using it and skimming some of the code. If I were going to look at doing this, it's necessary to have a way to calculate the cheapest route to craft something. Just searching the graph one level deep is often a very poor reflection of the optimal crafting costs. Do you have some functionality like this in development? If not I may take a stab at it and hopefully you can make use of it. It seems like a pretty orthogonal component with many uses.
I'll try to get in touch with the Auctioneer people a little too so as to not duplicate effort if something cool is going on. No promises, but I kinda feeling like writing some code for WoW, and trade skills and auctions are the areas that interest me most.
Thanks again, Sarah
PS: I have to say that part of me doesn't want this stuff to get too easy. I make fair gold being one of the few people on my server who really knows the tools and techniques to use to efficiently and statistically work the auctions market. (Not that you need a Ph.D in economics, just frequent market scans and some knowledge of basic statistics.) But a healthy market is ultimately good for everyone, and I've profited a lot from the work of others, so it's probably a good thing. :-)
i think i'll spend a bit of time on the api for the queue in the next revision. it actually might help me refocus things that have grown a little hairy. something to keep in mind as it relates specifically to glypher is that the auctioneer guys are already on top of things and will make glypher work with gw as soon as it's reasonable. not to dissuade any rogue attempts to plug the two together, but just to let you know it's on everybody's list.
that said, one thing that i've always wondered about with glypher is why it's scribe-specific. it seems like the basic premise would hold true for pretty much all trade skills. it seems a general purpose "make the stuff that sells well" mod (or addon to gw, hint, hint) would be a nice thing.
about the api to gw's queue...
a feature i intend to add to gw is the notion of a quota. a quota is a persistent queue entry that is dynamic based on the specified inventory (bag, bank, guildbank, alts). so if you say you want 10 glyphs of X, it'll always try to maintain that number of glyphs for you.
i think if a mod like glypher plugged into this system (not necessarily creating quotas for the items, but simply utilizing the same internal system, eg i want 10, you figure out if i need to craft any right now) then clearing the queue or needing to know much about it would be unneeded.
my goal for a queue api would be to base things on results rather than steps. the queue system is designed to deal with the steps, you should just tell it how many items you want made when it's done.
i've always been annoyed by the blizz api regarding number of items crafted. it simply doesn't respect specializations. i can understand quirky things like procs, but cloth specialists get 2 specialty cloths every time. the api call is there (GetTradeSkillNumMade()) so why not return the correct values? oh well. i could probably generate a table to over-ride things when i detect specialties which would help in predicting things like reagents required, but the way the queue works, the reagents are crafted by need, not by some pre-arranged script. as your actual inventory changes, the numbers change. if you get 2 cloths every iteration instead of 1, it'll finish that queue entry that much faster. the caveat here is that you can't stop the current craft cycle, you can only stop after the skill has finished (ie between craft iterations). and i haven't yet added that ability anyway (if it starts crafting 10 iterations, it'll craft 10 iterations even if it's not needed anymore).
so the craft til i have x will be in there as best as the api allows. i'll probably also have craft until i hit level x if i can (tho that requires a ui to pick the level...)
your dream scenario is close to what i'm aiming for. the nice thing about gw at the moment is that the queue doesn't die if you can't craft the first thing on the list, it'll simply craft the first thing craftable. that said, i'll be adding some comprehensive sorting and reordering stuff to the queue as well as a simple means to execute entries a la carte (right click an entry and say "execute" or something like that) so the whole problem of missing reagents stopping all production shouldn't exist with gw.
in terms of crafting between alts, i'm still considering options. one method is to simply look at items you can craft in other people's queues given your current inventory. so if you log into your miner and see that your engineer has some bars queued up and you got the mats handy, it'll go ahead and craft those items for your alt. similarly, if you have items an alt needs and you're at the mailbox, i'd love for it to auto mail them to your alt (combine the two processes and you have craft and mail the results automatically). to make it go full circle, it might be worth having a mechanism in the engineer's queue to assign a queue entry to an alt. then that player would also have a requirement of source mats that could be mailed to them so they can do the requisite crafting and mail the results back...
anyway, that's kind of where i'm aiming with this.
Here's what's needed to make Glypher continue to work. To make the basic functionality work, you only really need the ability to add n of an arbitrary item, just like the user clicked Queue.
However, it also has an (optional) feature to auto-clear the queue if it's not empty, so that you're not crafting twice as many as you need or continue to craft after market conditions have changed. The queue glyphs mechanism basically assumes that the current character's queue is empty, and the option ensures that this is so.
My ideal would be to have something like this. I don't know the blizz apis that well, and there might be an additional set if you plan to allow different queues for the same player… but I can't imagine a scenario where there wasn't a main or default queue.
Anyway, this is just a proposal for what I'd probably do. Many of these are simple convenience methods, but I can't easily imagine a scenario where you wouldn't want all these methods, or one where any of them would have to change (except possibly adding addition methods for multiple queues). I had something like just the first of these I could kludge things, but a clear queue would be nice.
# Add count of the output of a recipe to the given # character's queue addItem(characterId, recipeId, count);
# Add count of the output of a recipe to the current # character's queue addItem(recipeId, count);
# Clear the given character's queue clearQueue(characterId);
# Clear the current character's queue clearQueue();
# Check the size of the given character's queue queueSize(characterId);
# Check the size of the current character's queue queueSize();
# Check whether the given character's queue is empty isQueueEmpty(characterId);
# Check whether the current character's queue is empty isQueueEmpty();
This does bring up one tricky issue that I forgot to mention last time: multiple-output crafting. Examples here are tailoring or alchemy specialization. When I tailor, I always get two when I make primal mooncloth or moonshroud. But all of the TS replacements I've tried will queue it up in dependencies as though I always get one. Trickier is alchemy, where I sometimes get more than I asked for. At the very least, I'd like to see the dependency resolution mechanism account for my Mooncloth Tailoring. (Yes, this is going away in Cataclysm, but it's not here yet and it's pretty annoying for now.)
This mechanism might argue for queue management functions for both "go until I've crafted n" and "execute n times." I'd say for shopping lists, you might want to always use only estimates that are 100% probable. So I'd say you'd count mooncloth tailoring toward shopping lists, and ignore elixir mastery. But, for example, if I wanted 10 elixirs a prerequisite for something, ideally it would stop when I had 10 if my elixir bonus proc'd.
My dream example here:
Say that to level up I decide the most profitable thing is to make 5 Toughened Leather Gloves, each of which requires 2 Elixir of Defense.
I queue this and get the leather, but I don't have the necessary Elixirs of Defense. I choose (or GW chooses by default) to craft these.
I hop over to my alchemist and open GW, which already has those queued up.
This might work best in a separate dependency queue with its own Process button, that my normal Clear doesn't empty. The fact that my alt wants something shouldn't prevent me from doing my own stuff. My alt's needs are often low priority, but I don't necessarily want to empty their queues either. Something like a drop-down with my name and the names of all my GW-using alts might work here.
I press queue and it starts crafting Elixir of Defense until I have 10, regardless of how many times the recipe needs to be executed.
I mail them back and craft my gloves.
All make sense? This is a dream scenario, but I thought it might be useful to you to see the kind of stuff I would envision in my ideal TSW. If nothing else, dream scenarios can help you design APIs and mould your code flexibly for functionality that you might add later. (Just so long as you avoid the infamous second-system syndrome.)
Again, if I can give any help with any of this, let me know. Otherwise good luck. I hope I don't seem pushy: I'm only trying to be helpful.
I'm with sarah on the API. The only reason that I haven't switched over to using Gnomeworks full time is that I didn't want to hook my jewelcrafting/inscription addon into a "private" function.
I'd vote for a simple API function that adds a given number of an item to the current queue to get us started with the understanding that it is completely possible that it might change in the future if the need arises.
My addon is a modification of kevqueue that I put into a frame and modified to fit my needs so I can change as I need to when you need to change the API.
Keep up the good work!
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Hard to determine if the difficulty filter _needs_ to be moved to it's own dropbox... For me it's much more obvious that there is a filter I can use (instead of "blind right clicking" on the header column). Don't know if there is enough space to move most (all) filters to their own dropbox) but I'd prefer such a solution.
Regards, Highend
I noticed the not being able to craft occasionally. I partly solved this by doing a /reload or /rl and was able to select a item to craft.
I have the same problem as Oukami — the create button is dimmed. The queue button was there, I think. I did have some filtering enabled, if I remember correctly. I'll go back and check that when I get a chance.
highend: do you think the difficulty filter needs its own dropdown? it's doable, but i'm not sure why it and not other filters (like craftable, usable, profitable, etc).
i do think it can be a little vague as to what your current filtering settings are. perhaps some kind of icon strip could be devised to identify the current filters .. either attached to the column or even in a single location. right now, i simply highlight a column header if that column is being filtered. i think that's how it will be staying for now until a better solution came be designed.
okami: are you saying you can't select a recipe or that the "create"/"queue" buttons are disabled?
there has a been a report that filtering confuses the ability to create via the create button. did you have any filtering enabled?
For some reason with the newest version (r40) I can't select items to craft. I had to revert back to r39 to get that function back. I would try to select an item listed by clicking on it, but nothing would happen. Is it just me having this issue, or are others as well?
I like the "group by" dropdown functionality. Do you think it would make more sense to move the "filter by difficulty" out of the recipe name header and put it in a drop down field (above or under the group by filter)?
The inventory list is broken, too. If I craft anything (e.g. epic gems) they never show up in that list.
Regards and keep up the good work, Highend
there's a new version up. first pass of grouping has been added. you can select from the "standard" set of grouping methods: group by category, group by slot, or no grouping. you can also select subgroups to specifically limit the view.
i somehow broke something in the queue and it's a bit too late for me to figure out exactly wtf it was. it has to do with the basics of whether gw thinks you can craft something. the disabled button that says "nothing to process" should theoretically enable and indicate the recipe you'll craft by clicking on it. unfortunately, it doesn't. :(
you can, at least, use the Create button on the main window to craft in the mean time. hope to fix it soon.
Excellent! :-)
Found another problem. put something in the queue, and then get the mats for it, the button that says "stop" (at least, I think that's what it says, the left one in the queue window) should, I think, change to "process", but it doesn't. No error message though. Maybe that's just not implemented yet?
i fixed the issue and i'll have a new version up later. just wrapping up some new functionality.
Yeah, I'm getting the same error. Tried to chase it down to a conflict with another addon, but it seems to be random. It seems to corrupt the saved variables, and once that happens the only fix seems to be to dump the file and start fresh - until the next time. :-(
I really like the look of the addon, though! :-)
poop.
With r39:
yeah, gnomeworks is kind of memory intensive -- particularly if you browse all the available recipes. it retains all this data in memory which is probably in the 3mb range (pretty much all info you'd need to know about a particular recipe plus some reverse lookups). there's a bit of wasted data that gets generated when you browse as well -- it wraps the recipe list into a grouping data structure and doesn't let go. i'll definitely work on the latter issue -- just need to wipe that data when you switch views. i'll probably address it when i get back into the group management stuff (custom groups, view by slot, etc).
but i think the nature of the mod is going to mean that it's not going to be the most lightweight thing on the planet... i figure it'll probably be in the 5mb realm for a hardcore user and probably 1-2mb for somebody that just crafts casually and doesn't browse the entire tradeskill list.
@sarah_a180 I had mentioned it many pages back.
Have you noticed that GW has a big memory footprint? I'll have to log into game and see what it says.
ya know, i've never actually used glypher (no scribe) so maybe it's not as applicable to other tradeskills as i'm thinking, but it seems to me that if market conditions are different for different tradeskills, you could easily provide options to a system to consider those different forces at your discretion.
do you use lilsparkys workshop? that hooks gw (and skillet and many other tradeskills mods) together to auctioneer (and other ah mods) to provide ah prices into the tradeskill frame. there is logic in there to price out the cheapest path to construct an item, tho it pays not attention to available materials. i do not want to have gw duplicate this effort. i do want lsw to be able to have a hand in guiding crafting beyond simply passively reporting prices (which is all it does right now). i will definitely be adding a price column to the queue list to indicate costs and i my current thought has me adding a lsw function somewhere (a button on the queue frame?) that will "lock in" a fixed path to make your items as cheaply as possible (preferably with an understanding of what reagents are currently available in the ah). i'm still reconciling this fixed path with the dynamic nature of the queue system..
there is not really any docs for gw plugins. there are currently two plugins in the gw folder that i wrote partially to see what kinds of things i needed to expose. you can browse thru them and see if they make sense. they probably plug into some internal gw stuff still...
i agree with you about the tools being offered at the ah. back in the early days of tbc, i had a little mod that just put the disenchant value next to each item in the auction house. i made boats of cash just scraping for the primo items to de. it was especially nice because of the weird item-level overlap of that era. the required levels diverged from the item levels so you couldn't just search for level 56-60 green armor and know what you'd get. of course, now auctioneer has a module to scan for good de values... sigh. the good news is that blizzard is making it rain gold these days, so it's still pretty easy to make money at the ah.
Hey lilsparky,
Thank you again for offering so much insight into what you're doing. You've definitely gone above and beyond what I'd normally expect from a developer. I also appreciate you mentioning the Auctioneer people are on top of this. I'll probably just wait for them to release a patch and keep using skillet in the mean time.
The idea of a built-in mod to figure out what's profitable, then intelligently craft & post it sounds really intriguing. I've also wondered why glypher only handles glyphs. My conclusion is that the glyph market's dynamics are somewhat unique and amenable to automation for short-term profits.
Anyway, raw trade goods, intermediate trade goods, potions/elixirs/scrolls, vanity items, combat gear, etc all have slightly different market dynamics. Because of this I do like Auctioneer's notion of having several different pricing mechanics. I do think that for a plugin to make this easier, you want the crafting and the posting somewhat tied together—hooking into both Auctioneer and GW. You'd also need some kind of market feedback (BeanCounter) to determine how many of each item you can reasonably sell before market conditions change. There's also questions about finding optimal stack sizes, or posting with multiple stack sizes, but that may be reaching a bit too far into the AI sky.
So thanks for the suggestion, I'm going to do a little more looking into this. Is there any emerging documentation for how to write a gw addon? I've only just started using it and skimming some of the code. If I were going to look at doing this, it's necessary to have a way to calculate the cheapest route to craft something. Just searching the graph one level deep is often a very poor reflection of the optimal crafting costs. Do you have some functionality like this in development? If not I may take a stab at it and hopefully you can make use of it. It seems like a pretty orthogonal component with many uses.
I'll try to get in touch with the Auctioneer people a little too so as to not duplicate effort if something cool is going on. No promises, but I kinda feeling like writing some code for WoW, and trade skills and auctions are the areas that interest me most.
Thanks again,
Sarah
PS: I have to say that part of me doesn't want this stuff to get too easy. I make fair gold being one of the few people on my server who really knows the tools and techniques to use to efficiently and statistically work the auctions market. (Not that you need a Ph.D in economics, just frequent market scans and some knowledge of basic statistics.) But a healthy market is ultimately good for everyone, and I've profited a lot from the work of others, so it's probably a good thing. :-)
i think i'll spend a bit of time on the api for the queue in the next revision. it actually might help me refocus things that have grown a little hairy. something to keep in mind as it relates specifically to glypher is that the auctioneer guys are already on top of things and will make glypher work with gw as soon as it's reasonable. not to dissuade any rogue attempts to plug the two together, but just to let you know it's on everybody's list.
that said, one thing that i've always wondered about with glypher is why it's scribe-specific. it seems like the basic premise would hold true for pretty much all trade skills. it seems a general purpose "make the stuff that sells well" mod (or addon to gw, hint, hint) would be a nice thing.
about the api to gw's queue...
a feature i intend to add to gw is the notion of a quota. a quota is a persistent queue entry that is dynamic based on the specified inventory (bag, bank, guildbank, alts). so if you say you want 10 glyphs of X, it'll always try to maintain that number of glyphs for you.
i think if a mod like glypher plugged into this system (not necessarily creating quotas for the items, but simply utilizing the same internal system, eg i want 10, you figure out if i need to craft any right now) then clearing the queue or needing to know much about it would be unneeded.
my goal for a queue api would be to base things on results rather than steps. the queue system is designed to deal with the steps, you should just tell it how many items you want made when it's done.
i've always been annoyed by the blizz api regarding number of items crafted. it simply doesn't respect specializations. i can understand quirky things like procs, but cloth specialists get 2 specialty cloths every time. the api call is there (GetTradeSkillNumMade()) so why not return the correct values? oh well. i could probably generate a table to over-ride things when i detect specialties which would help in predicting things like reagents required, but the way the queue works, the reagents are crafted by need, not by some pre-arranged script. as your actual inventory changes, the numbers change. if you get 2 cloths every iteration instead of 1, it'll finish that queue entry that much faster. the caveat here is that you can't stop the current craft cycle, you can only stop after the skill has finished (ie between craft iterations). and i haven't yet added that ability anyway (if it starts crafting 10 iterations, it'll craft 10 iterations even if it's not needed anymore).
so the craft til i have x will be in there as best as the api allows. i'll probably also have craft until i hit level x if i can (tho that requires a ui to pick the level...)
your dream scenario is close to what i'm aiming for. the nice thing about gw at the moment is that the queue doesn't die if you can't craft the first thing on the list, it'll simply craft the first thing craftable. that said, i'll be adding some comprehensive sorting and reordering stuff to the queue as well as a simple means to execute entries a la carte (right click an entry and say "execute" or something like that) so the whole problem of missing reagents stopping all production shouldn't exist with gw.
in terms of crafting between alts, i'm still considering options. one method is to simply look at items you can craft in other people's queues given your current inventory. so if you log into your miner and see that your engineer has some bars queued up and you got the mats handy, it'll go ahead and craft those items for your alt. similarly, if you have items an alt needs and you're at the mailbox, i'd love for it to auto mail them to your alt (combine the two processes and you have craft and mail the results automatically). to make it go full circle, it might be worth having a mechanism in the engineer's queue to assign a queue entry to an alt. then that player would also have a requirement of source mats that could be mailed to them so they can do the requisite crafting and mail the results back...
anyway, that's kind of where i'm aiming with this.
Lilsparky—thank you for your thoughtful reply.
Here's what's needed to make Glypher continue to work. To make the basic functionality work, you only really need the ability to add n of an arbitrary item, just like the user clicked Queue.
However, it also has an (optional) feature to auto-clear the queue if it's not empty, so that you're not crafting twice as many as you need or continue to craft after market conditions have changed. The queue glyphs mechanism basically assumes that the current character's queue is empty, and the option ensures that this is so.
My ideal would be to have something like this. I don't know the blizz apis that well, and there might be an additional set if you plan to allow different queues for the same player… but I can't imagine a scenario where there wasn't a main or default queue.
Anyway, this is just a proposal for what I'd probably do. Many of these are simple convenience methods, but I can't easily imagine a scenario where you wouldn't want all these methods, or one where any of them would have to change (except possibly adding addition methods for multiple queues). I had something like just the first of these I could kludge things, but a clear queue would be nice.
# Add count of the output of a recipe to the given
# character's queue
addItem(characterId, recipeId, count);
# Add count of the output of a recipe to the current
# character's queue
addItem(recipeId, count);
# Clear the given character's queue
clearQueue(characterId);
# Clear the current character's queue
clearQueue();
# Check the size of the given character's queue
queueSize(characterId);
# Check the size of the current character's queue
queueSize();
# Check whether the given character's queue is empty
isQueueEmpty(characterId);
# Check whether the current character's queue is empty
isQueueEmpty();
This does bring up one tricky issue that I forgot to mention last time: multiple-output crafting. Examples here are tailoring or alchemy specialization. When I tailor, I always get two when I make primal mooncloth or moonshroud. But all of the TS replacements I've tried will queue it up in dependencies as though I always get one. Trickier is alchemy, where I sometimes get more than I asked for. At the very least, I'd like to see the dependency resolution mechanism account for my Mooncloth Tailoring. (Yes, this is going away in Cataclysm, but it's not here yet and it's pretty annoying for now.)
This mechanism might argue for queue management functions for both "go until I've crafted n" and "execute n times." I'd say for shopping lists, you might want to always use only estimates that are 100% probable. So I'd say you'd count mooncloth tailoring toward shopping lists, and ignore elixir mastery. But, for example, if I wanted 10 elixirs a prerequisite for something, ideally it would stop when I had 10 if my elixir bonus proc'd.
My dream example here:
All make sense? This is a dream scenario, but I thought it might be useful to you to see the kind of stuff I would envision in my ideal TSW. If nothing else, dream scenarios can help you design APIs and mould your code flexibly for functionality that you might add later. (Just so long as you avoid the infamous second-system syndrome.)
Again, if I can give any help with any of this, let me know. Otherwise good luck. I hope I don't seem pushy: I'm only trying to be helpful.
Thanks for listening,
Sarah
lilsparky,
Great work so far! I'm really liking what I see.
I'm with sarah on the API. The only reason that I haven't switched over to using Gnomeworks full time is that I didn't want to hook my jewelcrafting/inscription addon into a "private" function.
I'd vote for a simple API function that adds a given number of an item to the current queue to get us started with the understanding that it is completely possible that it might change in the future if the need arises.
My addon is a modification of kevqueue that I put into a frame and modified to fit my needs so I can change as I need to when you need to change the API.
Keep up the good work!