From 98322f6b76d6676f590bf694ff6399b093935b78 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Tue, 5 Nov 2024 21:37:12 +0100 Subject: [PATCH] Implement nameplate sussing --- FreshShit/SpySatellite/event2.lua | 10 ++++++++++ FreshShit/SpySatellite/event3.lua | 3 ++- FreshShit/SpySatellite/init.lua | 16 ++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/FreshShit/SpySatellite/event2.lua b/FreshShit/SpySatellite/event2.lua index e69de29..51f0d94 100644 --- a/FreshShit/SpySatellite/event2.lua +++ b/FreshShit/SpySatellite/event2.lua @@ -0,0 +1,10 @@ +--NAME_PLATE_UNIT_ADDED +function(e, unit) + if not UnitIsPlayer(unit) then return end + local name = UnitName(unit) + local health = UnitHealth(unit) + local player = aura_env.GetPlayer(name) + player.health = health + player:QueryIfNecessary() + WeakAurasSaved.Cyka.Players[name] = player +end \ No newline at end of file diff --git a/FreshShit/SpySatellite/event3.lua b/FreshShit/SpySatellite/event3.lua index 38353d2..dd03a18 100644 --- a/FreshShit/SpySatellite/event3.lua +++ b/FreshShit/SpySatellite/event3.lua @@ -2,7 +2,8 @@ function() for i = 1, GetNumWhoResults() do local name, guild, level, race, class, zone = GetWhoInfo(i) - local player = WeakAurasSaved.Cyka.Players[name] or Player.new(name) + print(string.format("Got player info for %s", name)) + local player = aura_env.GetPlayer(name) player.guild = guild player.race = race WeakAurasSaved.Cyka.Players[name] = player diff --git a/FreshShit/SpySatellite/init.lua b/FreshShit/SpySatellite/init.lua index 51e7a79..55f2713 100644 --- a/FreshShit/SpySatellite/init.lua +++ b/FreshShit/SpySatellite/init.lua @@ -1,9 +1,20 @@ +---@class aura_env +---@field config table +---@field whoQueued boolean +---@field GetPlayer fun(name: string): Player + local channelname = aura_env.config.channelname or "lAKDJjZfNgobMblAangc" aura_env.whoQueued = false if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end if not WeakAurasSaved.Cyka.RaceCache then WeakAurasSaved.Cyka.RaceCache = {} end +aura_env.GetPlayer = function(name) + local player = WeakAurasSaved.Cyka.RaceCache[name] or Player.new(name) + WeakAurasSaved.Cyka.RaceCache[name] = player + return player +end + ---@class Player ---@field name string ---@field guild string|nil @@ -22,6 +33,11 @@ Player = { self.health = 0 return self end, + QueryIfNecessary = function(self) + if self.whoQueued then return end + if self.race ~= nil then return end + self:QueryWho() + end, QueryWho = function(self) if aura_env.whoQueued then print(string.format("There is already a who query queued, waiting for player %s", self.name))