我正在努力开发一个跟踪魔兽世界端口的插件,即超越,恶魔圈。我能够注册光环事件。我现在要做的是记录/跟踪门户的坐标。我的最终目标是创建一个 XML 模板来显示指向端口并根据距离更改颜色的箭头。任何帮助都值得赞赏,这是我第一次尝试真正的插件。这是我到目前为止所拥有的:
local f = CreateFrame("Frame")
f:RegisterUnitEvent("UNIT_AURA", "player")
f:SetScript("OnEvent", function()
local name, _, _, _, duration, expirationTime, _, _, _, spellId = AuraUtil.FindAuraByName('Transcendence', 'player', 'helpful')
if name then
-- Do a thing
end
end)
对于这个特定的问题,我能够使用 HereBeDragons 库来GetPlayerZonePosition()
。这允许我获得x,y坐标以及施法位置的地图ID,因为它是即时施法。
local hbd = LibStub("HereBeDragons-2.0")
function getPlayerPosition()
local x, y, mapID = hbd:GetPlayerZonePosition()
return mapID, x, y
end
然后使用事件处理程序记录施法位置的坐标(例如端口的位置(,然后使用事件处理程序检查光环(例如长轮询(,我可以更新玩家的当前位置。
f:SetScript("OnEvent", function(self, event, arg1, arg2, arg3, arg4)
local transendenceAura = AuraUtil.FindAuraByName('Transcendence', 'player', 'helpful')
if (event == 'UNIT_SPELLCAST_SUCCEEDED' and arg1 == 'player' and (arg3 == 101643 or arg3 == 119996)) then
mapID, x2, y2 = getPlayerPosition()
else
x2 = 0
y2 = 0
end
if transendenceAura then
mapID1, x1, y1 = getPlayerPosition()
end
end)
现在,我只需要计算两点之间的距离(以码为单位(,并在屏幕上呈现一个XML箭头。但就目前而言,这个特殊的障碍已经结束:D