如何记录法术传送坐标

我正在开发一个插件,用于追踪魔兽世界中的传送门,如超脱、恶魔法阵等。我已经可以注册aura事件。现在我想记录和追踪传送门的坐标。我的最终目标是创建一个XML模板,显示一个箭头,根据距离改变颜色并指向传送门。任何帮助都会很感激,这是我第一次尝试制作真正的插件。以下是我目前的代码:

local f = CreateFrame("Frame")
f:RegisterUnitEvent("UNIT_AURA", "player")

f:SetScript("OnEvent", function()
    local name, _, _, _, duration, expirationTime, _, _, _, spellId = AuraUtil.FindAuraByName('超脱', 'player', '有益')

    if name then
        -- Do a thing
    end
end)
点赞
用户7619578
用户7619578

针对这个特定问题,我能够使用 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

2020-05-14 21:42:28