-- Tribal Experience Bar
-- By: Othgar
-- Copyleft All Rights Reversed
-- Default state
TXPVisible = true;
TXPLocked = true;
-- Constants
local ThousandSeparator = ","
local TipTitle = "Tribal XP"
local _, class = UnitClass("player")
local r,g,b = RAID_CLASS_COLORS[class].r, RAID_CLASS_COLORS[class].g, RAID_CLASS_COLORS[class].b
local function FmtBigNum(n)
local left, num, right = string.match(n .. "", '^([^%d]*%d)(%d*)(.-)')
return left..(num:reverse():gsub('(%d%d%d)', '%1'.. ","):reverse())..right
end
local TribalExperienceBar = CreateFrame("StatusBar","TribalExperienceBar",UIParent)
TribalExperienceBar:SetWidth(95);
TribalExperienceBar:SetHeight(50);
TribalExperienceBar:SetPoint("CENTER", UIParent, "CENTER", 0, 0);
TribalExperienceBar:SetFrameStrata("MEDIUM");
TribalExperienceBar:SetClampedToScreen(1);
TribalExperienceBar:SetBackdrop({bgFile="Interface\\Tooltips\\UI-Tooltip-Background", edgeFile="", tile=1, tileSize=10, edgeSize=10, insets={left=2, right=2, top=2, bottom=2}});
TribalExperienceBar:SetBackdropColor(r,g,b,0)
TribalExperienceBar:SetMovable(1);
TribalExperienceBar:EnableMouse(1);
TribalExperienceBar:SetStatusBarTexture("Interface\\AddOns\\TXP\\media\\xptexture_rentaire1")
TribalExperienceBar:SetStatusBarColor(r,g,b)
TribalExperienceBar:SetAlpha(.75)
local TXPBarText = TribalExperienceBar:CreateFontString("TXPBarText","OVERLAY");
TXPBarText:SetFontObject(GameFontNormal)
TXPBarText:SetTextColor(r,g,b)
TXPBarText:SetPoint("CENTER", TribalExperienceBar, "BOTTOM", 30, 0);
TXPBarText:SetJustifyH("CENTER");
TXPBarText:SetJustifyV("CENTER");
local TribalExperienceBar1 = CreateFrame("Frame","TribalExperienceBar1",TribalExperienceBar)
TribalExperienceBar1:SetPoint("TOPLEFT", TribalExperienceBar, "TOPLEFT", -2, 1);
TribalExperienceBar1:SetPoint("BOTTOMRIGHT", TribalExperienceBar, "BOTTOMRIGHT", 2, -1);
TribalExperienceBar:RegisterEvent("PLAYER_ENTERING_WORLD");
TribalExperienceBar:RegisterEvent("VARIABLES_LOADED");
TribalExperienceBar:RegisterEvent("PLAYER_XP_UPDATE");
TribalExperienceBar:RegisterEvent("PLAYER_LOGIN");
TribalExperienceBar:RegisterEvent("PLAYER_LEVEL_UP");
--Event handling
TribalExperienceBar:SetScript("OnEvent", function(self, event, ...)
local curxp = UnitXP("player")
local levelmax = UnitXPMax("player")
local perc = string.format("%.1f%%", (100*(curxp/levelmax)))
local perbox = levelmax / 20
local mystr = string.format("%.1fb - %.1fb tnl | %s", curxp / perbox, (levelmax - curxp) / perbox, perc)
TXPBarText:SetText(mystr)
TribalExperienceBar:SetWidth(675)
TribalExperienceBar:SetHeight(150)
TribalExperienceBar:SetMinMaxValues(0, levelmax)
TribalExperienceBar:SetValue(curxp)
if TXPVisible then
TribalExperienceBar:Show()
else
TribalExperienceBar:Hide()
end
end)
-- move me
TribalExperienceBar:SetScript("OnMouseDown", function()
if not TXPLocked then
TribalExperienceBar:StartMoving()
else
TribalExperienceBar:StopMovingOrSizing()
end
end)
TribalExperienceBar:SetScript("OnMouseUp", function() TribalExperienceBar:StopMovingOrSizing() end)
-- register slash commands
SLASH_TXP1 = '/TXP';
local function slashcmdhandler(param)
if param == "hide" then
if TXPVisible then
TXPVisible=false
TribalExperienceBar:Hide()
print("Experience hidden, type /TXP show to show.")
end
elseif param=="show" then
if not TXPVisible then
TXPVisible=true
TribalExperienceBar:Show()
print("Experience displayed, type /TXP hide to hide.")
end
elseif param=="rested" then
if GetXPExhaustion() == nil then
print("You have no rested EXP.")
else
print("You have "..GetXPExhaustion().." rested EXP remaining.")
end
elseif param == "lock" then
if TXPLocked == true then
TXPLocked = false
print("TXP UNlocked")
elseif TXPLocked == false then
TXPLocked = true
print("TXP Locked")
end
else
print("Valid commands are:");
print("/TXP show (Show the experience bar.)");
print("/TXP hide (Hide the experience bar.)");
print("/TXP rested (Shows the amount of rested XP.)");
print("/TXP Lock (Locks the experience bar if it is unlocked, Unlocks it if it is locked.")
end
end
SlashCmdList["TXP"] = slashcmdhandler;
--Tooltip
local function OnEnter(self)
GameTooltip:Show()
end
local function OnLeave(self)
GameTooltip:Hide()
end
--hide @ 85
if UnitLevel("player") >= 85 then
TribalExperienceBar:Hide() print("Experience bar hidden, type /TXP show to show.")
TXPVisible = false
end