vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 -- Thanks for taking the time to take a look at Answering Machine.
2 -- For up to date versions, please check the following authorized sites.
3  
4 -- http://www.curse-gaming.com/mod.php?addid=1583
5 -- http://www.wowinterface.com/downloads/fileinfo.php?id=4078
6 -- http://ui.worldofwar.net/ui.php?id=1221
7  
8 -- Mindark of Dragonmaw
9  
10 local Missed_Tells = { };
11 local Missed_Authors = { };
12 local Answer_Frame = true;
13 local IsRecording = false;
14 local rec_AFK = true;
15 local rec_DND = true;
16 local Is_AFK = false;
17 local Is_DND = false;
18  
19 function AnsweringMachine_OnLoad()
20 this:RegisterEvent("VARIABLES_LOADED");
21 this:RegisterEvent("CHAT_MSG_SYSTEM");
22 this:RegisterEvent("CHAT_MSG_WHISPER");
23 this:RegisterForDrag("LeftButton");
24 end
25  
26 function AnsweringMachine_OnDragStart()
27 AnswerFrame:StartMoving()
28 end
29  
30 function AnsweringMachine_OnDragStop()
31 AnswerFrame:StopMovingOrSizing()
32 end
33  
34 function AnsweringMachine_OnEvent(event)
35 if (event == "VARIABLES_LOADED") then
36 SlashCmdList["ANSWER"] = Answer_SlashHandler;
37 SLASH_ANSWER1 = "/answer";
38 end
39  
40 if (event == "CHAT_MSG_SYSTEM") then
41 if (string.find(arg1, string.sub(MARKED_AFK_MESSAGE, 1, string.len(MARKED_AFK_MESSAGE) - 4), 1)) then
42 if (rec_AFK) then
43 Ans_Record();
44 elseif (Is_DND) then
45 Ans_Stop();
46 end
47 Is_AFK = true;
48 if (Is_DND) then
49 Is_DND = false;
50 end
51 elseif (string.find(arg1, string.sub(MARKED_DND, 1, string.len(MARKED_DND) - 3), 1)) then
52 if (rec_DND) then
53 Ans_Record();
54 elseif (Is_AFK) then
55 Ans_Stop();
56 end
57 Is_DND = true;
58 if (Is_AFK) then
59 Is_AFK = false;
60 end
61 end
62  
63 if (arg1 == CLEARED_AFK) then
64 Ans_Stop();
65 Is_AFK = false;
66 end
67 if (arg1 == CLEARED_DND) then
68 Ans_Stop();
69 Is_DND = false;
70 end
71 end
72  
73 if (event == "CHAT_MSG_WHISPER" and IsRecording) then
74 table.insert(Missed_Tells, arg1);
75 table.insert(Missed_Authors, arg2);
76 AnsweringMachine_Text:SetText(ANS_MISSED1 .. table.getn(Missed_Tells) .. ANS_MISSED2);
77 end
78 end
79  
80 function Ans_Record()
81 IsRecording = true;
82 if (Answer_Frame) then
83 AnswerFrame:Show();
84 end
85 AnsweringMachine_Text:SetText(ANS_MISSED1 .. table.getn(Missed_Tells) .. ANS_MISSED2);
86 end
87  
88 function Ans_Stop()
89 IsRecording = false;
90 Ans_Retell_Msgs();
91 Missed_Tells = { };
92 Missed_Authors = { };
93 AnswerFrame:Hide();
94 end
95  
96 function Ans_Retell_Msgs()
97 if (table.getn(Missed_Tells) > 0) then
98 DEFAULT_CHAT_FRAME:AddMessage(ANS_SEPARATOR .. "\n" .. ANS_MISSED1 .. table.getn(Missed_Tells) .. ANS_MISSED2, 1.0, 0.5, 1.0);
99 for i=1,table.getn(Missed_Tells) do
100 DEFAULT_CHAT_FRAME:AddMessage("[" .. Missed_Authors[i] .. "]: " .. Missed_Tells[i], 1.0, 0.5, 1.0);
101 end
102 DEFAULT_CHAT_FRAME:AddMessage(ANS_SEPARATOR, 1.0, 0.5, 1.0);
103 else
104 DEFAULT_CHAT_FRAME:AddMessage(ANS_NOTELLS, 1.0, 1.0, 0.0);
105 end
106 end
107  
108 function Answer_SlashHandler(msg)
109 local words = {};
110 for word in string.gfind(msg, "%w+") do
111 table.insert(words, word);
112 end
113 if table.getn(words) == 0 then
114 DEFAULT_CHAT_FRAME:AddMessage(ANS_MSG_HELP .. "\n\n", 1.0, 1.0, 0.0);
115 DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_HELP .. "\n\n", 1.0, 1.0, 0.0);
116 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_HELP .. "\n\n", 1.0, 1.0, 0.0);
117 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_HELP, 1.0, 1.0, 0.0);
118 else
119 local cmd = string.lower(words[1]);
120 if cmd == "msg" then
121 local ans_msg = "";
122 for i=2,table.getn(words) do
123 ans_msg = ans_msg .. " " .. words[i];
124 end
125 if ans_msg == "" then
126 DEFAULT_CHAT_FRAME:AddMessage(ANS_AWAY_MSG .. DEFAULT_AFK_MESSAGE, 1.0, 1.0, 0.0);
127 else
128 DEFAULT_AFK_MESSAGE = ans_msg;
129 DEFAULT_CHAT_FRAME:AddMessage(ANS_DEFAULT .. DEFAULT_AFK_MESSAGE, 1.0, 1.0, 0.0);
130 end
131 elseif cmd == "frame" then
132 if (table.getn(words) == 1) then
133 if (Answer_Frame) then
134 DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
135 else
136 DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
137 end
138 elseif (string.lower(words[2]) == "on") then
139 DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
140 if (IsRecording) then
141 AnswerFrame:Show();
142 end
143 Answer_Frame = true;
144 elseif (string.lower(words[2]) == "off") then
145 DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
146 AnswerFrame:Hide();
147 Answer_Frame = false;
148 else
149 DEFAULT_CHAT_FRAME:AddMessage(ANS_FRAME_HELP, 1.0, 1.0, 0.0);
150 end
151 elseif cmd == "afk" then
152 if (table.getn(words) == 1) then
153 if (rec_AFK) then
154 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
155 else
156 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
157 end
158 elseif (string.lower(words[2]) == "on") then
159 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
160 rec_AFK = true;
161 elseif (string.lower(words[2]) == "off") then
162 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
163 if (Is_AFK) then
164 Ans_Stop();
165 end
166 rec_AFK = false;
167 else
168 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_AFK_HELP, 1.0, 1.0, 0.0);
169 end
170 elseif cmd == "dnd" then
171 if (table.getn(words) == 1) then
172 if (rec_DND) then
173 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
174 else
175 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
176 end
177 elseif (string.lower(words[2]) == "on") then
178 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_STATUS .. ANS_ON, 1.0, 1.0, 0.0);
179 rec_DND = true;
180 elseif (string.lower(words[2]) == "off") then
181 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_STATUS .. ANS_OFF, 1.0, 1.0, 0.0);
182 if (Is_DND) then
183 Ans_Stop();
184 end
185 rec_DND = false;
186 else
187 DEFAULT_CHAT_FRAME:AddMessage(ANS_REC_DND_HELP, 1.0, 1.0, 0.0);
188 end
189 else
190 DEFAULT_CHAT_FRAME:AddMessage(ANS_MSG_HELP .. "\n\n" .. ANS_FRAME_HELP, 1.0, 1.0, 0.0);
191 end
192 end
193 end