首页 > 解决方案 > 如何记录/跟踪拼写下降的坐标

问题描述

我正在开发一个跟踪魔兽世界端口的插件,即超越,恶魔圈。我可以注册光环事件。我现在要做的是记录/跟踪门户的坐标。我的最终目标是创建一个 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)

标签: luaworld-of-warcraft

解决方案


对于这个特殊问题,我可以使用 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


推荐阅读