Zerotorescue@13: local addon = LibStub("AceAddon-3.0"):GetAddon("Inventorium"); Zerotorescue@13: local mod = addon:NewModule("Queue", "AceEvent-3.0", "AceTimer-3.0"); Zerotorescue@13: Zerotorescue@13: local scrollIds = { Zerotorescue@13: [27951] = 37603, Zerotorescue@13: [7418] = 38679, Zerotorescue@13: [7420] = 38766, Zerotorescue@13: [7426] = 38767, Zerotorescue@13: [7428] = 38768, Zerotorescue@13: [7443] = 38769, Zerotorescue@13: [7454] = 38770, Zerotorescue@13: [7457] = 38771, Zerotorescue@13: [7745] = 38772, Zerotorescue@13: [7748] = 38773, Zerotorescue@13: [7766] = 38774, Zerotorescue@13: [7771] = 38775, Zerotorescue@13: [7776] = 38776, Zerotorescue@13: [7779] = 38777, Zerotorescue@13: [7782] = 38778, Zerotorescue@13: [7786] = 38779, Zerotorescue@13: [7788] = 38780, Zerotorescue@13: [7793] = 38781, Zerotorescue@13: [7857] = 38782, Zerotorescue@13: [7859] = 38783, Zerotorescue@13: [7861] = 38784, Zerotorescue@13: [7863] = 38785, Zerotorescue@13: [7867] = 38786, Zerotorescue@13: [13378] = 38787, Zerotorescue@13: [13380] = 38788, Zerotorescue@13: [13419] = 38789, Zerotorescue@13: [13421] = 38790, Zerotorescue@13: [13464] = 38791, Zerotorescue@13: [13485] = 38792, Zerotorescue@13: [13501] = 38793, Zerotorescue@13: [13503] = 38794, Zerotorescue@13: [13522] = 38795, Zerotorescue@13: [13529] = 38796, Zerotorescue@13: [13536] = 38797, Zerotorescue@13: [13538] = 38798, Zerotorescue@13: [13607] = 38799, Zerotorescue@13: [13612] = 38800, Zerotorescue@13: [13617] = 38801, Zerotorescue@13: [13620] = 38802, Zerotorescue@13: [13622] = 38803, Zerotorescue@13: [13626] = 38804, Zerotorescue@13: [13631] = 38805, Zerotorescue@13: [13635] = 38806, Zerotorescue@13: [13637] = 38807, Zerotorescue@13: [13640] = 38808, Zerotorescue@13: [13642] = 38809, Zerotorescue@13: [13644] = 38810, Zerotorescue@13: [13646] = 38811, Zerotorescue@13: [13648] = 38812, Zerotorescue@13: [13653] = 38813, Zerotorescue@13: [13655] = 38814, Zerotorescue@13: [13657] = 38815, Zerotorescue@13: [13659] = 38816, Zerotorescue@13: [13661] = 38817, Zerotorescue@13: [13663] = 38818, Zerotorescue@13: [13687] = 38819, Zerotorescue@13: [13689] = 38820, Zerotorescue@13: [13693] = 38821, Zerotorescue@13: [13695] = 38822, Zerotorescue@13: [13698] = 38823, Zerotorescue@13: [13700] = 38824, Zerotorescue@13: [13746] = 38825, Zerotorescue@13: [13794] = 38826, Zerotorescue@13: [13815] = 38827, Zerotorescue@13: [13817] = 38828, Zerotorescue@13: [13822] = 38829, Zerotorescue@13: [13836] = 38830, Zerotorescue@13: [13841] = 38831, Zerotorescue@13: [13846] = 38832, Zerotorescue@13: [13858] = 38833, Zerotorescue@13: [13868] = 38834, Zerotorescue@13: [13882] = 38835, Zerotorescue@13: [13887] = 38836, Zerotorescue@13: [13890] = 38837, Zerotorescue@13: [13898] = 38838, Zerotorescue@13: [13905] = 38839, Zerotorescue@13: [13915] = 38840, Zerotorescue@13: [13917] = 38841, Zerotorescue@13: [13931] = 38842, Zerotorescue@13: [13933] = 38843, Zerotorescue@13: [13935] = 38844, Zerotorescue@13: [13937] = 38845, Zerotorescue@13: [13939] = 38846, Zerotorescue@13: [13941] = 38847, Zerotorescue@13: [13943] = 38848, Zerotorescue@13: [13945] = 38849, Zerotorescue@13: [13947] = 38850, Zerotorescue@13: [13948] = 38851, Zerotorescue@13: [20008] = 38852, Zerotorescue@13: [20009] = 38853, Zerotorescue@13: [20010] = 38854, Zerotorescue@13: [20011] = 38855, Zerotorescue@13: [20012] = 38856, Zerotorescue@13: [20013] = 38857, Zerotorescue@13: [20014] = 38858, Zerotorescue@13: [20015] = 38859, Zerotorescue@13: [20016] = 38860, Zerotorescue@13: [20017] = 38861, Zerotorescue@13: [20020] = 38862, Zerotorescue@13: [20023] = 38863, Zerotorescue@13: [20024] = 38864, Zerotorescue@13: [20025] = 38865, Zerotorescue@13: [20026] = 38866, Zerotorescue@13: [20028] = 38867, Zerotorescue@13: [20029] = 38868, Zerotorescue@13: [20030] = 38869, Zerotorescue@13: [20031] = 38870, Zerotorescue@13: [20032] = 38871, Zerotorescue@13: [20033] = 38872, Zerotorescue@13: [20034] = 38873, Zerotorescue@13: [20035] = 38874, Zerotorescue@13: [20036] = 38875, Zerotorescue@13: [21931] = 38876, Zerotorescue@13: [22749] = 38877, Zerotorescue@13: [22750] = 38878, Zerotorescue@13: [23799] = 38879, Zerotorescue@13: [23800] = 38880, Zerotorescue@13: [23801] = 38881, Zerotorescue@13: [23802] = 38882, Zerotorescue@13: [23803] = 38883, Zerotorescue@13: [23804] = 38884, Zerotorescue@13: [25072] = 38885, Zerotorescue@13: [25073] = 38886, Zerotorescue@13: [25074] = 38887, Zerotorescue@13: [25078] = 38888, Zerotorescue@13: [25079] = 38889, Zerotorescue@13: [25080] = 38890, Zerotorescue@13: [25081] = 38891, Zerotorescue@13: [25082] = 38892, Zerotorescue@13: [25083] = 38893, Zerotorescue@13: [25084] = 38894, Zerotorescue@13: [25086] = 38895, Zerotorescue@13: [27837] = 38896, Zerotorescue@13: [27899] = 38897, Zerotorescue@13: [27905] = 38898, Zerotorescue@13: [27906] = 38899, Zerotorescue@13: [27911] = 38900, Zerotorescue@13: [27913] = 38901, Zerotorescue@13: [27914] = 38902, Zerotorescue@13: [27917] = 38903, Zerotorescue@13: [27944] = 38904, Zerotorescue@13: [27945] = 38905, Zerotorescue@13: [27946] = 38906, Zerotorescue@13: [27947] = 38907, Zerotorescue@13: [27948] = 38908, Zerotorescue@13: [27950] = 38909, Zerotorescue@13: [27954] = 38910, Zerotorescue@13: [27957] = 38911, Zerotorescue@13: [27958] = 38912, Zerotorescue@13: [27960] = 38913, Zerotorescue@13: [27961] = 38914, Zerotorescue@13: [27962] = 38915, Zerotorescue@13: [27967] = 38917, Zerotorescue@13: [27968] = 38918, Zerotorescue@13: [27971] = 38919, Zerotorescue@13: [27972] = 38920, Zerotorescue@13: [27975] = 38921, Zerotorescue@13: [27977] = 38922, Zerotorescue@13: [27981] = 38923, Zerotorescue@13: [27982] = 38924, Zerotorescue@13: [27984] = 38925, Zerotorescue@13: [28003] = 38926, Zerotorescue@13: [28004] = 38927, Zerotorescue@13: [33990] = 38928, Zerotorescue@13: [33991] = 38929, Zerotorescue@13: [33992] = 38930, Zerotorescue@13: [33993] = 38931, Zerotorescue@13: [33994] = 38932, Zerotorescue@13: [33995] = 38933, Zerotorescue@13: [33996] = 38934, Zerotorescue@13: [33997] = 38935, Zerotorescue@13: [33999] = 38936, Zerotorescue@13: [34001] = 38937, Zerotorescue@13: [34002] = 38938, Zerotorescue@13: [34003] = 38939, Zerotorescue@13: [34004] = 38940, Zerotorescue@13: [34005] = 38941, Zerotorescue@13: [34006] = 38942, Zerotorescue@13: [34007] = 38943, Zerotorescue@13: [34008] = 38944, Zerotorescue@13: [34009] = 38945, Zerotorescue@13: [34010] = 38946, Zerotorescue@13: [42620] = 38947, Zerotorescue@13: [42974] = 38948, Zerotorescue@13: [44383] = 38949, Zerotorescue@13: [44483] = 38950, Zerotorescue@13: [44484] = 38951, Zerotorescue@13: [44488] = 38953, Zerotorescue@13: [44489] = 38954, Zerotorescue@13: [44492] = 38955, Zerotorescue@13: [44494] = 38956, Zerotorescue@13: [44500] = 38959, Zerotorescue@13: [44506] = 38960, Zerotorescue@13: [44508] = 38961, Zerotorescue@13: [44509] = 38962, Zerotorescue@13: [44510] = 38963, Zerotorescue@13: [44513] = 38964, Zerotorescue@13: [44524] = 38965, Zerotorescue@13: [44528] = 38966, Zerotorescue@13: [44529] = 38967, Zerotorescue@13: [44555] = 38968, Zerotorescue@13: [44556] = 38969, Zerotorescue@13: [60616] = 38971, Zerotorescue@13: [44576] = 38972, Zerotorescue@13: [44582] = 38973, Zerotorescue@13: [44584] = 38974, Zerotorescue@13: [44588] = 38975, Zerotorescue@13: [44589] = 38976, Zerotorescue@13: [44590] = 38977, Zerotorescue@13: [44591] = 38978, Zerotorescue@13: [44592] = 38979, Zerotorescue@13: [44593] = 38980, Zerotorescue@13: [44595] = 38981, Zerotorescue@13: [44596] = 38982, Zerotorescue@13: [44598] = 38984, Zerotorescue@13: [60623] = 38986, Zerotorescue@13: [44616] = 38987, Zerotorescue@13: [44621] = 38988, Zerotorescue@13: [44623] = 38989, Zerotorescue@13: [44625] = 38990, Zerotorescue@13: [44629] = 38991, Zerotorescue@13: [44630] = 38992, Zerotorescue@13: [44631] = 38993, Zerotorescue@13: [44633] = 38995, Zerotorescue@13: [44635] = 38997, Zerotorescue@13: [46578] = 38998, Zerotorescue@13: [46594] = 38999, Zerotorescue@13: [47051] = 39000, Zerotorescue@13: [47672] = 39001, Zerotorescue@13: [47766] = 39002, Zerotorescue@13: [47898] = 39003, Zerotorescue@13: [47899] = 39004, Zerotorescue@13: [47900] = 39005, Zerotorescue@13: [47901] = 39006, Zerotorescue@13: [59625] = 43987, Zerotorescue@13: [60606] = 44449, Zerotorescue@13: [60621] = 44453, Zerotorescue@13: [60653] = 44455, Zerotorescue@13: [60609] = 44456, Zerotorescue@13: [60663] = 44457, Zerotorescue@13: [60668] = 44458, Zerotorescue@13: [60691] = 44463, Zerotorescue@13: [60692] = 44465, Zerotorescue@13: [60707] = 44466, Zerotorescue@13: [60714] = 44467, Zerotorescue@13: [60763] = 44469, Zerotorescue@13: [60767] = 44470, Zerotorescue@13: [59621] = 44493, Zerotorescue@13: [59619] = 44497, Zerotorescue@13: [44575] = 44815, Zerotorescue@13: [62256] = 44947, Zerotorescue@13: [62948] = 45056, Zerotorescue@13: [62959] = 45060, Zerotorescue@13: [63746] = 45628, Zerotorescue@13: [64441] = 46026, Zerotorescue@13: [64579] = 46098, Zerotorescue@13: [71692] = 50816, Zerotorescue@13: };--enchantId=scrollId Zerotorescue@13: Zerotorescue@13: function mod:OnEnable() Zerotorescue@13: -- Register our own slash commands Zerotorescue@13: addon:RegisterSlash(function() Zerotorescue@13: self:QueueAll(); Zerotorescue@13: end, "q", "que", "queue"); Zerotorescue@14: Zerotorescue@14: self:RegisterMessage("IM_QUEUE_ALL"); Zerotorescue@14: self:RegisterMessage("IM_QUEUE_GROUP"); Zerotorescue@14: end Zerotorescue@14: Zerotorescue@14: function mod:IM_QUEUE_ALL() Zerotorescue@14: self:QueueAll(); Zerotorescue@14: end Zerotorescue@14: Zerotorescue@14: function mod:IM_QUEUE_GROUP(event, groupName) Zerotorescue@14: self:QueueGroup(groupName); Zerotorescue@13: end Zerotorescue@13: Zerotorescue@13: function mod:QueueAll() Zerotorescue@14: local playerName = UnitName("player"); Zerotorescue@14: Zerotorescue@14: -- Go through all groups Zerotorescue@14: for groupName, values in pairs(addon.db.global.groups) do Zerotorescue@14: local trackAt = (values.trackAtCharacters or (values.trackAtCharacters == nil and addon.db.global.defaults.trackAtCharacters)); Zerotorescue@14: Zerotorescue@14: if trackAt[playerName] then Zerotorescue@14: self:QueueGroup(groupName); Zerotorescue@13: end Zerotorescue@13: end Zerotorescue@13: end Zerotorescue@13: Zerotorescue@13: function mod:QueueGroup(groupName) Zerotorescue@14: if not addon.db.global.groups[groupName] then Zerotorescue@14: print(("Tried to queue items from a group named \"%s\", but no such group exists."):format(groupName)); Zerotorescue@14: return; Zerotorescue@14: end Zerotorescue@14: Zerotorescue@14: local temp = {}; Zerotorescue@13: Zerotorescue@13: -- Go through all trade skills for the profession Zerotorescue@13: for i = 1, GetNumTradeSkills() do Zerotorescue@13: -- Process every single tradeskill Zerotorescue@14: self:ProcessTradeSkill(i, groupName, temp); Zerotorescue@14: end Zerotorescue@14: Zerotorescue@14: for itemId, _ in pairs(addon.db.global.groups[groupName].items) do Zerotorescue@14: if not temp[itemId] then Zerotorescue@14: local itemLink = select(2, GetItemInfo(itemId)); Zerotorescue@14: print("Couldn't queue " .. itemLink); Zerotorescue@14: end Zerotorescue@13: end Zerotorescue@13: end Zerotorescue@13: Zerotorescue@14: function mod:ProcessTradeSkill(i, groupName, temp) Zerotorescue@13: -- Try to retrieve the itemlink, this will be nil if current item is a group instead Zerotorescue@13: local itemLink = GetTradeSkillItemLink(i); Zerotorescue@13: Zerotorescue@13: if itemLink then Zerotorescue@13: local itemId = addon:GetItemId(itemLink); Zerotorescue@13: if not itemId then Zerotorescue@13: -- If this isn't an item, it can only be an enchant instead Zerotorescue@13: itemId = tonumber(itemLink:match("|Henchant:([-0-9]+)|h")); Zerotorescue@13: Zerotorescue@13: itemId = scrollIds[itemId]; -- change enchantIds into scrollIds Zerotorescue@13: end Zerotorescue@13: Zerotorescue@13: if addon.db.global.groups[groupName].items[itemId] then Zerotorescue@13: -- This item is in this group, queue it! Zerotorescue@13: Zerotorescue@14: if temp then Zerotorescue@14: -- Remember which items have been processed Zerotorescue@14: temp[itemId] = true; Zerotorescue@14: end Zerotorescue@13: Zerotorescue@14: local currentStock = addon:GetItemCount(itemId); Zerotorescue@14: if currentStock >= 0 then Zerotorescue@14: -- Current stock will be -1 when no itemcount addon was found Zerotorescue@14: local amount = ( addon:GetOptionByKey(groupName, "restockTarget") - currentStock ); Zerotorescue@13: Zerotorescue@14: if amount > 0 then Zerotorescue@14: self:Queue(i, amount); Zerotorescue@14: Zerotorescue@14: print("Queued " .. amount .. " of " .. itemLink); Zerotorescue@14: end Zerotorescue@14: else Zerotorescue@14: print("No usable itemcount addon found."); Zerotorescue@13: end Zerotorescue@13: end Zerotorescue@13: end Zerotorescue@13: end Zerotorescue@13: Zerotorescue@13: function mod:Queue(tradeSkillIndex, amount) Zerotorescue@13: tradeSkillIndex = tonumber(tradeSkillIndex); Zerotorescue@13: amount = tonumber(amount); Zerotorescue@13: Zerotorescue@13: if not tradeSkillIndex or not amount then return; end Zerotorescue@13: Zerotorescue@13: if addon.supportedAddons.crafting[addon.db.global.defaults.craftingAddon] then Zerotorescue@13: -- Try to use the default auction pricing addon Zerotorescue@13: Zerotorescue@13: return addon.supportedAddons.crafting[addon.db.global.defaults.craftingAddon].Queue(tradeSkillIndex, amount); Zerotorescue@13: else Zerotorescue@13: -- Default not available, get the first one then Zerotorescue@13: Zerotorescue@13: for name, value in pairs(addon.supportedAddons.crafting) do Zerotorescue@13: if value.IsEnabled() then Zerotorescue@13: return value.Queue(tradeSkillIndex, amount); Zerotorescue@13: end Zerotorescue@13: end Zerotorescue@13: end Zerotorescue@13: Zerotorescue@13: return -2; Zerotorescue@13: end