Files
wow-weakauras/Complete Projects/Fivver Stuff/FO3BE740D804 - Magus Portals.lua
2024-08-24 22:43:07 +02:00

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