Advertisement
Guest User

CurrencyMonitor_HelpMe

a guest
Jul 7th, 2012
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local warningSound = true
  2. minToWarn = 1
  3. defaultThreshold = 3000
  4. defaultTracking = true
  5.  
  6. --[[ CurrencyMonitor (Description currently inaccurate)
  7.  
  8. This program watches a player's justice points, valor points, conquest points, and honor points
  9. and flashes a raid warning and optional raid warning sound when any of them exceeds a predetermined
  10. threshold. CurrencyMonitor is meant to be super simple and configurable only from within this file,
  11. meaning you won't find any slash commands or in-game configuration (yet).
  12.  
  13. Line 1 holds the threshold at which you want CurrencyMonitor to alert you; simply change the value
  14. on line 1 to your desired threshold. After gaining a currency, for example Justice Points, if you
  15. have more than your threshold, this add-on will alert you with a raid warning. If you want the raid
  16. warning sound, simply change line 3 to true.
  17.  
  18. The variable minToWarn (line 2) represents the individual amount for which CM will warn the
  19. user. For example, by default honorable kills worth 7 honor will not fire the warning because
  20. they are less than 50 (the default value for minToWarn). If you set minToWarn to zero, every
  21. honor gain while over your threshold, even 1 point, will spam you. Find a happy medium with this
  22. number.
  23.  
  24. *** CurrencyMonitor is Copyright 2011 by Phael of Hydraxis ***
  25.  
  26. Please do not distribute altered copies of this add-on because it can make maintaining it a
  27. nightmare. If you want to see a feature built into it, please add a comment on the official
  28. download pages on curse.com and wowinterface.com.
  29.  
  30. For now, I will take bug reports and feature requests directly in the comments sections of the
  31. official release channels. Until such a time that I believe I need a ticket tracking system (which
  32. hopefully never happens), I will simply answer bug reports/feature requests in comments sections.
  33.  
  34. ---------------
  35. Version History
  36. ---------------
  37.  
  38. -- DATE -- - V.2.0 Created the first in-game GUI. Bugs likely. Added slash command to hide or
  39. show the GUI.
  40. 07/02/2012 - V.1.2.3 Removed an unnecessary registered event. Matched default values to
  41. description. Flipped the change log. Moved variables around in the file to
  42. make maintaining it just a bit easier.
  43. 02/24/2012 - V.1.2.2 Fixed a problem with the currency warning not updating to reflect the
  44. current amount of points when points are awarded. Minor .toc file fix.
  45. 12/15/2011 - V.1.2.1 Changed some variables to local to avoid polluting the global environment.
  46. 12/09/2011 - V.1.2 Spam bug fix. Also warns of only the type of currency that triggered the
  47. warning. Considerable code rewrite for less redundancy.
  48. 12/05/2011 - V.1.1 Removed BG spamminess through smart points announcement.
  49. 12/02/2011 - V.1.0 Now firing on the correct event.
  50. 12/02/2011 - V.0.1(BETA) (Initial release)
  51.  
  52. -----
  53. To-Do
  54. -----
  55.  
  56. Nap. Damn I love naps.
  57.  
  58. --- Credits ---
  59.  
  60. Credit goes to Wowhead user eidyia for the idea and additional input that helped hone this add-on's
  61. functionality. Specifically, thank eidyia for the version 1.1 removal of BG spam and the 1.2 removal
  62. of buggy spam!
  63.  
  64. --]]
  65.  
  66. ----------------- Know what you're doing before you edit anything below this line. -----------------
  67.  
  68. -- Add slash command configuration menu
  69. SLASH_CURRENCYMONITOR1, SLASH_CURRENCYMONITOR2 = "/cm", "/currencymonitor";
  70. function SlashCmdList.CURRENCYMONITOR(msg, editbox)
  71. CM_ToggleGUI()
  72. print(type(CM_db))
  73. end
  74.  
  75. -- Table to reference to determine if a currency is tracked
  76. local trackingTable = {}
  77.  
  78. -- Table to store currency IDs for querying the server
  79. local currencies = {
  80. "395", -- Justice points
  81. "396", -- Valor points
  82. "392", -- Honor points
  83. "390" -- Conquest points
  84. }
  85.  
  86. -- Table to store currency names for display to the player
  87. local allCurrency = {
  88. "Justice Points",
  89. "Valor Points",
  90. "Honor Points",
  91. "Conquest Points"
  92. }
  93.  
  94. -- Table to store currency thresholds over which the player should be notified
  95. local currencyThresholds = {}
  96.  
  97. -- An empty table that gets used more often than a $5 whore
  98. local currentAmount = {}
  99.  
  100. -- Register the event our invisible frame cares about and set up the GUI
  101. function CurrencyMonitor_OnLoad()
  102.  
  103. CurrencyMonitorFrame:RegisterEvent("CHAT_MSG_CURRENCY")
  104. CurrencyMonitorFrame:RegisterEvent("ADDON_LOADED")
  105. end
  106.  
  107. -- Update whether or not the currency is marked for tracking
  108. function CM_updateChecked(self, i)
  109.  
  110. if self:GetChecked() then
  111. trackingTable[i] = true
  112. else
  113. trackingTable[i] = false
  114. end
  115. -- Debugging information
  116. print("Item "..i.." is now "..tostring(trackingTable[i])..".")
  117. print(type(CM_db))
  118. end
  119.  
  120. -- Update all thresholds with edit box values when the Accept button is pressed
  121. function CM_UpdateAll(v,j,c,h)
  122.  
  123. currencyThresholds = {v:GetText(), j:GetText(), c:GetText(), h:GetText()}
  124.  
  125. CM_db["valor"] = {
  126. ["threshold"] = currencyThresholds[1],
  127. ["tracked"] = trackingTable[1]
  128. }
  129. CM_db["justice"] = {
  130. ["threshold"] = currencyThresholds[2],
  131. ["tracked"] = trackingTable[2]
  132. }
  133. CM_db["conquest"] = {
  134. ["threshold"] = currencyThresholds[3],
  135. ["tracked"] = trackingTable[3]
  136. }
  137. CM_db["honor"] = {
  138. ["threshold"] = currencyThresholds[4],
  139. ["tracked"] = trackingTable[4]
  140. }
  141.  
  142. for k, v in pairs(CM_db) do
  143. print(v.threshold, v.tracked)
  144. end
  145. CM_ToggleGUI()
  146. end
  147.  
  148. -- Loop through and get the current amount of the four currencies we care about
  149. local function getAllCurrencies()
  150.  
  151. for i = 1, 4 do
  152. local _, amountNow = GetCurrencyInfo(currencies[i])
  153. table.insert(currentAmount, amountNow)
  154. end
  155. end
  156.  
  157. -- Adds the warning message to the raid warning frame
  158. local function printOutput(triggerCurrency)
  159.  
  160. for i = 1, 4 do
  161. if allCurrency[i] == triggerCurrency then
  162. if warningSound then
  163. PlaySoundFile("Sound\\Interface\\RaidWarning.wav")
  164. end
  165. RaidNotice_AddMessage(RaidWarningFrame, "You have " .. currentAmount[i] .. " " .. allCurrency[i] .. "!", ChatTypeInfo["RAID_WARNING"])
  166. end
  167. end
  168. end
  169.  
  170. -- The functions to run when our registered events fire
  171. function CurrencyMonitor_OnEvent(self, event, arg1)
  172.  
  173. if event == "CHAT_MESSAGE_CURRENCY" and tonumber(string.match(arg1, '%d+', -4)) >= minToWarn then
  174. getAllCurrencies()
  175. for i = 1, 4 do
  176. local triggerCurrency = string.match(arg1, allCurrency[i])
  177. if (currentAmount[i] >= currencyThresholds[i]) and (trackingTable[i]) then
  178. printOutput(triggerCurrency)
  179. end
  180. end
  181. -- Empty the working tables for next use
  182. currentAmount = nil
  183. currentAmount = {}
  184. end
  185.  
  186. if (event == "ADDON_LOADED" and arg1 == "CurrencyMonitor") then
  187.  
  188. -- If there isn't a table already in the saved variables from last session, create one
  189. if not (CM_db) then
  190. CM_db = {}
  191. -- Assign default values to the new table
  192. CM_db["valor"] = {["threshold"] = defaultThreshold, ["tracked"] = defaultTracking}
  193. CM_db["justice"] = {["threshold"] = defaultThreshold, ["tracked"] = defaultTracking}
  194. CM_db["conquest"] = {["threshold"] = defaultThreshold, ["tracked"] = defaultTracking}
  195. CM_db["honor"] = {["threshold"] = defaultThreshold, ["tracked"] = defaultTracking}
  196. end
  197. print(type(CM_db))
  198.  
  199. -- Set the edit boxes' default values
  200. CM_ValorEdit:SetText(CM_db["valor"].threshold)
  201. CM_JusticeEdit:SetText(CM_db["justice"].threshold)
  202. CM_ConquestEdit:SetText(CM_db["conquest"].threshold)
  203. CM_HonorEdit:SetText(CM_db["honor"].threshold)
  204. end
  205. end
  206.  
  207. -- Hide the GUI if it's shown, or show it if it's hidden
  208. function CM_ToggleGUI(self)
  209.  
  210. if CurrencyMonitorFrame:IsVisible(self) then
  211. CurrencyMonitorFrame:Hide(self)
  212. else
  213. CurrencyMonitorFrame:Show(self)
  214. end
  215. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement