Go to most recent revision | Compare with Previous | Blame | View Log
local loaded = CreateFrame("FRAME", "Loaded") local messages = CreateFrame("FRAME", "Messages") loaded:RegisterEvent("ADDON_LOADED") messages:RegisterEvent("CHAT_MSG_WHISPER") messages:RegisterEvent("CHAT_MSG_PARTY") messages:RegisterEvent("CHAT_MSG_PARTY_LEADER") local Player = UnitName("player") if Defaults == nil then Defaults = { Prefix = "!", Debug = false, } end local C = { Player = "player", W = "whisper", Addon = { Author = GetAddOnMetadata("_GautrReply", "author"), Version = GetAddOnMetadata("_GautrReply", "version"), Notes = GetAddOnMetadata("_GautrReply", "notes"), Title = GetAddOnMetadata("_GautrReply", "title"), Prefix = "|cffffd700_GautrReply|r: ", }, Command = { Percent = { Current = "percentcurrent", Left = "percent", }, Experience = { Current = "expcurrent", Left = "exp", }, Bars = { Current = "barscurrent", Left = "bars", }, Help = { Text = "help", }, Position = { Text = "position", }, }, } local function messagesHandler(self, event, msg, sender) local coordX, coordY = GetPlayerMapPosition(Player) local Messages = { Percent = { Current = (format("Currently at: %d%s", (floor(UnitXP(Player) / UnitXPMax(Player) * 100)), "%")), Left = (format("%d%s Left to Level", (100 - floor(UnitXP(Player) / UnitXPMax(Player) * 100)), "%")), }, Experience = { Current = (format("Current Experience: %d / %d", (UnitXP(Player)), (UnitXPMax(Player)))), Left = (format("Experience Left to Level: %d / %d ", (UnitXPMax(Player) - UnitXP(Player)), UnitXPMax(Player))), }, Bars = { Current = (format("%s %d/20", "Bars ", (math.floor(20*UnitXP(Player)/UnitXPMax(Player)+0.5)))), Left = (format("%s %d", "Bars Left", (20 - math.floor(20*UnitXP(Player)/UnitXPMax(Player)+0.5)))), }, Help = { Text = (format("%s%s%s", "Type ", Defaults.Prefix, " followed by any of the following commands 'bars, barscurrent, exp, expcurrent, position, percent, percentcurrent")), }, Position = { Text = (format("I'm in %s @ %d,%d", GetRealZoneText(), (coordX*100 ), (coordY*100))) }, } if Defaults.Debug then print("Event: "..event) print("Player: "..sender) print("Message: "..msg) else if msg:lower():match(Defaults.Prefix .. C.Command.Percent.Current) then if sender ~= Player then SendChatMessage(Messages.Percent.Current, C.W, nil, sender) else print(C.Addon.Prefix .. Messages.Percent.Current) end elseif msg:lower():match(Defaults.Prefix .. C.Command.Percent.Left) then if sender ~= Player then SendChatMessage(Messages.Percent.Left, C.W, nil, sender) else print(C.Addon.Prefix .. Messages.Percent.Left) end elseif msg:lower():match(Defaults.Prefix .. C.Command.Experience.Current) then if sender ~= Player then SendChatMessage(Messages.Experience.Current, C.W, nil, sender) else print(C.Addon.Prefix .. Messages.Experience.Current) end elseif msg:lower():match(Defaults.Prefix .. C.Command.Experience.Left) then if sender ~= Player then SendChatMessage(Messages.Experience.Left, C.W, nil, sender) else print(C.Addon.Prefix .. Messages.Experience.Left) end elseif msg:lower():match(Defaults.Prefix .. C.Command.Bars.Current) then if sender ~= Player then SendChatMessage(Messages.Bars.Current, C.W, nil, sender) else print(C.Addon.Prefix .. Messages.Bars.Current) end elseif msg:lower():match(Defaults.Prefix .. C.Command.Bars.Left) then if sender ~= Player then SendChatMessage(Messages.Bars.Left, C.W, nil, sender) else print(C.Addon.Prefix .. Messages.Bars.Left) end elseif msg:lower():match(Defaults.Prefix .. C.Command.Help.Text) then if sender ~= Player then SendChatMessage(Messages.Help.Text, C.W, nil, sender) else print(C.Addon.Prefix .. Messages.Help.Text) end elseif msg:lower():match(Defaults.Prefix .. C.Command.Position.Text) then if sender ~= Player then SendChatMessage(Messages.Position.Text, C.W, nil, sender) else print(C.Addon.Prefix .. Messages.Position.Text) end end end end SLASH_GAUTRREPLY1, SLASH_GAUTRREPLY2, SLASH_GAUTRREPLY3 = '/gautr', '/gr', '/gautrreply'; local function handler(msg, editbox) local command, rest = msg:match("^(%S*)%s*(.-)$"); if command == "prefix" then if rest == "" then print("|cffffd700" .. C.Addon.Title .. "|r: Type a symbol, the default is '|cffffd700!|r'. Currently it is "..Defaults.Prefix); elseif rest ~= nil then Defaults.Prefix = rest end elseif command == "debug" then if rest == "" then local check = Defaults.Debug and "ON" or "OFF" print("|cffffd700" .. C.Addon.Title .. "|r: Type '/gr debug on' to turn on, off to turn off... Its currently " .. tostring(check)) elseif rest == "on" then Defaults.Debug = true elseif rest == "off" then Defaults.Debug = false end else print("|cffffd700" .. C.Addon.Title .. "|r: Type '/gr', '/gautr' or '/gautrreply' and either prefix or debug for info"); end end SlashCmdList["GAUTRREPLY"] = handler; function loaded:OnEvent(event, arg1) local addonName = "_GautrReply" if event == "ADDON_LOADED" and arg1 == addonName then print("|cffffd700".. arg1 .. " ".. C.Addon.Version .."|r".. " by " .. "|cffffd700" .. C.Addon.Author .. "|r"); end end local filterStrings = { C.Command.Help.Text, C.Command.Experience.Left, C.Command.Experience.Current, C.Command.Position.Text, C.Command.Percent.Left, C.Command.Percent.Current, C.Command.Bars.Left, C.Command.Bars.Current, } --[[ Modified Decount code, Credits goes to Tekkub ]]-- local function filter(self, event, msg) for _,str in pairs(filterStrings) do if msg:lower():match(str) then if Defaults.Debug then print("Filtered Incoming Command: " .. "|cffffd700" ..str:upper().."|r in |cffffd700" .. event.."|r") end return true end end end for _,event in pairs{"CHAT_MSG_WHISPER", "CHAT_MSG_PARTY", "CHAT_MSG_PARTY_LEADER"} do ChatFrame_AddMessageEventFilter(event, filter) end loaded:SetScript("OnEvent", loaded.OnEvent); messages:SetScript("OnEvent", messagesHandler);