View Single Post
11-25-14, 05:10 PM   #1
saxitoxin
A Theradrim Guardian
 
saxitoxin's Avatar
AddOn Author - Click to view addons
Join Date: May 2009
Posts: 60
[LUA] What have I done wrong

I have made a xp/rep bar, but I have made a mistake that I can't seem to find out what as my coding skills is still very basic

What is happening is that when I alt+z to hide everything my bar is still showing. same goes for when I use my afk camera addon

if someone could help me out I would be very happy

Lua Code:
  1. ------------------------------------------------------
  2. -- VARIABLES
  3. ------------------------------------------------------
  4. local color = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[(select(2, UnitClass("player")))]
  5. local width = 500
  6. local height = 6
  7. local point = "BOTTOM"
  8. local posx = 0
  9. local posy = 16
  10. local strata = "MEDIUM"
  11. local statusbartex = "Interface\\AddOns\\AdvancementBar\\statusbar.tga"
  12. local circle = "Interface\\AddOns\\AdvancementBar\\orb.tga"
  13. local gloss = "Interface\\AddOns\\AdvancementBar\\gloss.tga"
  14.  
  15. --number format func
  16. local SVal = function(val)
  17.     if val > 1E10 then
  18.         return (floor(val/1E9)).."b"
  19.     elseif val > 1E9 then
  20.         return (floor((val/1E9)*10)/10).."b"
  21.     elseif val > 1E7 then
  22.         return (floor(val/1E6)).."m"
  23.     elseif val > 1E6 then
  24.         return (floor((val/1E6)*10)/10).."m"
  25.     elseif val > 1E5 then
  26.         return (floor(val/1E3)).."k"
  27.     elseif val >= 1E3 then
  28.         return (floor(val/1E3)) .. (" %03d"):format(val % 1E3)
  29.     else
  30.         return val
  31.     end
  32. end
  33.  
  34. ------------------------------------------------------
  35. -- UPDATING THE BAR
  36. ------------------------------------------------------
  37.  
  38. local updateOrb = function(statusbar,value)
  39.     local min, max = statusbar:GetMinMaxValues()
  40.     local per = 0
  41.     if max > 0 then per = value/max*100 end
  42.     local offset = statusbar:GetWidth()-(per*statusbar:GetWidth()/100)
  43.     orba:SetPoint("CENTER",statusbar,"RIGHT",-offset,0)
  44. local orbr, orbg, orbb = statusbar:GetStatusBarColor()
  45.     orbt:SetVertexColor(orbr,orbg,orbb)
  46. end
  47.  
  48. local function rbar_ReSetValue(rxp, xp, mxp)
  49.     if rxp then
  50.         if rxp+xp >= mxp then
  51.             restbar:SetValue(mxp)
  52.         else
  53.             restbar:SetValue(rxp+xp)
  54.         end
  55.     else
  56.         restbar:SetValue(0)
  57.     end
  58. end
  59.  
  60. --showxp
  61. local function bf_ShowXP(rxp, xp, mxp)
  62.     bgt:SetVertexColor(color.r,color.g,color.b, 0.2)
  63.     statusbar:SetStatusBarColor(color.r,color.g,color.b, 0.85)
  64.     statusbar:SetMinMaxValues(0,mxp)
  65.     statusbar:SetValue(xp)
  66.     text:SetText(format(SVal(xp)).." / "..format(SVal(mxp)).." / "..floor((xp/mxp)*1000)/10 .." %")
  67.     restbar:SetMinMaxValues(0,mxp)
  68.     rbar_ReSetValue(rxp, xp, mxp)
  69.     end
  70.  
  71. --showrep
  72. local function bf_ShowRep()
  73.     name, standing, minrep, maxrep, value = GetWatchedFactionInfo()
  74.     if name then
  75.         bgt:SetVertexColor(FACTION_BAR_COLORS[standing].r, FACTION_BAR_COLORS[standing].g, FACTION_BAR_COLORS[standing].b, 0.2)
  76.         statusbar:SetStatusBarColor(FACTION_BAR_COLORS[standing].r, FACTION_BAR_COLORS[standing].g, FACTION_BAR_COLORS[standing].b, 0.85)
  77.         statusbar:SetMinMaxValues(0,maxrep)
  78.         statusbar:SetValue(value)
  79.         text:SetText("")
  80.         restbar:SetValue(0)
  81.         local orbr, orbg, orbb = statusbar:GetStatusBarColor()
  82.         orbt:SetVertexColor(orbr,orbg,orbb)
  83.     else
  84.         mxp = UnitXPMax("player")
  85.         xp = UnitXP("player")
  86.         rxp = GetXPExhaustion()
  87.         bf_ShowXP(rxp, xp, mxp)
  88.     end
  89. end
  90.  
  91. ------------------------------------------------------
  92. -- CREATE STATUSBAR
  93. ------------------------------------------------------
  94.  
  95. local bg = CreateFrame("Frame", UIParent)
  96. bg:SetSize(width, height)
  97. bg:SetPoint(point, posx, posy)
  98. local bgtexture = bg:CreateTexture(nil,"OVERLAY",nil,0)
  99. bgtexture:SetAllPoints()
  100. bgtexture:SetTexture(statusbartex)
  101. bgtexture:SetVertexColor(color.r,color.g,color.b,0.2)
  102. bgt = bgtexture
  103.  
  104. local sbar = CreateFrame("StatusBar", nil, bg)
  105. sbar:SetFrameLevel(2)
  106. sbar:SetFrameStrata(strata)
  107. sbar:SetSize(bg:GetSize())
  108. sbar:SetStatusBarTexture(statusbartex)
  109. sbar:SetStatusBarColor(color.r,color.g,color.b,0.8)
  110. sbar:SetPoint("CENTER")
  111. sbar:SetMinMaxValues(0,100)
  112. sbar:SetValue(0)
  113. sbar:SetScript("OnValueChanged", updateOrb)
  114. statusbar = sbar
  115.  
  116. local rbar = CreateFrame("StatusBar", nil, sbar)
  117. rbar:SetFrameLevel(1)
  118. rbar:SetFrameStrata(strata)
  119. rbar:SetSize(bg:GetSize())
  120. rbar:SetStatusBarTexture(statusbartex)
  121. rbar:SetStatusBarColor(0.6,0.6,0.6,0.6)
  122. rbar:SetPoint("CENTER")
  123. rbar:SetMinMaxValues(0,100)
  124. rbar:SetValue(0)
  125. restbar = rbar
  126.  
  127. local orb = CreateFrame("Frame", nil, sbar)
  128. orb:SetFrameLevel(3)
  129. orb:SetSize(height*1.5, height*1.5)
  130. local orbtexture = orb:CreateTexture(nil,"OVERLAY",nil,0)
  131. local orbr, orbg, orbb = sbar:GetStatusBarColor()
  132. orbtexture:SetVertexColor(orbr,orbg,orbb)
  133. orbtexture:SetTexture(circle)
  134. orbtexture:SetAllPoints()
  135.  
  136. orbgloss = orb:CreateTexture(nil,"OVERLAY",nil,7)
  137. orbgloss:SetTexture(gloss)
  138. orbgloss:SetAllPoints()
  139.  
  140. orbt = orbtexture
  141. orba = orb
  142. orb:EnableMouse(true)
  143.  
  144. orb:RegisterEvent("PLAYER_XP_UPDATE")
  145. orb:RegisterEvent("PLAYER_LEVEL_UP")
  146. orb:RegisterEvent("PLAYER_ENTERING_WORLD")
  147. orb:RegisterEvent("UPDATE_FACTION")
  148. orb:RegisterEvent("MODIFIER_STATE_CHANGED")
  149.  
  150. textframe = sbar:CreateFontString(nil, "OVERLAY")
  151. textframe:SetFont(STANDARD_TEXT_FONT, 7, "THINOUTLINE")
  152. textframe:SetPoint("CENTER", 0, 0)
  153. textframe:SetTextColor(color.r,color.g,color.b)
  154. textframe:SetText("XP BAR")
  155. text = textframe
  156.  
  157.  
  158. orb:SetScript("OnEvent", function(this, event, arg1, arg2, arg3, arg4, ...)
  159.     mxp = UnitXPMax("player")
  160.     xp = UnitXP("player")
  161.     rxp = GetXPExhaustion()
  162.    
  163.     if event == "PLAYER_ENTERING_WORLD" then
  164.         if UnitLevel("player") == MAX_PLAYER_LEVEL then
  165.             bf_ShowRep()
  166.         else
  167.             bf_ShowXP(rxp, xp, mxp)
  168.         end
  169.     elseif event == "PLAYER_XP_UPDATE" and arg1 == "player" then
  170.         statusbar:SetValue(xp)
  171.         rbar_ReSetValue(rxp, xp, mxp)
  172.     elseif event == "PLAYER_LEVEL_UP" then
  173.         if UnitLevel("player") == MAX_PLAYER_LEVEL then
  174.             bf_ShowRep()
  175.         else
  176.             bf_ShowXP(rxp, xp, mxp)
  177.         end
  178.     elseif event == "MODIFIER_STATE_CHANGED" then
  179.         if arg1 == "LCTRL" or arg1 == "RCTRL" then
  180.             if arg2 == 1 then
  181.                 bf_ShowRep()
  182.             elseif arg2 == 0 and UnitLevel("player") ~= MAX_PLAYER_LEVEL then
  183.                 bf_ShowXP(rxp, xp, mxp)
  184.             end
  185.         end
  186.     elseif event == "UPDATE_FACTION" then
  187.         if UnitLevel("player") == MAX_PLAYER_LEVEL then
  188.             bf_ShowRep()
  189.         end
  190.     end
  191. end)
  192.  
  193. orb:SetScript("OnEnter", function()
  194.  
  195. if UnitAffectingCombat('player') then
  196. else
  197.  
  198.     local mxp = UnitXPMax("player")
  199.     local xp = UnitXP("player")
  200.     local nxp = mxp - xp
  201.     local rxp = GetXPExhaustion()
  202.     local name, standing, minrep, maxrep, value = GetWatchedFactionInfo()
  203.    
  204.     GameTooltip:SetOwner(UIParent, "ANCHOR_CURSOR")
  205.     if UnitLevel("player") ~= MAX_PLAYER_LEVEL then
  206.         GameTooltip:AddLine("exp Bar")
  207.         GameTooltip:AddDoubleLine(COMBAT_XP_GAIN, format(SVal(xp)).."|cffffd100/|r"..format(SVal(mxp)).." |cffffd100/|r "..floor((xp/mxp)*1000)/10 .."%",NORMAL_FONT_COLOR.r,NORMAL_FONT_COLOR.g,NORMAL_FONT_COLOR.b,1,1,1)
  208.         GameTooltip:AddDoubleLine(NEED, format(SVal(nxp)).." |cffffd100/|r "..floor((nxp/mxp)*1000)/10 .."%",NORMAL_FONT_COLOR.r,NORMAL_FONT_COLOR.g,NORMAL_FONT_COLOR.b,1,1,1)
  209.         if rxp then
  210.             GameTooltip:AddDoubleLine(TUTORIAL_TITLE26, format(SVal(rxp)) .." |cffffd100/|r ".. floor((rxp/mxp)*1000)/10 .."%", NORMAL_FONT_COLOR.r,NORMAL_FONT_COLOR.g,NORMAL_FONT_COLOR.b,1,1,1)
  211.         end
  212.         if name then
  213.             GameTooltip:AddLine(" ")
  214.         end
  215.     else
  216.         GameTooltip:AddLine("rep Bar")
  217.     end
  218.     if name then
  219.         GameTooltip:AddDoubleLine(FACTION, name, NORMAL_FONT_COLOR.r,NORMAL_FONT_COLOR.g,NORMAL_FONT_COLOR.b,1,1,1)
  220.         GameTooltip:AddDoubleLine(STANDING, getglobal("FACTION_STANDING_LABEL"..standing), NORMAL_FONT_COLOR.r,NORMAL_FONT_COLOR.g,NORMAL_FONT_COLOR.b,FACTION_BAR_COLORS[standing].r, FACTION_BAR_COLORS[standing].g, FACTION_BAR_COLORS[standing].b)
  221.         GameTooltip:AddDoubleLine(REPUTATION, value-minrep .."|cffffd100/|r"..maxrep-minrep.." |cffffd100/|r "..floor((value-minrep)/(maxrep-minrep)*1000)/10 .."%", NORMAL_FONT_COLOR.r,NORMAL_FONT_COLOR.g,NORMAL_FONT_COLOR.b,1,1,1)
  222.         nrep = maxrep - value
  223.         GameTooltip:AddDoubleLine(NEED, format(SVal(nrep)).." |cffffd100/|r "..floor((nrep/maxrep)*1000)/10 .."%",NORMAL_FONT_COLOR.r,NORMAL_FONT_COLOR.g,NORMAL_FONT_COLOR.b,1,1,1)
  224.     end
  225.     GameTooltip:Show()
  226. end
  227. end)
  228.  
  229. orb:SetScript("OnLeave", function()
  230.     GameTooltip:Hide()
  231. end)
  Reply With Quote