Возможно, есть лучшие способы сделать это, например, отображать информацию во всплывающей подсказке при наведении мыши, но вот простое решение, которое в основном делает то, что вы просили: отображение элемента и его идентификатора в окне чата, когда вы shift-click.
Это решение создает слушателя, который проверяет, когда вы впервые открываете свои сумки. Затем он прикрепляет код к каждому слоту в вашей открытой сумке, говоря ему печатать информацию при нажатии Shift. Когда этот код печатается в слотах в вашей последней сумке, он также говорит слушателю прекратить работу, чтобы не тратить ресурсы ЦП.
local listener = CreateFrame("Frame");
listener:SetScript("OnEvent", function()
for bag=1, 5 do
for slot=1, GetContainerNumSlots(bag-1) do
local frame = _G["ContainerFrame" .. bag .. "Item" .. slot];
if (frame and not frame.isHooked) then
frame.isHooked = true;
frame:HookScript("PreClick", function()
if (IsShiftKeyDown()) then
local itemLink, __, __, itemID = select(7, GetContainerItemInfo(bag - 1, frame:GetID()));
if (itemID) then
print(itemLink .. " " .. itemID);
end
end
end);
if(bag == 5) then
-- stops this from continuing to execute after all bags have been openned at least once.
listener:UnregisterEvent("BAG_UPDATE");
end
end
end
end
end);
listener:RegisterEvent("BAG_UPDATE");
Ссылки: