Compare commits
5 Commits
a6a99d5463
...
86a4daaceb
Author | SHA1 | Date | |
---|---|---|---|
86a4daaceb | |||
775f6ae076 | |||
cfa3228ca5 | |||
b30a0a7c94 | |||
55edf58a68 |
@@ -1,9 +1,9 @@
|
|||||||
-- TICKER_200
|
-- TICKER_200
|
||||||
function()
|
function()
|
||||||
---@type WHOMessage
|
---@type Message
|
||||||
local message = aura_env.messageQueue[1]
|
local message = aura_env.messageQueue[1]
|
||||||
if message == nil then return end
|
if message == nil then return end
|
||||||
|
|
||||||
table.remove(aura_env.messageQueue, 1)
|
table.remove(aura_env.messageQueue, 1)
|
||||||
SendChatMessage(message.message, "WHISPER", nil, message.to)
|
SendChatMessage(message.message, message.channel, nil, message.data)
|
||||||
end
|
end
|
@@ -5,10 +5,13 @@
|
|||||||
function(event, msg, sender)
|
function(event, msg, sender)
|
||||||
if msg == "who" then
|
if msg == "who" then
|
||||||
for _, player in pairs(aura_env.stinkies) do
|
for _, player in pairs(aura_env.stinkies) do
|
||||||
table.insert(aura_env.messageQueue, {
|
local msg = aura_env.MakeNotifyMessage(player)
|
||||||
to = sender,
|
local message = {
|
||||||
message = aura_env.MakeNotifyMessage(player)
|
channel = "WHISPER",
|
||||||
})
|
data = sender,
|
||||||
|
message = msg
|
||||||
|
}
|
||||||
|
table.insert(aura_env.messageQueue, message)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
22
FreshShit/WhoSniffer/event6.lua
Normal file
22
FreshShit/WhoSniffer/event6.lua
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
-- CHAT_MSG_CHANNEL
|
||||||
|
---@type event string
|
||||||
|
---@type msg string
|
||||||
|
---@type sender string
|
||||||
|
function(event, msg, sender, ...)
|
||||||
|
local channelId = select(6, ...)
|
||||||
|
if channelId ~= aura_env.channelId then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if msg == "who" then
|
||||||
|
for _, player in pairs(aura_env.stinkies) do
|
||||||
|
local msg = aura_env.MakeNotifyMessage(player)
|
||||||
|
local message = {
|
||||||
|
channel = "CHANNEL",
|
||||||
|
data = channelId,
|
||||||
|
message = msg
|
||||||
|
}
|
||||||
|
table.insert(aura_env.messageQueue, message)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@@ -14,17 +14,13 @@ aura_env.ignored = {"Maritza", "Goodbones"}
|
|||||||
---@field classColors table<string, string>
|
---@field classColors table<string, string>
|
||||||
---@field whoQueries table<number, WHOQuery>
|
---@field whoQueries table<number, WHOQuery>
|
||||||
---@field ttl number
|
---@field ttl number
|
||||||
---@field messageQueue WHOMessage[]
|
---@field messageQueue Message[]
|
||||||
---@field UpdateMacro fun()
|
---@field UpdateMacro fun()
|
||||||
---@field Notify fun(Player)
|
---@field Notify fun(Player)
|
||||||
---@field NotifyGone fun(Player)
|
---@field NotifyGone fun(Player)
|
||||||
---@field queryPending boolean
|
---@field queryPending boolean
|
||||||
---@field lastQuery WHOQuery
|
---@field lastQuery WHOQuery
|
||||||
|
|
||||||
---@class WHOMessage
|
|
||||||
---@field message string
|
|
||||||
---@field to string
|
|
||||||
|
|
||||||
---@param input string
|
---@param input string
|
||||||
---@return number
|
---@return number
|
||||||
local function utf8len(input)
|
local function utf8len(input)
|
||||||
@@ -104,6 +100,12 @@ local AllianceFilter = function(name, guild, level, race, class, zone)
|
|||||||
return aura_env.raceMap[race] == "Alliance"
|
return aura_env.raceMap[race] == "Alliance"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@class Message
|
||||||
|
---@field message string
|
||||||
|
---@field channel string
|
||||||
|
---@field data string
|
||||||
|
|
||||||
|
---@type Message[]
|
||||||
aura_env.messageQueue = {}
|
aura_env.messageQueue = {}
|
||||||
aura_env.whoQueryIdx = 1
|
aura_env.whoQueryIdx = 1
|
||||||
---@type table<number, WHOQuery>
|
---@type table<number, WHOQuery>
|
||||||
@@ -124,6 +126,7 @@ aura_env.whoQueries[5] = WHOQuery.new(
|
|||||||
aura_env.queryPending = false
|
aura_env.queryPending = false
|
||||||
aura_env.lastQuery = nil
|
aura_env.lastQuery = nil
|
||||||
|
|
||||||
|
---@type table<string, string>
|
||||||
aura_env.raceMap = {
|
aura_env.raceMap = {
|
||||||
["Orc"] = "Horde",
|
["Orc"] = "Horde",
|
||||||
["Undead"] = "Horde",
|
["Undead"] = "Horde",
|
||||||
@@ -191,6 +194,7 @@ Player = {
|
|||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
---@type table<string, string>
|
||||||
aura_env.classColors = {
|
aura_env.classColors = {
|
||||||
["Warrior"] = "C69B6D",
|
["Warrior"] = "C69B6D",
|
||||||
["Paladin"] = "F48CBA",
|
["Paladin"] = "F48CBA",
|
||||||
@@ -206,14 +210,6 @@ aura_env.classColors = {
|
|||||||
["Demon Hunter"] = "A330C9"
|
["Demon Hunter"] = "A330C9"
|
||||||
}
|
}
|
||||||
|
|
||||||
aura_env.UpdateMacro = function()
|
|
||||||
local body = {}
|
|
||||||
for k, v in pairs(aura_env.stinkies) do
|
|
||||||
table.insert(body, string.format("/tar %s", v.name))
|
|
||||||
end
|
|
||||||
EditMacro("tar", nil, nil, string.join("\n", body))
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param input string
|
---@param input string
|
||||||
---@param deliminer string
|
---@param deliminer string
|
||||||
---@return string[], string|nil
|
---@return string[], string|nil
|
||||||
@@ -243,35 +239,95 @@ for i, part in ipairs(notifyForD) do
|
|||||||
notifyFor[part] = true
|
notifyFor[part] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
aura_env.MakeNotifyMessage = function(player)
|
---@param player Player
|
||||||
|
---@return string
|
||||||
|
local MakeNotifyMessage = function(player)
|
||||||
return string.format("%s of class %s and guild %s in %s, first seen: %s, last seen: %s, times seen: %d",
|
return string.format("%s of class %s and guild %s in %s, first seen: %s, last seen: %s, times seen: %d",
|
||||||
player.name, player.class, player.guild, player.zone, player.firstSeen, player.lastSeen, player.seenCount)
|
player.name, player.class, player.guild, player.zone, player.firstSeen, player.lastSeen, player.seenCount)
|
||||||
end
|
end
|
||||||
|
---@param msg string
|
||||||
|
local NotifyAll = function(msg)
|
||||||
|
for _, rec in ipairs(toNotify) do
|
||||||
|
---@type Message
|
||||||
|
local message = {
|
||||||
|
channel = "WHISPER",
|
||||||
|
data = rec,
|
||||||
|
message = msg
|
||||||
|
}
|
||||||
|
table.insert(aura_env.messageQueue, message)
|
||||||
|
end
|
||||||
|
end
|
||||||
---@param player Player
|
---@param player Player
|
||||||
|
---@return nil
|
||||||
aura_env.Notify = function(player)
|
aura_env.Notify = function(player)
|
||||||
if not notifyFor[player.zone] then
|
if not notifyFor[player.zone] then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local msg = aura_env.MakeNotifyMessage(player)
|
local msg = MakeNotifyMessage(player)
|
||||||
for _, rec in ipairs(toNotify) do
|
NotifyAll(msg)
|
||||||
table.insert(aura_env.messageQueue, {
|
aura_env.NotifyChannel(player)
|
||||||
to = rec,
|
|
||||||
message = msg
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param player Player
|
---@param player Player
|
||||||
|
---@return nil
|
||||||
aura_env.NotifyGone = function(player)
|
aura_env.NotifyGone = function(player)
|
||||||
if not notifyFor[player.zone] then
|
if not notifyFor[player.zone] then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local msg = string.format("%s of class %s and guild %s left %s", player.name, player.class, player.guild,
|
local msg = string.format("%s of class %s and guild %s left %s", player.name, player.class, player.guild,
|
||||||
player.zone)
|
player.zone)
|
||||||
for _, rec in ipairs(toNotify) do
|
NotifyAll(msg)
|
||||||
table.insert(aura_env.messageQueue, {
|
aura_env.NotifyChannelGone(player)
|
||||||
to = rec,
|
end
|
||||||
message = msg
|
|
||||||
})
|
-- CHANNEL fuckery
|
||||||
|
local channel = aura_env.config.channelName or "foobar"
|
||||||
|
local channelId = nil
|
||||||
|
|
||||||
|
local function GetChannelId(channelName)
|
||||||
|
local channels = {GetChannelList()}
|
||||||
|
for i = 1, #channels, 2 do
|
||||||
|
local id = channels[i]
|
||||||
|
local name = channels[i + 1]
|
||||||
|
if name == channelName then
|
||||||
|
return id
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
channelId = GetChannelId(channel)
|
||||||
|
if not channelId then
|
||||||
|
print(string.format("channel %s not found, joining", channel))
|
||||||
|
JoinPermanentChannel(channel)
|
||||||
|
end
|
||||||
|
channelId = GetChannelId(channel)
|
||||||
|
aura_env.channelId = channelId
|
||||||
|
print(string.format("channel %s resolved to id %d", channel, channelId))
|
||||||
|
|
||||||
|
---@param msg string
|
||||||
|
local NotifyChannel = function(msg)
|
||||||
|
if not channelId then
|
||||||
|
print("cannot notify channel, channelId is nil")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local message = {
|
||||||
|
channel = "CHANNEL",
|
||||||
|
data = channelId,
|
||||||
|
message = msg
|
||||||
|
}
|
||||||
|
table.insert(aura_env.messageQueue, message)
|
||||||
|
end
|
||||||
|
---@param player Player
|
||||||
|
---@return nil
|
||||||
|
aura_env.NotifyChannel = function(player)
|
||||||
|
local msg = MakeNotifyMessage(player)
|
||||||
|
NotifyChannel(msg)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param player Player
|
||||||
|
---@return nil
|
||||||
|
aura_env.NotifyChannelGone = function(player)
|
||||||
|
local msg = string.format("%s of class %s and guild %s left %s", player.name, player.class, player.guild,
|
||||||
|
player.zone)
|
||||||
|
NotifyChannel(msg)
|
||||||
|
end
|
Reference in New Issue
Block a user