rendered paste bodyidExperienceDisplay = AceLibrary('AceAddon-2.0'):new('AceEvent-2.0')local round = function(num) return math.floor(num+.5)endfunction idExperienceDisplay:OnEnable() local font, _, _ = GameFontHighlightSmall:GetFont() self.Frame = CreateFrame('Frame', nil, UIParent) self.Frame:SetHeight(20) self.Frame:SetWidth(300) self.Frame:SetBackdrop({ bgFile = 'Interface\\Tooltips\\UI-Tooltip-Background', edgeFile = '', tile = true, tileSize = 16, edgeSize = 0, insets = { left = 0, right = 0, top = 0, bottom = 0 } }) self.Frame:SetBackdropColor(0,0,0,0.6) self.Frame:ClearAllPoints() self.Frame:SetPoint('CENTER', UIParent, 'CENTER') self.Frame.Text = self.Frame:CreateFontString(nil,'OVERLAY') self.Frame.Text:SetFontObject(GameFontNormal) self.Frame.Text:SetFont(font, 15) self.Frame.Text:SetHeight(20) self.Frame.Text:SetWidth(300) self.Frame.Text:SetTextColor(1, 1, 1) self.Frame.Text:SetPoint('CENTER', self.Frame, 'CENTER') self.Frame.Text:SetJustifyH('CENTER') self:RegisterEvent('PLAYER_XP_UPDATE', 'OnExperienceGained') self:RegisterEvent('UPDATE_EXHAUSTION', 'OnExperienceGained') self:OnExperienceGained() -- initialize itendfunction idExperienceDisplay:OnDisable() self.Frame = nil self.old = nilendfunction idExperienceDisplay:OnExperienceGained() DEFAULT_CHAT_FRAME:AddMessage('XP GAINED') local xp = UnitXP('player') local xpmax = UnitXPMax('player') local xpneeded = xpmax - xp + (GetXPExhaustion() or 0)/2 local xppercent = round(xpneeded/xpmax*100) if not self.old then self.old = xpneeded end local killstolevel = round(xpmax/self.old) self.Frame.Text:SetText(string.format('%s (%s%%) ~%s', xpneeded, xppercent, killstolevel)) self.old = self.old - xpneededend