Код:
local frame = CreateFrame("Frame")
frame:RegisterEvent("LOOT_OPENED")
-- Список тканей по ItemID
local clothItems = {
[2589] = true, -- Linen Cloth
[2592] = true, -- Wool Cloth
[4306] = true, -- Silk Cloth
[4338] = true, -- Mageweave Cloth
[14047] = true, -- Runecloth
[14256] = true, -- Felcloth
[21877] = true -- Netherweave Cloth
}
-- Две таблицы для чередования лута
local lootTable1 = {}
local lootTable2 = {}
local useTable1 = true -- Чередуем: true = lootTable1, false = lootTable2
-- Функция для очистки таблицы
local function ClearLootTable(tbl)
for k in pairs(tbl) do
tbl[k] = nil
end
end
-- Функция для удаления предметов из указанной таблицы
local function DeleteNonClothItems(tbl)
for bag = 0, 4 do
for slot = 1, GetContainerNumSlots(bag) do
local itemLink = GetContainerItemLink(bag, slot)
if itemLink then
local itemID = tonumber(itemLink:match("item:(%d+)"))
local _, itemCount = GetContainerItemInfo(bag, slot)
if itemID and tbl[itemID] and not clothItems[itemID] then
local deleteCount = math.min(itemCount, tbl[itemID])
-- print("[CustomAutoLoot] Удаляю предмет: " .. itemLink .. " (itemID: " .. itemID .. ", количество: " .. deleteCount .. ")")
for i = 1, deleteCount do
PickupContainerItem(bag, slot)
DeleteCursorItem()
end
tbl[itemID] = tbl[itemID] - deleteCount
if tbl[itemID] <= 0 then
tbl[itemID] = nil
end
end
end
end
end
end
-- Обработчик события открытия окна лута
frame:SetScript("OnEvent", function(self, event, ...)
if event == "LOOT_OPENED" then
-- Определяем таблицы: текущая и предыдущая
local currentTable = useTable1 and lootTable1 or lootTable2
local previousTable = useTable1 and lootTable2 or lootTable1
-- Очищаем текущую таблицу перед новым лутом
ClearLootTable(currentTable)
-- Удаляем ненужные предметы из предыдущей таблицы
DeleteNonClothItems(previousTable)
ClearLootTable(previousTable)
local numItems = GetNumLootItems()
if numItems == 0 then
-- print("[CustomAutoLoot] Нет предметов в луте.")
CloseLoot()
return
end
-- Собираем весь лут и записываем в текущую таблицу
for i = 1, numItems do
local name, icon, quantity, quality, locked = GetLootSlotInfo(i)
local itemLink = GetLootSlotLink(i)
if itemLink then
local itemID = tonumber(itemLink:match("item:(%d+)"))
if itemID then
currentTable[itemID] = (currentTable[itemID] or 0) + quantity
-- print("[CustomAutoLoot] Собираю предмет: " .. itemLink .. " (itemID: " .. itemID .. ", количество: " .. quantity .. ")")
else
-- print("[CustomAutoLoot] Не удалось извлечь itemID для слота " .. i .. " (itemLink: " .. (itemLink or "нет") .. ")")
end
else
-- print("[CustomAutoLoot] Собираю монеты или неизвестный слот: " .. (name or "неизвестно"))
end
LootSlot(i)
end
-- Закрываем окно лута
-- print("[CustomAutoLoot] Закрываю окно лута.")
CloseLoot()
-- Чередуем таблицы
useTable1 = not useTable1
end
end)