Files
wow-weakauras/Complete Projects/Legion/Rogue Sniffer 9000/Target Direction.lua
2024-08-24 22:43:07 +02:00

80 lines
2.7 KiB
Lua

CHAT_MSG_SYSTEM
function(_,msg)
if string.match(msg, "X:") and not string.match(msg, "ZoneX:") then
aura_env.tX = string.match(msg, "X: [%-*(%d+)%.*]+") or 0
aura_env.tY = string.match(msg, "Y: [%-*(%d+)%.*]+") or 0
aura_env.tX = string.match(aura_env.tX, "[%-*(%d+)%.*]+")
aura_env.tY = string.match(aura_env.tY, "[%-*(%d+)%.*]+")
end
end
CHAT_MSG_WHISPER
function(_,msg,sender)
sender = string.match(sender, "%a+")
if sender == UnitName("player") and msg ~= "trackon" and msg ~= "trackoff" and msg ~= "acquiretarget" then
aura_env.target = string.match(msg, "%a+")
print(aura_env.target)
end
if msg == "trackon" and aura_env.enable == 0 and sender == UnitName("player") then
aura_env.enable = 1
print(aura_env.enable, aura_env.target)
end
if msg == "trackoff" and aura_env.enable == 1 and sender == UnitName("player") then
aura_env.enable = 0
print(aura_env.enable, aura_env.target)
end
if msg == "acquiretarget" and sender == UnitName("player") then
aura_env.target = UnitName("target")
print(aura_env.enable, aura_env.target)
end
end
EVERY FRAME
function()
if aura_env.enable == 1 and aura_env.target ~= nil then
local tt = math.floor((GetTime() - aura_env.startTime) * 10)
if tt ~= aura_env.lastTime and tt % aura_env.tickRate == 0 then
print(aura_env.target)
aura_env.lastTime = tt
SendChatMessage(".gps " .. aura_env.target, "say")
end
end
end
EVERY FRAME
function()
local function range (val, min, max, max2)
val = 1 - (((max - val) / (max - min)) * max2)
return val
end
aura_env.pX = UnitPosition("player") or 0
aura_env.pY = select(2,UnitPosition("player")) or 0
local X = aura_env.pX - aura_env.tX
local Y = aura_env.pY - aura_env.tY
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)))
aura_env.angle = math.deg(math.atan2(X,Y))
if aura_env.angle < 0 then aura_env.angle = aura_env.angle + 360 end
aura_env.angle = aura_env.angle - playerA
end
ANIMATION
function()
return - aura_env.angle
end
INIT
aura_env.pX = UnitPosition("player") or 0
aura_env.pY = select(2,UnitPosition("player")) or 0
aura_env.tX = UnitPosition("player") or 0
aura_env.tY = select(2,UnitPosition("player")) or 0
aura_env.angle = 0
aura_env.target = ""
aura_env.enable = 0
aura_env.tickRate = 5
aura_env.startTime = GetTime()