vanilla-wow-addons – Rev 1
?pathlinks?
-- Thanks for taking the time to take a look at Answering Machine.
-- For up to date versions, please check the following authorized sites.
-- http://www.curse-gaming.com/mod.php?addid=1583
-- http://www.wowinterface.com/downloads/fileinfo.php?id=4078
-- http://ui.worldofwar.net/ui.php?id=1221
-- Mindark of Dragonmaw
local Missed_Tells = { };
local Missed_Authors = { };
local Answer_Frame = true;
local IsRecording = false;
local rec_AFK = true;
local rec_DND = true;
local Is_AFK = false;
local Is_DND = false;
function AnsweringMachine_OnLoad()
this:RegisterEvent("VARIABLES_LOADED");
this:RegisterEvent("CHAT_MSG_SYSTEM");
this:RegisterEvent("CHAT_MSG_WHISPER");
this:RegisterForDrag("LeftButton");
end
function AnsweringMachine_OnDragStart()
AnswerFrame:StartMoving()
end
function AnsweringMachine_OnDragStop()
AnswerFrame:StopMovingOrSizing()
end
function AnsweringMachine_OnEvent(event)
if (event == "VARIABLES_LOADED") then
SlashCmdList["ANSWER"] = Answer_SlashHandler;
SLASH_ANSWER1 = "/answer";
end
if (event == "CHAT_MSG_SYSTEM") then
if (string.find(arg1, string.sub(MARKED_AFK_MESSAGE, 1, string.len(MARKED_AFK_MESSAGE) - 4), 1)) then
if (rec_AFK) then
Ans_Record();
elseif (Is_DND) then
Ans_Stop();
end
Is_AFK = true;
if (Is_DND) then
Is_DND = false;
end
elseif (string.find(arg1, string.sub(MARKED_DND, 1, string.len(MARKED_DND) - 3), 1)) then
if (rec_DND) then
Ans_Record();
elseif (Is_AFK) then
Ans_Stop();
end
Is_DND = true;
if (Is_AFK) then
Is_AFK = false;
end
end
if (arg1 == CLEARED_AFK) then
Ans_Stop();
Is_AFK = false;
end
if (arg1 == CLEARED_DND) then
Ans_Stop();
Is_DND = false;
end
end
if (event == "CHAT_MSG_WHISPER" and IsRecording) then
table.insert(Missed_Tells, arg1);
table.insert(Missed_Authors, arg2);
AnsweringMachine_Text:SetText(ANS_MISSED1 .. table.getn(Missed_Tells) .. ANS_MISSED2);
end
end
function Ans_Record()
IsRecording = true;
if (Answer_Frame) then
AnswerFrame:Show();
end
AnsweringMachine_Text:SetText(ANS_MISSED1 .. table.getn(Missed_Tells) .. ANS_MISSED2);
end
function Ans_Stop()
IsRecording = false;
Ans_Retell_Msgs();
Missed_Tells = { };
Missed_Authors = { };
AnswerFrame:Hide();
end
function Ans_Retell_Msgs()
if (table.getn(Missed_Tells) > 0) then
DEFAULT_CHAT_FRAME:AddMessage(ANS_SEPARATOR .. "\n" .. ANS_MISSED1 .. table.getn(Missed_Tells) .. ANS_MISSED2, 1.0, 0.5, 1.0);
for i=1,table.getn(Missed_Tells) do
DEFAULT_CHAT_FRAME:AddMessage("[" .. Missed_Authors[i] .. "]: " .. Missed_Tells[i], 1.0, 0.5, 1.0);
end
DEFAULT_CHAT_FRAME:AddMessage(ANS_SEPARATOR, 1.0, 0.5, 1.0);
else
DEFAULT_CHAT_FRAME:AddMessage(ANS_NOTELLS, 1.0, 1.0, 0.0);
end
end
function Answer_SlashHandler(msg)
local words = {};
for word in string.gfind(msg, "%w+") do
table.insert(words, word);
end
if table.getn(words) == 0 then
DEFAULT_CHAT_FRAME:AddMessage(ANS_MSG_HELP .. "\n\n", 1.0, 1.0, 0.0);
DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_HELP .. "\n\n", 1.0, 1.0, 0.0);
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_HELP .. "\n\n", 1.0, 1.0, 0.0);
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_HELP, 1.0, 1.0, 0.0);
else
local cmd = string.lower(words[1]);
if cmd == "msg" then
local ans_msg = "";
for i=2,table.getn(words) do
ans_msg = ans_msg .. " " .. words[i];
end
if ans_msg == "" then
DEFAULT_CHAT_FRAME:AddMessage(ANS_AWAY_MSG .. DEFAULT_AFK_MESSAGE, 1.0, 1.0, 0.0);
else
DEFAULT_AFK_MESSAGE = ans_msg;
DEFAULT_CHAT_FRAME:AddMessage(ANS_DEFAULT .. DEFAULT_AFK_MESSAGE, 1.0, 1.0, 0.0);
end
elseif cmd == "frame" then
if (table.getn(words) == 1) then
if (Answer_Frame) then
DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
else
DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
end
elseif (string.lower(words[2]) == "on") then
DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
if (IsRecording) then
AnswerFrame:Show();
end
Answer_Frame = true;
elseif (string.lower(words[2]) == "off") then
DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
AnswerFrame:Hide();
Answer_Frame = false;
else
DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_HELP, 1.0, 1.0, 0.0);
end
elseif cmd == "afk" then
if (table.getn(words) == 1) then
if (rec_AFK) then
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
else
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
end
elseif (string.lower(words[2]) == "on") then
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
rec_AFK = true;
elseif (string.lower(words[2]) == "off") then
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
if (Is_AFK) then
Ans_Stop();
end
rec_AFK = false;
else
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_HELP, 1.0, 1.0, 0.0);
end
elseif cmd == "dnd" then
if (table.getn(words) == 1) then
if (rec_DND) then
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
else
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
end
elseif (string.lower(words[2]) == "on") then
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
rec_DND = true;
elseif (string.lower(words[2]) == "off") then
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
if (Is_DND) then
Ans_Stop();
end
rec_DND = false;
else
DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_HELP, 1.0, 1.0, 0.0);
end
else
DEFAULT_CHAT_FRAME:AddMessage(ANS_MSG_HELP .. "\n\n" .. ANS_FRAME_HELP, 1.0, 1.0, 0.0);
end
end
end
Generated by GNU Enscript 1.6.5.90.