Я пишу дополнение WoW, которое будет отслеживать и фильтровать список элементов.
Добавлены элементы, которых еще нет в списке; элементы, которые уже перечислены, не должны добавляться.
Проблема, с которой я сталкиваюсь, заключается в том, что моя функция проверки не всегда предотвращает добавление дубликатов в список.
Добавление элемента A в первый раз работает нормально, попытка добавить его снова, если он был добавлен последним, корректно не добавляется.
Добавление элемента B в первый раз работает нормально, попытка добавить его снова, если он был добавлен последним, корректно не добавляется.
Проблема в том, что если я пытаюсь повторно добавить элемент A, когда он не был добавлен последним, он неправильно повторно добавляет элемент в список; по сути, я могу повторно добавлять элементы, если они не были последними элементами для добавления.
Вот изображение, которое показывает вам, что происходит;
А вот и две мои функции.
Я также связал свой полный код lua здесь и токен здесь .
-- check if item is already listed
local function isItemOnList(incomingItemID)
for k, v in pairs(AAAGlobalItemLinkList) do
if v.itemID == incomingItemID then
print(v.itemID, ':matched:', incomingItemID)
return true
end
print('no match', incomingItemID)
return false
end
end
-- add item link to list function
local function addItemLinkToList()
local cursorItemType, cursorItemID, cursorItemLink = GetCursorInfo()
print(cursorItemID)
if not isItemOnList(cursorItemID) then
local itemName,
itemLink,
itemRarity,
itemLevel,
itemMinLevel,
itemType,
itemSubType,
itemStackCount,
itemEquipLoc,
iconFileDataID,
itemSellPrice,
itemClassID,
itemSubClassID,
bindType,
expacID,
itemSetID,
isCraftingReagent = GetItemInfo(cursorItemID)
tempItemList = {
itemID = cursorItemID,
itemName = itemName,
itemLink = itemLink,
itemRarity = itemRarity,
itemLevel = itemLevel,
itemMinLevel = itemMinLevel,
itemType = itemType,
itemSubType = itemSubType,
itemStackCount = itemStackCount,
itemEquipLoc = itemEquipLoc,
iconFileDataID = iconFileDataID,
itemSellPrice = itemSellPrice,
itemClassID = itemClassID,
itemSubClassID = itemSubClassID,
bindType = bindType,
expacID = expacID,
itemSetID = itemSetID,
isCraftingReagent = isCraftingReagent
}
table.insert(AAAGlobalItemLinkList, 1, tempItemList)
print(cursorItemLink, 'added to list')
else
print(cursorItemLink, 'already listed')
end
updateScrollFrame()
ClearCursor()
end
-- update scroll frames function
local function updateScrollFrame()
wipe(listItems)
for index = 1, #AAAGlobalItemLinkList do
--if testItemRarity(AAAGlobalItemLinkList[index]) then
table.insert(listItems, AAAGlobalItemLinkList[index]['itemLink'])
--end
end
FauxScrollFrame_Update(testingScrollFrame, #listItems, NumberOfButtons, HeightOfButtons)
for index = 1, NumberOfButtons do
local offset = index + FauxScrollFrame_GetOffset(testingScrollFrame)
local button = testingScrollFrame.buttons[index]
if index > #listItems then
button:SetText('')a
button.index = nil
else
button.index = offset
--local itemName, itemLink = GetItemInfo(listItems[offset])
button:SetText(listItems[offset])
end
end
end
Я не получаю никаких ошибок.
Я также связал свой полный код lua здесь и ток здесь.
Надеюсь, кто-то может объяснить, как я все испортил, а также может указать мне правильное направление, чтобы исправить это.