277 lines
10 KiB
Lua
277 lines
10 KiB
Lua
--CHAT_MSG_SAY CHAT_MSG_YELL CHAT_MSG_WHISPER ADD_KEYWORD REMOVE_KEYWORD LIST_KEYWORDS TOGGLE_MAGUS CHAT_MSG_SYSTEM COMBAT_LOG_EVENT_UNFILTERED TRADE_SHOW TRADE_MONEY_CHANGED PLAYER_TRADE_MONEY TRADE_ACCEPT_UPDATE TRADE_CLOSED
|
|
function(e, msg, sender, ...)
|
|
local function updateText()
|
|
local texts = {[1] = {}, [2] = {}, [3] = {}, [4] = {}}
|
|
for k,v in pairs(aura_env.people) do
|
|
if v.state == 5 then
|
|
if v.kw == "uc" or v.kw == "under" or v.kw == "undercity" then
|
|
texts[1][#texts[1] + 1] = k
|
|
elseif v.kw == "org" or v.kw == "og" or v.kw == "orgrimmar" then
|
|
texts[2][#texts[2] + 1] = k
|
|
elseif v.kw == "tb" or v.kw == "thunder" or v.kw == "thunderbluff" then
|
|
texts[3][#texts[3] + 1] = k
|
|
elseif v.kw == "test" then
|
|
texts[4][#texts[4] + 1] = k
|
|
end
|
|
end
|
|
end
|
|
for k,v in pairs(texts) do
|
|
local text = ""
|
|
for k2,v2 in pairs(v) do
|
|
text = text .. v2 .. "\n"
|
|
end
|
|
WeakAurasSaved.MagusKeywords.buttons[k].text:SetText(text)
|
|
end
|
|
end
|
|
|
|
local aura_env = aura_env
|
|
if not aura_env.toggle then aura_env.toggle = 1 end
|
|
if not WeakAurasSaved.MagusKeywords then WeakAurasSaved.MagusKeywords = {
|
|
["port"] = 1,
|
|
["portal"] = 1,
|
|
["org"] = 1,
|
|
["og"] = 1,
|
|
["uc"] = 1,
|
|
["under"] = 1,
|
|
["thunder"] = 1,
|
|
["tb"] = 1,
|
|
["wtb"] = 1,
|
|
["test"] = 1,
|
|
} end
|
|
if e == "CHAT_MSG_SAY" or e == "CHAT_MSG_YELL" or e == "CHAT_MSG_WHISPER" then
|
|
local class = select(2, GetPlayerInfoByGUID(select(10, ...)))
|
|
if msg and aura_env.toggle == 1 then
|
|
msg = msg:lower()
|
|
local noRealmSender = sender:match("(.+)-?%w*") or sender
|
|
for k,v in pairs(WeakAurasSaved.MagusKeywords) do
|
|
if msg:match(k) then
|
|
local st, en = msg:find(k)
|
|
if not (st > 1 and msg:match(".", st - 1) ~= " ") and not (en < strlen(msg) and msg:match(".", en + 1) ~= " ") and class ~= "MAGE" then
|
|
InviteUnit(sender)
|
|
if not aura_env.people[noRealmSender] then aura_env.people[noRealmSender] = {["state"] = 0, ["kw"] = k} end
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif e == "CHAT_MSG_SYSTEM" then
|
|
if msg:match("You have invited") then
|
|
local sender = msg:match("You have invited (.+) to join your group")
|
|
local noRealmSender = sender:match("(.+)-%w+") or sender
|
|
if aura_env.people[noRealmSender] then
|
|
aura_env.people[noRealmSender].state = 0
|
|
end
|
|
elseif msg:match("joins the party") then
|
|
local sender = msg:match("(.+) joins the party")
|
|
local noRealmSender = sender:match("(.+)-%w+") or sender
|
|
if aura_env.people[noRealmSender] and aura_env.people[noRealmSender].state == 0 then
|
|
aura_env.people[noRealmSender].state = 1
|
|
for i = 1, GetNumGroupMembers() do
|
|
if UnitName("party" .. i) == sender then
|
|
aura_env.people[noRealmSender].unitID = "party" .. i
|
|
break
|
|
end
|
|
end
|
|
--If not tradeable create ticker and do other stuff
|
|
if CheckInteractDistance(aura_env.people[noRealmSender].unitID, 2) then
|
|
InitiateTrade(aura_env.people[noRealmSender].unitID)
|
|
aura_env.people[noRealmSender].state = 2
|
|
end
|
|
end
|
|
elseif msg:match("leaves the party") then
|
|
local sender = msg:match("(.+) leaves the party")
|
|
local noRealmSender = sender:match("(.+)-%w+") or sender
|
|
if aura_env.people[noRealmSender] and aura_env[noRealmSender].state == 6 then
|
|
aura_env.people[noRealmSender] = nil
|
|
end
|
|
end
|
|
elseif e == "TRADE_SHOW" then
|
|
for k,v in pairs(aura_env.people) do
|
|
if v.state == 2 then
|
|
aura_env.isTrade = true
|
|
aura_env.tradee = k
|
|
aura_env.people[k].state = 3
|
|
end
|
|
end
|
|
elseif e == "TRADE_ACCEPT_UPDATE" then
|
|
if msg == 1 and sender == 1 then
|
|
if aura_env.isTrade == true then
|
|
aura_env.people[aura_env.tradee].state = 4
|
|
if aura_env.people[aura_env.tradee].kw == "uc" or aura_env.people[aura_env.tradee].kw == "under" or aura_env.people[aura_env.tradee].kw == "undercity" then
|
|
ActionButton_ShowOverlayGlow(WeakAurasSaved.MagusKeywords.buttons[3])
|
|
aura_env.castQueue["Portal: Undercity"] = true
|
|
aura_env.people[aura_env.tradee]["Portal: Undercity"] = true
|
|
aura_env.people[aura_env.tradee].state = 5
|
|
elseif aura_env.people[aura_env.tradee].kw == "org" or aura_env.people[aura_env.tradee].kw == "og" or aura_env.people[aura_env.tradee].kw == "orgrimmar" then
|
|
ActionButton_ShowOverlayGlow(WeakAurasSaved.MagusKeywords.buttons[2])
|
|
aura_env.castQueue["Portal: Orgrimmar"] = true
|
|
aura_env.people[aura_env.tradee]["Portal: Orgrimmar"] = true
|
|
aura_env.people[aura_env.tradee].state = 5
|
|
elseif aura_env.people[aura_env.tradee].kw == "tb" or aura_env.people[aura_env.tradee].kw == "thunder" or aura_env.people[aura_env.tradee].kw == "thunderbluff" then
|
|
ActionButton_ShowOverlayGlow(WeakAurasSaved.MagusKeywords.buttons[1])
|
|
aura_env.castQueue["Portal: Thunder Bluff"] = true
|
|
aura_env.people[aura_env.tradee]["Portal: Thunder Bluff"] = true
|
|
aura_env.people[aura_env.tradee].state = 5
|
|
elseif aura_env.people[aura_env.tradee].kw == "test" then
|
|
ActionButton_ShowOverlayGlow(WeakAurasSaved.MagusKeywords.buttons[4])
|
|
aura_env.castQueue["Consecration"] = true
|
|
aura_env.people[aura_env.tradee]["Consecration"] = true
|
|
aura_env.people[aura_env.tradee].state = 5
|
|
end
|
|
aura_env.isTrade = false
|
|
aura_env.tradee = ""
|
|
updateText()
|
|
end
|
|
end
|
|
elseif e == "TRADE_CLOSED" then
|
|
if aura_env.isTrade == true then
|
|
aura_env.people[aura_env.tradee].state = 2
|
|
aura_env.isTrade = false
|
|
aura_env.tradee = ""
|
|
end
|
|
elseif e == "COMBAT_LOG_EVENT_UNFILTERED" then
|
|
local se = sender
|
|
local caster = select(3, ...)
|
|
if se == "SPELL_CAST_SUCCESS" and caster == UnitName("player") then
|
|
local spell = select(11, ...)
|
|
if aura_env.castQueue[spell] == true then aura_env.castQueue[spell] = false end
|
|
if spell == "Portal: Undercity" then
|
|
ActionButton_HideOverlayGlow(WeakAurasSaved.MagusKeywords.buttons[3])
|
|
elseif spell == "Portal: Orgrimmar" then
|
|
ActionButton_HideOverlayGlow(WeakAurasSaved.MagusKeywords.buttons[2])
|
|
elseif spell == "Portal: Thunder Bluff" then
|
|
ActionButton_HideOverlayGlow(WeakAurasSaved.MagusKeywords.buttons[1])
|
|
elseif spell == "Consecration" then
|
|
ActionButton_HideOverlayGlow(WeakAurasSaved.MagusKeywords.buttons[4])
|
|
end
|
|
for k,v in pairs(aura_env.people) do
|
|
if v[spell] and v.state == 5 then
|
|
v[spell] = false
|
|
aura_env.people[k] = nil
|
|
updateText()
|
|
end
|
|
end
|
|
end
|
|
elseif e == "TOGGLE_MAGUS" then
|
|
if aura_env.toggle == 0 then
|
|
print("Toggling script on")
|
|
aura_env.toggle = 1
|
|
for i = 1, 3 do
|
|
WeakAurasSaved.MagusKeywords.buttons[i]:Show()
|
|
end
|
|
else
|
|
print("Toggling script off")
|
|
aura_env.toggle = 0
|
|
for i = 1, 3 do
|
|
WeakAurasSaved.MagusKeywords.buttons[i]:Hide()
|
|
end
|
|
end
|
|
elseif e == "ADD_KEYWORD" then
|
|
if msg then
|
|
print("Adding", msg)
|
|
msg = msg:lower()
|
|
WeakAurasSaved.MagusKeywords[msg] = 1
|
|
else
|
|
print("No keyword provided")
|
|
end
|
|
elseif e == "LIST_KEYWORDS" then
|
|
local test = ""
|
|
for k,v in pairs(WeakAurasSaved.MagusKeywords) do
|
|
print(k)
|
|
test = test .. k .. "\n"
|
|
end
|
|
message(test)
|
|
elseif e == "REMOVE_KEYWORD" then
|
|
if msg then
|
|
if WeakAurasSaved.MagusKeywords[msg] then
|
|
print("Removing", msg)
|
|
WeakAurasSaved.MagusKeywords[msg] = nil
|
|
else
|
|
print(msg, "does not exist in the keyword table")
|
|
end
|
|
else
|
|
print("No keyword provided")
|
|
end
|
|
end
|
|
end
|
|
|
|
--INIT
|
|
if not aura_env.toggle then aura_env.toggle = 1 end
|
|
if not WeakAurasSaved.MagusKeywords then WeakAurasSaved.MagusKeywords = {
|
|
["port"] = 1,
|
|
["portal"] = 1,
|
|
["org"] = 1,
|
|
["og"] = 1,
|
|
["uc"] = 1,
|
|
["under"] = 1,
|
|
["thunder"] = 1,
|
|
["tb"] = 1,
|
|
["wtb"] = 1,
|
|
} end
|
|
|
|
--[[
|
|
Player state table
|
|
0 - invited
|
|
1 - joined
|
|
2 - trade queue
|
|
3 - trading
|
|
4 - trade complete
|
|
5 - light up portal
|
|
6 - portal cast
|
|
7 - left? clean table
|
|
|
|
Cancel everything if person leave
|
|
]]
|
|
aura_env.people = {}
|
|
aura_env.castQueue = {}
|
|
aura_env.isTrade = false
|
|
aura_env.tradee = ""
|
|
|
|
--[[local function hideButon(self)
|
|
ActionButton_HideOverlayGlow(self)
|
|
end--]]
|
|
|
|
if not WeakAurasSaved.MagusKeywords.buttons or not WeakAurasSaved.MagusKeywords.buttons[1][0] then WeakAurasSaved.MagusKeywords.buttons = {
|
|
[1] = CreateFrame("Button", "buton", aura_env.region, "SecureActionButtonTemplate"),
|
|
[2] = CreateFrame("Button", "buton", aura_env.region, "SecureActionButtonTemplate"),
|
|
[3] = CreateFrame("Button", "buton", aura_env.region, "SecureActionButtonTemplate"),
|
|
[4] = CreateFrame("Button", "buton", aura_env.region, "SecureActionButtonTemplate"),
|
|
} end
|
|
|
|
for i = 1, 4 do
|
|
WeakAurasSaved.MagusKeywords.buttons[i]:SetAttribute("type", "macro")
|
|
WeakAurasSaved.MagusKeywords.buttons[i]:SetSize(aura_env.config.size, aura_env.config.size)
|
|
WeakAurasSaved.MagusKeywords.buttons[i]:SetPoint("CENTER", aura_env.region, "CENTER", (i - 1) * aura_env.config.size, 0)
|
|
WeakAurasSaved.MagusKeywords.buttons[i]:RegisterForClicks("LeftButtonDown")
|
|
--WeakAurasSaved.MagusKeywords.buttons[i]:SetScript("PreClick", hideButon)
|
|
WeakAurasSaved.MagusKeywords.buttons[i].text = WeakAurasSaved.MagusKeywords.buttons[i]:CreateFontString("text", "ARTWORK")
|
|
WeakAurasSaved.MagusKeywords.buttons[i].text:SetFont("Fonts\\FRIZQT__.TTF", 14, "OUTLINE, MONOCHROME")
|
|
WeakAurasSaved.MagusKeywords.buttons[i].text:SetPoint("CENTER", WeakAurasSaved.MagusKeywords.buttons[i], "CENTER", 0, -aura_env.config.size / 2 - 14)
|
|
WeakAurasSaved.MagusKeywords.buttons[i].text:Show()
|
|
WeakAurasSaved.MagusKeywords.buttons[i]:Show()
|
|
end
|
|
|
|
WeakAurasSaved.MagusKeywords.buttons[1]:SetNormalTexture(135750)
|
|
WeakAurasSaved.MagusKeywords.buttons[1]:SetAttribute("macrotext", format("/cast Portal: Thunder Bluff"))
|
|
WeakAurasSaved.MagusKeywords.buttons[2]:SetNormalTexture(135744)
|
|
WeakAurasSaved.MagusKeywords.buttons[2]:SetAttribute("macrotext", format("/cast Portal: Orgrimmar"))
|
|
WeakAurasSaved.MagusKeywords.buttons[3]:SetNormalTexture(135751)
|
|
WeakAurasSaved.MagusKeywords.buttons[3]:SetAttribute("macrotext", format("/cast Portal: Undercity"))
|
|
WeakAurasSaved.MagusKeywords.buttons[4]:SetNormalTexture(135926)
|
|
WeakAurasSaved.MagusKeywords.buttons[4]:SetAttribute("macrotext", format("/cast Consecration"))
|
|
|
|
aura_env.printTable = function(table, n)
|
|
if not n then n = 0 end
|
|
for k,v in pairs(table) do
|
|
local printText = ""
|
|
for i = 1, n do
|
|
printText = printText .. " "
|
|
end
|
|
printText = printText .. "[" .. k .. "] = " .. tostring(v)
|
|
print(printText)
|
|
if type(v) == "table" then
|
|
n = n + 1
|
|
aura_env.printTable(v, n)
|
|
end
|
|
end
|
|
end |