Lua 如何将物品ID从游戏[魔兽世界1.13.3]转移到我的插件?
我想通过使用鼠标指针和修改键单击项目ID来获取项目ID,或者通过单击键盘键来获取鼠标指针下方的项目ID 或者,我怎样才能在我的插件中获取所选项目的ID 我找到了文件:Lua 如何将物品ID从游戏[魔兽世界1.13.3]转移到我的插件?,lua,add-on,world-of-warcraft,Lua,Add On,World Of Warcraft,我想通过使用鼠标指针和修改键单击项目ID来获取项目ID,或者通过单击键盘键来获取鼠标指针下方的项目ID 或者,我怎样才能在我的插件中获取所选项目的ID 我找到了文件: 但是我不知道如何解决我的问题。可能有更好的方法来解决这个问题,比如鼠标悬停时在工具提示中显示信息,但这里有一个简单的解决方案,基本上可以满足您的要求:按住shift键并单击时在聊天窗口中显示项目及其id 此解决方案创建一个侦听器,在您第一次打开行李时进行检查。然后,它将代码附加到打开的包中的每个插槽,告诉它在按下shift键时
但是我不知道如何解决我的问题。可能有更好的方法来解决这个问题,比如鼠标悬停时在工具提示中显示信息,但这里有一个简单的解决方案,基本上可以满足您的要求:按住shift键并单击时在聊天窗口中显示项目及其id 此解决方案创建一个侦听器,在您第一次打开行李时进行检查。然后,它将代码附加到打开的包中的每个插槽,告诉它在按下shift键时打印信息。当这段代码被打印到最后一个包中的插槽时,它还会告诉侦听器停止工作,以避免浪费CPU资源
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");
参考资料: