Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.15 KB | None | 0 0
  1. -- Initialize the AddOn and Saved Variables
  2. local healthNumbers
  3. local powerNumbers
  4. local frame = CreateFrame("Frame")
  5. frame:RegisterEvent("ADDON_LOADED")
  6. frame:RegisterEvent("NAME_PLATE_UNIT_ADDED")
  7. frame:RegisterEvent("NAME_PLATE_UNIT_REMOVED")
  8.  
  9. frame:SetScript("OnEvent", function(self, event, ...) self[event](self,...) end)
  10.  
  11. function frame.round(num, idp)
  12. return tonumber(string.format("%." .. (idp or 0) .. "f", num))
  13. end
  14.  
  15. function frame.formatPlayerNumbers(amount)
  16. local formatted, k = amount
  17. while true do
  18. formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
  19. if (k==0) then
  20. break
  21. end
  22. end
  23.  
  24. if string.len(formatted) >= 7 and string.len(formatted) < 11 then
  25. formatted = string.sub(formatted, 0, (string.len(formatted) - 4)) .. "k"
  26. elseif string.len(formatted) >= 11 then
  27. formatted = string.sub(formatted, 0, (string.len(formatted) - 8)) .. "m"
  28. end
  29.  
  30. return formatted
  31. end
  32.  
  33.  
  34. function frame:NAME_PLATE_UNIT_ADDED(unitID) --for health numbers
  35. if not UnitIsUnit(unitID, "player") then return end
  36. self:RegisterUnitEvent("UNIT_HEALTH_FREQUENT", "player")
  37. self:RegisterUnitEvent("UNIT_POWER_FREQUENT", "player")
  38. local playernameplate = C_NamePlate.GetNamePlateForUnit(unitID)--returns table
  39. local playernameplatename = playernameplate:GetName()
  40. if not healthNumbers then
  41. healthNumbers = CreateFrame("Frame", nil, NamePlatePlayerResourceFrame) -- Setting up health display
  42. healthNumbers.text = healthNumbers:CreateFontString(nil, "OVERLAY")
  43. healthNumbers.text:SetAllPoints(true)
  44. healthNumbers:SetFrameStrata("HIGH")
  45. healthNumbers.text:SetFont("FONTS\\FRIZQT__.TTF", 11, "OUTLINE")
  46. healthNumbers.text:SetVertexColor(1, 1, 1)
  47. end
  48. if healthNumbers.attachedto ~= playernameplatename then --playernameplate switches
  49. healthNumbers:SetAllPoints(_G[playernameplatename.."UnitFrame"].healthBar)
  50. healthNumbers.attachedto = playernameplatename
  51. end
  52. self:UNIT_HEALTH_FREQUENT("player") -- for the case that the player regend health or ressources(mana, energy etc.)to full while the nameplate wasn't shown
  53. self:UNIT_POWER_FREQUENT("player")
  54. end
  55.  
  56. function frame:NAME_PLATE_UNIT_REMOVED(unitID)
  57. if not UnitIsUnit(unitID, "player") then return end
  58. self:UnregisterEvent("UNIT_HEALTH_FREQUENT")
  59. self:UnregisterEvent("UNIT_POWER_FREQUENT")
  60. end
  61.  
  62. function frame:UNIT_POWER_FREQUENT(unit)
  63. if InterfaceOptionsNamesPanelUnitNameplatesMakeLarger:GetValue() == "1" then
  64. local powerPercentage = self.round((UnitPower(unit) / UnitPowerMax(unit) * 100), 0)
  65. if not powerNumbers then
  66. powerNumbers = CreateFrame("Frame", nil, ClassNameplateManaBarFrame) -- Setting up resource display
  67. powerNumbers:SetAllPoints(true)
  68. powerNumbers.text = powerNumbers:CreateFontString(nil, "OVERLAY")
  69. powerNumbers.text:SetAllPoints(true)
  70. powerNumbers:SetFrameStrata("HIGH")
  71. powerNumbers.text:SetFont("FONTS\\FRIZQT__.TTF", 11, "OUTLINE")
  72. powerNumbers.text:SetVertexColor(1, 1, 1)
  73. end
  74. if PersonalResourceDisplayNumbersDB.numbersDisplay == "Numeric Value" then
  75. powerNumbers.text:SetText(self.formatPlayerNumbers(UnitPower(unit)) .. "/" .. self.formatPlayerNumbers(UnitPowerMax("player"))) -- Update resource numbers
  76. elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Current" then
  77. powerNumbers.text:SetText(self.formatPlayerNumbers(UnitPower(unit))) -- Update resource numbers
  78. elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Percentage" then
  79. powerNumbers.text:SetText(powerPercentage .. "%") -- Update resource percentages
  80. elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Both" then
  81. powerNumbers.text:SetText(self.formatPlayerNumbers(UnitPower(unit)) .. "/" .. self.formatPlayerNumbers(UnitPowerMax("player")) .. " - " .. powerPercentage .. "%") -- Update resource numbers + percentage
  82. elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Hide" then
  83. powerNumbers.text:SetText()
  84. end
  85. end
  86. end
  87.  
  88. function frame:UNIT_HEALTH_FREQUENT(unit)
  89. if InterfaceOptionsNamesPanelUnitNameplatesMakeLarger:GetValue() == "1" then
  90. local healthPercentage = self.round((UnitHealth(unit) / UnitHealthMax(unit) * 100), 0)
  91. if PersonalResourceDisplayNumbersDB.numbersDisplay == "Numeric Value" then
  92. healthNumbers.text:SetText(self.formatPlayerNumbers(UnitHealth("player")) .. "/" .. self.formatPlayerNumbers(UnitHealthMax("player"))) -- Update health numbers
  93. elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Current" then
  94. healthNumbers.text:SetText(self.formatPlayerNumbers(UnitHealth("player"))) -- Update health numbers (only show current)
  95. elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Percentage" then
  96. healthNumbers.text:SetText(healthPercentage .. "%") -- Update health percentages
  97. elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Both" then
  98. healthNumbers.text:SetText(self.formatPlayerNumbers(UnitHealth("player")) .. "/" .. self.formatPlayerNumbers(UnitHealthMax("player")) .. " - " .. healthPercentage .. "%") -- Update health numbers + percentages
  99. elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Hide" then
  100. healthNumbers.text:SetText()
  101. end
  102. end
  103. end
  104.  
  105.  
  106. function frame:ADDON_LOADED(addon)
  107. if addon == "PersonalResourceDisplayNumbers" then
  108. -- Our saved variables, if they exist, have been loaded at this point.
  109. if PersonalResourceDisplayNumbersDB == nil then
  110. -- This is the first time this addon is loaded; set SVs to default values
  111. PersonalResourceDisplayNumbersDB = {
  112. numbersDisplay = "Numeric Value"
  113. }
  114. end
  115. end
  116. end
  117.  
  118.  
  119.  
  120.  
  121. -- Set up /slash commands
  122. SLASH_PRDN1 = '/resourcedisplay'
  123. function SlashCmdList.PRDN(msg, editbox)
  124. --local command, rest = msg:match("^(%S*)%s*(.-)$")
  125. -- Any leading non-whitespace is captured into command
  126. -- the rest (minus leading whitespace) is captured into rest.
  127.  
  128. if msg == "numbers" then
  129. PersonalResourceDisplayNumbersDB.numbersDisplay = "Numeric Value"
  130. print("Now displaying Personal Resource Display numbers as Numeric Value.")
  131. elseif msg == "current" then
  132. PersonalResourceDisplayNumbersDB.numbersDisplay = "Current"
  133. print("Now displaying Personal Resource Display numbers as Numeric Value (only current amount.)")
  134. elseif msg == "percentages" then
  135. PersonalResourceDisplayNumbersDB.numbersDisplay = "Percentage"
  136. print("Now displaying Personal Resource Display numbers as Percentage.")
  137. elseif msg == "both" then
  138. PersonalResourceDisplayNumbersDB.numbersDisplay = "Both"
  139. print("Now displaying Personal Resource Display numbers as Both.")
  140. elseif msg == "hide" then
  141. PersonalResourceDisplayNumbersDB.numbersDisplay = "Hide"
  142. print("Now hiding Personal Resource Display numbers.")
  143. elseif msg == "help" then
  144. print("Personal Resource Display Numbers setup:")
  145. print("\"/resourcedisplay numbers\" : Display numbers as Numeric Values.")
  146. print("\"/resourcedisplay current\" : Display numbers as Numeric Values (only current value.)")
  147. print("\"/resourcedisplay percentages\" : Display numbers as Percentages.")
  148. print("\"/resourcedisplay both\" : Display both Percentages and Numeric Values.")
  149. print("\"/resourcedisplay hide\" : Hide the number display.")
  150. else
  151. print("Invalid syntax, please see /resourcedisplay help")
  152. end
  153. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement