Broker: XPBar

XP Bars with Ticks

Broker: XPBar - Sparkly XP Bars that can be attached anywhere.

Displays Infos about XP and watched Faction and adds bars for XP and/or reputation to your Broker bar addon. Select custom colors for bars or use predefined colors based on standing for the reputation bar.

You can attach the bars to (almost) any frame by click selecting the desired anchor frame with the mouse (similar to Xparky). You can attach the bars to any side of the frame on outside as well as on the inside. Adjust anchor position by setting X- and Y-Offset.

Update for Version 2

  • New text system for Broker label and bars.
    • Provides wide selection of predefined texts for display.
    • Custom texts can be freely configured via script API.
  • XP and reputation data for completed and incomplete quests.
    • Shown in tooltip, in label texts and as bar sections.
    • Notifications when completed quests allow to level up when handed in (or to reach the next standing with the watched faction).
  • Bar length is now adjustable.
  • Bar texts can now be shown side by side. That allows for bigger font sizes especially when XP and reputation bar are shown both.
  • Fixed darkened color problem with default addon texture.
  • Added option 'No Texture' to display bars just in opaque colors.


  • Due to the new text system the old text options have been dumped. Reconfiguring texts for Broker label and bars is required.
  • Larger memory footprint mainly due to use of a library containing quest reputation reward data since Blizzard broke or scrapped API functions to retrieve that data from quests in log.


  • Short faction names: It is now possible to use custom set short names for factions in label and bar texts. Set up short faction names in Options in section "Factions". To apply short names in the label and bar texts adjust the custom text in the "Custom Texts" section. (Copy your preferred template if required.) The function call GetValue("Faction") now accepts an additional parameter maxLength. When the default faction name is longer than the specified maximum length the custom set short name is used instead. So GetValue("Faction", 16) will use the short name for faction names longer then 16 characters. If no short name has been set up the default faction name will be used. Set the adjusted custom text as your bar and/or label text.


  • Attaches bars for XP and/or reputation to (almost) any globally named frame.
  • Configure layout of bars: Colors, dimensions, texture.
  • Tooltip displays extended information about XP and reputation of currently watched faction.
  • Provides data about XP and reputation for completed and incomplete quests in the quest log.
  • Notifications when completed quests allow to level up when handed in (or to reach the next standing with the watched faction).
  • Customizable texts for bar and Broker label.
  • Select texts from predefined selection or define your own texts via script API.
  • Provided information includes: Time to Level, Kills to Level, XP/Rep/Kills per Hour,
  • Ace3 profile support for settings.

Usage Hints

  • Activating Broker: XPBar in your Broker display will show up the label text in that display only. To display the actual bars you will need to attach them to a frame on your screen first. To do this go to Options->Frame and click the button "Select by Mouse". Select the frame to attach the bars to by left-clicking on it and the bars should show up.
  • The mouse cursor gets highlighted and shows the frame name as tooltip for each frame it hovers over. Left-click on desired frame to attach the bars to. Right-click will disable the selection cursor. Frame names may also be entered manually in the edit box. Use the option "Attach to" to select the side (Top or Bottom) of the frame where you want the bars. Fine adjust the position by using the Offset settings if needed.
  • If you are trying to attach to a Broker display make sure you hit an empty spot on the display. If you click on another plugin on the display the bars will attach to the frame of this Broker plugin only.
  • If you use Docking Station and want to attach to it's panels you need to make sure you have the Global option (Panels -> General) enabled for the panel you want to connect to.
  • The "Jostle" option displaces the blizzard frames by the width of the bars. This should only be used with frames on the upper and lower edge of the screen and not with free floating frames!
  • Consider that the Reputation bar is hidden if no faction is watched.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of Dashsmash Dashsmash Dec 02, 2013 at 21:21 UTC - 0 likes

    Would it be possible to add some kind of yellow texture for the xp bar to show xp to be gained from handing in quests? Like, this is currently the only remaining add-on that stops me from installing bartender4 :/

  • Avatar of tordenflesk tordenflesk Jun 04, 2013 at 20:16 UTC - 0 likes
    1x Broker_XPBar-1.7 r039\Options.lua:198: attempt to call method "SetSetting" (a nil value)
    Broker_XPBar-1.7 r039\Options.lua:198: in function <Broker_XPBar\Options.lua:179>

    when selecting frame with the mouse.

  • Avatar of laric laric Sep 09, 2012 at 05:02 UTC - 0 likes

    2 fixes for you when you have time to add them in.
    I think they should be correct to fix up 2 different problems.

    In History.lua this is thechange to fix it.

    function History:GetKillsToLevel()
    	if self.xpPerKill == 0 then 
    		return "~" 
    	local rested = GetXPExhaustion() or 0
    	local xptogo = UnitXPMax("player") - UnitXP("player")
    	local bonus = 0
    	if IsInRaid() == true then
    		bonus = self.raidPenaltyPerKill
    	elseif GetNumGroupMembers() > 0 then
    		bonus = self.grpXpPerKill
    	-- NOTE: since there is no formula calculating the group bonus available 
    	-- we depend on the data we extracted from the combat log
    	-- so group bonus is incorrect if the number of players in party/raid changes
    	-- but it will adjust faily quick (and we cant take everything into account)
    	if rested >= xptogo then
    		return ceil(xptogo/(self.xpPerKill * 2 + bonus))
    		return ceil((rested/(self.xpPerKill * 2 + bonus)) + ((xptogo - rested)/(self.xpPerKill + bonus)))

    In BrokerXPBar.lua

    function NS:Colorize(color, text) 
    	if not text then
    		text = "0"
    	text = tostring(text)
    	if NS.HexColors[color] then
    		text = text:gsub("(.*)(|r)", "%1%2|cff" .. NS.HexColors[color])
    		text = "|cff" .. NS.HexColors[color] .. tostring(text) .. "|r"
    	return text
    Last edited Sep 09, 2012 by laric
  • Avatar of burny_dd burny_dd Sep 07, 2012 at 13:44 UTC - 0 likes

    Yes it is a taint issue and easy enough to fix. But I am currently on vacation and can't provide the fix until after I am back.

    The first rule of Tautology Club is the first rule of Tautology Club.

  • Avatar of laric laric Sep 05, 2012 at 16:42 UTC - 0 likes

    XPBar blocks the possiblity to place glyphs using the glyph ui. Needs to be disabled to be able to place glyphs. Taint??

  • Avatar of telius telius Jul 29, 2012 at 12:39 UTC - 0 likes

    Broker_XPBar\Broker_XPBar-1.5 r025.lua:1054: attempt to compare number with nil Broker_XPBar\Broker_XPBar-1.5 r025.lua:1054: in function "IsBarRequired" Broker_XPBar-1.5 r025\Options.lua:833: in function "?" Broker_XPBar-1.5 r025\Options.lua:824: in function "UpdateSetting" Broker_XPBar-1.5 r025\Options.lua:907: in function "SetSetting" Broker_XPBar-1.5 r025\Options.lua:911: in function "ToggleSetting" Broker_XPBar-1.5 r025\Options.lua:704: in function <Broker_XPBar\Options.lua:703> (tail call): ? <in C code> <string>:"safecall Dispatcher[2]":9: in function <string>:"safecall Dispatcher[2]":5 (tail call): ? AceConfigDialog-3.0\AceConfigDialog-3.0-57.lua:799: in function <AceConfigDialog-3.0\AceConfigDialog-3.0.lua:614> (tail call): ? <in C code> <string>:"safecall Dispatcher[3]":9: in function <string>:"safecall Dispatcher[3]":5 (tail call): ? Ace3-Release-r1041\AceGUI-3.0\AceGUI-3.0-33.lua:314: in function "Fire" Ace3-Release-r1041\20AceGUI-3.0-33\widgets\AceGUIWidget-CheckBox.lua:68: in function <Ace3\AceGUI-3.0\widgets\AceGUIWidget-CheckBox.lua:57>

    Locals: nil

    this error keeps recurring on load and switching the 'show xp bar' option on, a missing var?

  • Avatar of burny_dd burny_dd Jun 25, 2012 at 10:34 UTC - 0 likes

    @Niselma30: Go

    Simply go to Options->Frame click the 'Select by Mouse' button and with the blue framed cursor click on the desired bazooka bar. After that the input field should display the name of the selected frame like 'BazookaBar_1'. Select the side the xp bars should appear on and basically you are done.

  • Avatar of Niselma30 Niselma30 Jun 18, 2012 at 14:02 UTC - 0 likes

    i use bazooka bar. is there any way i make it look like XPBar attached to ChocolateBar in the screenshot?

  • Avatar of KAPMA KAPMA Dec 05, 2011 at 20:56 UTC - 0 likes

    Does not work with Bar Tender :( Thurs oya just did not ...

    9x Broker_XPBar\Broker_XPBar-1.2 r019.lua:1839: attempt to index field "?" (a nil value) Broker_XPBar\Broker_XPBar-1.2 r019.lua:1839: in function "UpdateReputationColor" Broker_XPBar\Broker_XPBar-1.2 r019.lua:1283: in function "?" libs\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:147: in function <libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147> <string>:"safecall Dispatcher[2]":4: in function <string>:"safecall Dispatcher[2]":4 <in C code> <string>:"safecall Dispatcher[2]":13: in function "?" libs\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:92: in function "Fire" AdiBags-v1.4.6-4-g04c11db\libs\AceDB-3.0\AceDB-3.0-22.lua:592: in function "ResetProfile" AdiBags-v1.4.6-4-g04c11db\libs\AceDBOptions-3.0\AceDBOptions-3.0-12.lua:230: in function <AdiBags\libs\AceDBOptions-3.0\AceDBOptions-3.0.lua:229> (tail call): ? <in C code> <string>:"safecall Dispatcher[4]":9: in function <string>:"safecall Dispatcher[4]":5 (tail call): ? AceConfigDialog-3.0\AceConfigDialog-3.0-54.lua:793: in function <AceConfigDialog-3.0\AceConfigDialog-3.0.lua:613> (tail call): ? <in C code> <string>:"safecall Dispatcher[4]":9: in function <string>:"safecall Dispatcher[4]":5 (tail call): ? AdiBags-v1.4.6-4-g04c11db\libs\AceGUI-3.0\AceGUI-3.0-33.lua:314: in function "Fire" libs\6AceGUI-3.0-33\widgets\AceGUIWidget-Button.lua:22: in function <libs\AceGUI-3.0\widgets\AceGUIWidget-Button.lua:19>

    Locals: nil

  • Avatar of bladekaga bladekaga Oct 18, 2010 at 12:42 UTC - 0 likes

    1x Broker_XPBar-1.1 r013\Broker_XPBar.lua:1728: invalid capture index Broker_XPBar-1.1 r013\Broker_XPBar.lua:1728: in function `?' CallbackHandler-1.0-6 (Ace3):147: in function <...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:147> <string>:"safecall Dispatcher[16]":4: in function <[string "safecall Dispatcher[16]"]:4> <in C code>: ? <string>:"safecall Dispatcher[16]":13: in function `?' CallbackHandler-1.0-6 (Ace3):92: in function `Fire' AceEvent-3.0-3 (Ace3):120: in function <Ace3\AceEvent-3.0\AceEvent-3.0.lua:119>




Date created
Aug 03, 2010
Last update
Jul 24, 2016
Development stage
  • deDE
  • enUS
  • koKR
  • ruRU
All Rights Reserved
Curse link
Broker: XPBar
Recent files