Advertisement
esuvii

EquipSameItemEnchant

Jul 9th, 2024 (edited)
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.60 KB | None | 0 0
  1. -- allows making a macro such as:
  2. --      /run EquipSameItemEnchant:New("MacroLabel", itemID, enchantID)
  3. --      /click EquipSameItemEnchantMacroLabel
  4. -- (untested code)
  5.  
  6. local frame = CreateFrame("Frame", "EquipSameItemEnchant")
  7. frame.New = function(self, label, itemID, enchantID)
  8.     if not frame[label] then
  9.         frame[label] = CreateFrame("Button", "EquipSameItemEnchant"..label)
  10.         frame[label].itemID = itemID
  11.         frame[label].enchantID = enchantID
  12.         frame[label]:SetScript("OnClick", function()
  13.             local itemCount = 0
  14.             for bag = 0,4 do
  15.                 for slot = 1, C_Container.GetContainerNumSlots(bag) do
  16.                     local itemLink = C_Container.GetContainerItemLink(bag, slot)
  17.                     local dataCount = 0
  18.                     local currentItemID = nil
  19.                     local currentEnchantID = nil
  20.                     for data in itemLink:gmatch("([^:]*)") do
  21.                         dataCount = dataCount + 1
  22.                         if dataCount == 2 then
  23.                             currentItemID = data
  24.                         elseif dataCount == 3 then
  25.                             currentEnchantID = data
  26.                         else
  27.                             break
  28.                         end
  29.                     end
  30.                     if frame[label].itemID == currentItemID and frame[label].enchantID == currentEnchantID then
  31.                         itemCount = itemCount + 1
  32.                         C_Container.PickupContainerItem(bag, slot)
  33.                         local equipSlot = (itemCount == 1) and "MainHandSlot" or "SecondaryHandSlot"
  34.                         EquipCursorItem(GetInventorySlotInfo(equipSlot))
  35.                         if itemCount == 2 then
  36.                             return true
  37.                         end
  38.                     end
  39.                 end
  40.             end
  41.         end)
  42.     end
  43.     frame[label].itemID = (frame[label].itemID == itemID) and frame[label].itemID or itemID
  44.     frame[label].enchantID = (frame[label].enchantID == enchantID) and frame[label].enchantID or enchantID
  45. end
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement