View Single Post
11-10-14, 06:16 AM   #1
Aftermathhqt
A Molten Giant
 
Aftermathhqt's Avatar
AddOn Author - Click to view addons
Join Date: Dec 2009
Posts: 784
Exp Bar issue update

Hey everyone i have a little problem with my exp bar code

It works fine but everytime it updates it creates a new frame

If someone can help me fix this i would be very happy!

Lua Code:
  1. local Experience = CreateFrame("Frame", nil, UIParent)
  2.  
  3. local function UpdateExp()
  4.  
  5.     local CurXP = UnitXP("player")
  6.     local XPMax = UnitXPMax("player")
  7.     local CurLvl = UnitLevel("player")
  8.     local RestXP = GetXPExhaustion()
  9.  
  10.     local ExperienceBar = CreateFrame('StatusBar', nil, UIParent)
  11.  
  12.     ExperienceBar:SetPoint('LEFT', oUF_AftermathhPlayer, -67, 52)
  13.     ExperienceBar:SetStatusBarTexture(AftermathhUI.media.texture)
  14.     ExperienceBar:SetSize(235, 18)
  15.     ExperienceBar:SetStatusBarColor(0.6, 0, 0.6)
  16.     ExperienceBar:SetBackdrop({
  17.         bgFile = AftermathhUI.media.blank,
  18.         insets = {top = -1, left = -1, bottom = -1, right = -1},
  19.     })
  20.     ExperienceBar:SetBackdropColor(unpack(AftermathhUI.media.backdropcolor))
  21.  
  22.     CreateBorderLight(ExperienceBar, AftermathhUI.media.bordersize, AftermathhUI.bordercolor, AftermathhUI.bordercolor, AftermathhUI.bordercolor, 3)
  23.  
  24.     ExperienceBar:EnableMouse()
  25.  
  26.     ExperienceBar:SetScript("OnEnter", function(self)
  27.         GameTooltip:SetOwner(self, "ANCHOR_CURSOR")
  28.         GameTooltip:AddLine("|cffffd200Experience|r")
  29.         GameTooltip:AddDoubleLine("Current EXP", CurXP, 1, 1, 1, 1, 1, 1)
  30.         GameTooltip:AddDoubleLine("Remaining EXP", XPMax - CurXP, 1, 1, 1, 1, 1, 1)
  31.        
  32.         if RestXP == nil then
  33.             GameTooltip:AddDoubleLine("Rested EXP", "0", 1, 1, 1, 1, 1, 1)
  34.         else
  35.             GameTooltip:AddDoubleLine("Rested EXP", RestXP, 1, 1, 1, 1, 1, 1)
  36.         end
  37.  
  38.         GameTooltip:Show()
  39.     end)
  40.    
  41.     ExperienceBar:SetScript("OnLeave", function()
  42.         if GameTooltip:IsShown() then
  43.         GameTooltip:Hide()
  44.         end
  45.     end)
  46.    
  47.     local Current, Max = UnitXP("player"), UnitXPMax("player")
  48.     local Rested = GetXPExhaustion()
  49.     local IsRested = GetRestState()
  50.    
  51.     ExperienceBar:SetMinMaxValues(0, Max)
  52.     ExperienceBar:SetValue(Current)
  53.  
  54.     if (IsRested == 1 and Rested) then
  55.         ExperienceBar:SetMinMaxValues(0, Max)
  56.         ExperienceBar:SetValue(Rested + Current)
  57.         ExperienceBar:SetStatusBarColor(0, 144/255, 1)
  58.     else
  59.         ExperienceBar:SetValue(0)
  60.     end
  61.  
  62.     local ExperienceFont = ExperienceBar:CreateFontString(nil, 'OVERLAY')
  63.     ExperienceFont:SetPoint('CENTER', ExperienceBar)
  64.     ExperienceFont:SetFont(AftermathhUI.media.font, 12, AftermathhUI.media.fontflag)
  65.     ExperienceFont:SetText(""..CurXP.." / "..XPMax.."")
  66.     if AftermathhUI.media.shadowoffset == true then
  67.         ExperienceFont:SetShadowOffset(1, -1)
  68.         ExperienceFont:SetShadowColor(0,0,0)
  69.     end
  70. end
  71.  
  72. Experience:RegisterEvent("PLAYER_XP_UPDATE")
  73. Experience:RegisterEvent("PLAYER_LEVEL_UP")
  74. Experience:RegisterEvent("UPDATE_EXHAUSTION")
  75. Experience:RegisterEvent("PLAYER_ENTERING_WORLD")
  76. Experience:RegisterEvent("PLAYER_UPDATE_RESTING")
  77.  
  78. Experience:SetScript("OnEvent", UpdateExp)
  Reply With Quote