Asa@64: local ItemAuditor = select(2, ...) Asa@64: Asa@64: local Crafting = ItemAuditor:GetModule("Crafting") Asa@64: Asa@64: IAapi = {} Asa@64: Asa@64: --[[ Asa@64: You can register a callback here to influence which items will get crafted and how many. Asa@64: The decider function needs to return the number of items the user should have in their Asa@64: inventory. If the number owned is less than the highest decided number, that item will Asa@64: be queued to be crafted unless any decider vetos the item. Asa@64: Asa@64: There is no way to unregister your decider but it can be overwritten with a function that simply returns 0. Asa@64: Asa@64: Please make sure your decider runs as fast as possible, It will be called at least once Asa@64: for every tradeskill being considered. Asa@64: Asa@64: I find the (non) word "Decider" to be amusing, so I used it. Asa@64: Asa@64: ItemAuditor will veto any item that costs more to create than it will sell for, It will also Asa@64: queue one of every item that is profitable. If you simply wanted to increase that to 5 of every Asa@64: profitable item you could use this: Asa@64: Asa@64: IAapi.RegisterCraftingDecider('Five', function() return 5 end) Asa@64: ]] Asa@73: function IAapi.RegisterCraftingDecider(name, decider, optionsTable) Asa@70: assert(type(name) == 'string', 'name must be a string to identify your addon. This will be displayed to the user.') Asa@73: assert(type(decider) == 'function', 'decider must be a function.') Asa@73: assert(optionsTable == nil or type(optionsTable) == 'table') Asa@73: Crafting.RegisterCraftingDecider(name, decider, optionsTable) Asa@64: end Asa@64: Asa@70: function IAapi.RegisterQueueDestination(name, destination) Asa@70: assert(type(name) == 'string', 'name must be a string to identify your addon. This will be displayed to the user.') Asa@70: assert(type(destination) == 'function', 'destination must be a function that will be called for each item when exporting the queue.') Asa@70: Asa@70: Crafting.RegisterQueueDestination(name, destination) Asa@70: end Asa@64: Asa@70: function IAapi.UnRegisterQueueDestination(name) Asa@70: assert(type(name) == 'string', 'name must be the string that was used to register your addon.') Asa@70: Crafting.UnRegisterQueueDestination(name) Asa@70: end Asa@70: Asa@96: function IAapi.GetItemCost(link) Asa@96: assert(link, 'usage: IAapi.GetItemCost(itemLink)') Asa@96: return ItemAuditor:GetItemCost(link) Asa@96: end Asa@96: Asa@96: Asa@96: Asa@95: local function registerLoadedAddons() Asa@95: return ItemAuditor_RegisterAPI and ItemAuditor_RegisterAPI() Asa@95: end Asa@95: registerLoadedAddons() Asa@95: Asa@95: Asa@95: -- This is here so I have a second option in the menu and to serve as an example of Asa@95: -- how to register your addon with ItemAuditor. Asa@70: --@debug@ Asa@95: local function RegisterWithItemAuditor() Asa@95: local function testDestination(data) Asa@95: -- Replace this with a call to the methods you need in your addon Asa@95: ItemAuditor:Print('queue: '..data.recipeLink) Asa@95: end Asa@95: -- Replace Echo with the name of your addon so it can be selected from /ia options Asa@95: IAapi.RegisterQueueDestination('Echo', testDestination) Asa@70: end Asa@70: Asa@95: if IAapi then Asa@95: RegisterWithItemAuditor() Asa@95: else Asa@95: -- make sure to save any other addon's function Asa@95: local original = ItemAuditor_RegisterAPI Asa@95: -- this should not be local so it replaces (or creates) the global function Asa@95: function ItemAuditor_RegisterAPI() Asa@95: RegisterWithItemAuditor() Asa@95: -- if original has a value (function), this will run it Asa@95: return original and original() Asa@95: end Asa@95: end Asa@95: Asa@95: Asa@95: Asa@95: Asa@70: --@end-debug@