Files
wow-weakauras/Complete Projects/BFA/Rare Tracc.lua
2024-08-24 22:43:07 +02:00

100 lines
3.3 KiB
Lua

--CHAT_MSG_CHANNEL
function(e, msg, _, _, channel)
if channel:match("General") and (channel:match("Nazjatar") or channel:match("Mechagon")) then
if msg:match("(KX%-T57 (%d+%.?%d*))") then msg = msg:gsub("(KX%-T57 (%d+%.?%d*))", "") end
local x, y = msg:match("(%d+%.?%d*)[ ,/]+(%d+%.?%d*)")
if x and y then
local command = x .. " " .. y
aura_env.waypoints[#aura_env.waypoints + 1] = {["x"] = x, ["y"] = y,}
WeakAuras.ScanEvents("NEW_ID")
end
end
end
--EVERY FRAME
function()
if not aura_env.noidee then
local function range (val, min, max, max2)
val = 1 - (((max - val) / (max - min)) * max2)
return val
end
if not aura_env.idee then WeakAuras.ScanEvents("NEW_ID")
else
local hX, hY = aura_env.waypoints[aura_env.idee]["x"], aura_env.waypoints[aura_env.idee]["y"]
local myMapID = C_Map.GetBestMapForUnit("player")
local pX, pY = C_Map.GetPlayerMapPosition(myMapID, "player").x * 100, C_Map.GetPlayerMapPosition(myMapID, "player").y * 100
local X = pX - hX
local Y = pY - hY
local playerFace = GetPlayerFacing() or 0
local playerA = math.floor(playerFace * 100)
playerA = range(playerA, 0, 630, 360) - 1
playerA = - playerA
playerA = playerA - 90
if playerA < 0 then playerA = playerA + 360 end
aura_env.hyp = math.sqrt((math.abs(X ^ 2)) + (math.abs(Y ^ 2))) * 100
aura_env.region.distance:SetText(math.floor(aura_env.hyp))
aura_env.angle = math.deg(math.atan2(Y, X))
aura_env.angle = aura_env.angle - playerA
aura_env.angle = aura_env.angle - 180
if aura_env.hyp < aura_env.wipeDistance then
table.remove(aura_env.waypoints, aura_env.idee)
aura_env.idee = nil
WeakAuras.ScanEvents("NEW_ID")
end
return true
end
end
end
--NEW_ID REMOVE_ID
function(e)
if e == "NEW_ID" then
if not IsInInstance() then
local maxhyp = 100000
local myMapID = C_Map.GetBestMapForUnit("player")
local pX, pY = C_Map.GetPlayerMapPosition(myMapID, "player").x * 100, C_Map.GetPlayerMapPosition(myMapID, "player").y * 100
for k,v in ipairs(aura_env.waypoints) do
local hX, hY = aura_env.waypoints[k].x, aura_env.waypoints[k].y
local X, Y = pX - hX, pY - hY
local hyp = math.sqrt((math.abs(X^2)) + (math.abs(Y^2)))
if hyp < maxhyp then
maxhyp = hyp
aura_env.idee = k
end
end
if not aura_env.idee then aura_env.noidee = true end
if aura_env.idee then aura_env.noidee = nil end
end
elseif e == "REMOVE_ID" then
if aura_env.idee then
table.remove(aura_env.waypoints, aura_env.idee)
aura_env.idee = nil
WeakAuras.ScanEvents("NEW_ID")
else
end
end
end
--ANIMATION
function()
if aura_env.angle then
return - aura_env.angle
else
return 0
end
end
--INIT
aura_env.waypoints = {}
if not aura_env.region.distance then
local distance = aura_env.region:CreateFontString(nil, aura_env.region)
aura_env.region.distance = distance
end
aura_env.region.distance:ClearAllPoints()
aura_env.region.distance:SetFont("Interface\\AddOns\\SharedMedia_MyMedia\\font\\FiraCode-Bold.ttf", 16, "OUTLINE")
aura_env.region.distance:SetPoint("CENTER", aura_env.region, "CENTER")
aura_env.region.distance:SetJustifyH("CENTER")
aura_env.region.distance:SetJustifyV("CENTER")
aura_env.region.distance:Show()
aura_env.wipeDistance = 50
WeakAuras.ScanEvents("NEW_ID")