Get an Epic Experience with Premium

Broker: XPBar

Quests & Leveling Login to Add Favorites
  • World of Warcraft
  • 1,789 Monthly Downloads
  • Supports: 6.2.3
  • 180,627 Total Downloads
  • Updated 01/10/2016
  • Created 08/03/2010
  • 187 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: All Rights Reserved
  • Newest File: Broker: XPBar v2.0 r053

About Broker: XPBar

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.

Update Version 2.0 r053:

  • added support for short faction names (see Options/Factions)
  • updated korean translations (thanks to Elnarfim)
  • jump to addon options on very first open options also

Update Version 2.0 r052:

  • fixed incorrect identifiers in ScriptEnv functions

Update Version 2.0 r051:

  • fixed incorrect notification that could happen after quest hand in
  • improved updating of completed/incomplete quest xp/rep to avoid jumpy bar update
  • fixed mock values for completed/incomplete quest xp

Update Version 2.0 r050:

  • fixed typo that broke GetValue(id) for ids QuestCompleteXP/Rep in text scripts

Update Version 2.0 r049:

  • fixed typo that caused notifications to fail
  • fixed notifications when switching between factions

Update Version 2.0 r048:

  • new text system for bars and Broker labels
  • support for completed and incomplete quest XP and reputation (for tooltip, texts and bars)
  • bar length adjustable
  • side by side option for displaying texts on bars
  • fixed darkened color problem of default texture setting
  • new option 'No Texture' to display bars in opaque colors

Update Version 1.7 r047:

  • updated libs
  • .toc bump to 60200

Update Version 1.7 r046:

  • fixed bug that caused first rep gain to be lost
  • updated libs
  • .toc bump to 60000

Update Version 1.7 r045:

  • corrected initialization of xp history, which fixes regular problem with calculated xp related data
  • bumped toc to 50400

Update Version 1.7 r044:

  • fixed error when sending reputation to active textbox

Update Version 1.7 r043:

  • fixed problem with tracked faction set via Blizzard reputation pane

Update Version 1.7 r042:

  • changed Bar, History and ReputationHistory tables to AceAddon modules
  • new module Factions acting as facade to ugly blizzard faction api
  • fixed bug with folded faction headers (not losing tracked faction anymore)
  • fixed problem with auto-tracking of guild
  • simplified bar handling
  • bar textures now show up as one continuous texture extending to the whole bar width (instead of one texture per section e.g. xp/rested/none)
  • fixed font and font size handling for bar label

Version 1.7 r041:

  • fixed broken mouse selection for frame attachment of bars

Version 1.7 r040:

  • updated korean localization (thanks next96)
  • minor adjustments

Update Version 1.7 r039:

  • modularized addon
  • some code cleanup
  • moved some generic functionality to namespace functions
  • upgraded .toc to 50300


First Previous Page 3 of 6 Next Last
  • #64

    Rested experience is listed in the tooltip already. I see how I could fit it in for the label and the bar text.

  • #67

    In Options in "Bar Properties" you have to activate "Show XP Bar" and "Show Reputation Bar" in order to see the data for XP or Rep in the Tooltip. If you are interested in the tooltip only but dont care about the bar just leave the option "Frame to attach to" (option section "Frame") empty.

  • #66

    Hmm, really need to figure out how to get the tooltip then.
    Somehow it's not showing for me. Only shows the Click, Shift-Click and Right-Click info lines.


  • #57

    The estimated time to level is  inaccurate.The correct amount of XP needed to level is displayed. The calculation is correct for the displayed XP per hour, so the XP per hour amount must be wrong. There is no way I am going to make that many kills in that short amount of time.

    Last edited by chaud on 9/29/2012 8:04:38 PM
  • #68

    Okay, I finally tackled it. There is a mixup in the calculation between seconds and minutes. I will put out an update later this week.

  • #65

    Firstly, thanks for pointing out the problem. I have examined the code found 2 errors: a miscalculation which caused an underestimated TTL when rested experience has run out and a problem with handling the historic data which wasn't properly reset after one of the past updates since the timeframe was set in seconds instead of minutes.

    The second fix should take care of the unrealisticly high values for XP per hour and kills per hour.

    The problem is this doesn't seem to address the problem you are having. For the value of XP/hour shown in the screenshot the TTL should be about 20 minutes not 11 still I couldn't make out a cause for this. Since the last changes in r034 affect the TTL calculations too please check if that problem persist and repost on the forum. Please include the option values for 'Time Frame' and 'Weight' in section 'Leveling' to make the diagnosis simpler. Thank you.

    Other than that it seems to me you misinterpret the tooltip in one respect: TTL and 'Kills to level' are unrelated values. Either you continue playing in the crurrent fashion and you will level after 11 minutes. Or you continue and just kill monsters which will bring you to next level after 1257 kills. It does not mean you are supposed to kill 1257 monsters in 11 minutes.

    Best regards

  • #53

    I get this error every time i mouse over the bar to see the tooltip, only after geting xp from a kill.
    hope it helps! i love this addon :D

    Message: Interface\AddOns\Broker_XPBar\History.lua:183: attempt to call upvalue 'GetNumRaidMembers' (a nil value)
    Time: 09/11/12 01:28:11
    Count: 1
    Stack: Interface\AddOns\Broker_XPBar\History.lua:183: in function `GetKillsToLevel'
    Interface\AddOns\Broker_XPBar\Tooltip.lua:193: in function `DrawTooltip'
    Interface\AddOns\Broker_XPBar\Tooltip.lua:46: in function `CreateTooltip'
    Interface\AddOns\Broker_XPBar\Broker_XPBar.lua:75: in function `OnEnter'
    Interface\AddOns\ChocolateBar\Chocolate.lua:212: in function <Interface\AddOns\ChocolateBar\Chocolate.lua:182>

    Locals: self = <table> {
    ProcessXPHistory = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:233
    historyXP = <table> {
    totalXP = 111432
    weight = 0.8
    startTime = 1347321365
    lvlMaxXP = 3469000
    taintedXP = false
    Initialize = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:66
    GetTimeFrame = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:389
    raidPenaltyPerKill = 0
    activityKills = 1
    historyMobs = <table> {
    SetTimeFrame = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:393
    SetWeight = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:373
    IsTainted = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:408
    taintedMobs = false
    UpdateXP = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:316
    GetWriteBucket = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:90
    totalKills = 1
    Process = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:228
    GetXPPerHour = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:214
    AddKill = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:344
    xpPerKill = 4536
    activeBucket = 22455388
    GetKillsPerHour = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:200
    doneLvlXP = 0
    timeframe = 1800
    activityXP = 111432
    startXP = 81451
    GetWeight = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:369
    ProcessMobHistory = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:259
    GetKillsToLevel = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:173
    grpXpPerKill = 0
    GetTimeToLevel = <function> defined @Interface\AddOns\Broker_XPBar\History.lua:106
    rested = 165386
    xptogo = 3276117
    bonus = 0
    (*temporary) = nil
    (*temporary) = "attempt to call upvalue 'GetNumRaidMembers' (a nil value)"
    GetXPExhaustion = <function> defined =[C]:-1
    UnitXPMax = <function> defined =[C]:-1
    UnitXP = <function> defined =[C]:-1
    GetNumRaidMembers = nil
    GetNumPartyMembers = nil
    ceil = <function> defined =[C]:-1

  • #50

    r030 still contains calls to GetNum*Members() in History.lua, and the function NS:Colorize() in Broker_XPBar.lua still tests for a nil value and then attempts to convert said nil value to a string.

  • #51

    I think the problem with the NS:Colorize()is not that its trying to convert a null it's that it isn't converting 'text' when 'text' is an integer. It then attempts to use as 'text' as a string and fails. I removed the not check and allowed it to call tostring all the time and the addon now works for me.

  • #52

    I changed it to:

    if not text then return "" end
    text = tostring(text)


    Based on the assumption that if it's being passed a nil value in text, then there's nothing to colorize in the first place.


    Last edited by X3J11 on 9/10/2012 8:57:51 AM
  • #49

    The latest version available on WoWInterface is v1.6 r030 but the latest version here is v1.6 r029, yet it shows here as being updated 97 minutes ago. Has Curse somehow lost the latest version?

    EDIT: Guess Curse were just slow in approving the latest version.

    Last edited by Grizzly_UK on 9/8/2012 8:28:45 PM
  • #48

    I'm getting 3 errors with the current build (Broker: XPBar v1.6 r029) after killing a mob and then mousing over the broker toolbar display.

    1. History.lau, lines 181 and 183 - GetNumRaidMemebrs() and GetNumPartyMembers() are no longer present in 5.0.4.
    2. Broker_XPBar.lau, line 256 error attempt to index local 'text' (a number value)

    To fix these I changed:

    1. Replaced GetNumRaidMembers() > 0 and GetNumPartyMembers() > 0 with IsInRaid() and IsInParty()
    2. Removed the if not text then (and the corresponding end) so that text = tosting(text) was always called so that number values would be converted to strings.
    Seems to have fixed those problems for me in case it helps anyone else Smile
    Last edited by XanthaMan on 9/7/2012 8:14:03 AM
  • #47

    Upon killing a mob and receiving XP I get the following bug.

    2x Broker_XPBar\Broker_XPBar-1.6 r028.lua:921: attempt to call upvalue "GetNumRaidMembers" (a nil value) Broker_XPBar\Broker_XPBar-1.6 r028.lua:921: in function "?" Ace3-Release-r1061\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:147: in function <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 "?" Ace3-Release-r1061\CallbackHandler-1.0\CallbackHandler-1.0-6.lua:92: in function "Fire" Ace3-Release-r1061\AceEvent-3.0\AceEvent-3.0-3.lua:120: in function <Ace3\AceEvent-3.0\AceEvent-3.0.lua:119>

    Locals: nil

  • #45

    after latest update Im getting:

    4x Broker_XPBar\Broker_XPBar-1.5 r025.lua:435: attempt to compare number with nil
    Broker_XPBar\Broker_XPBar-1.5 r025.lua:435: in function <Broker_XPBar\Broker_XPBar.lua:415>
    (tail call): ?
    <in C code>
    <string>:"safecall Dispatcher[1]":9: in function <string>:"safecall Dispatcher[1]":5
    (tail call): ?
    Skillet-2.21\Libs\AceAddon-3.0\AceAddon-3.0-11.lua:543: in function "EnableAddon"
    Skillet-2.21\Libs\AceAddon-3.0\AceAddon-3.0-11.lua:636: in function <Skillet\Libs\AceAddon-3.0\AceAddon-3.0.lua:621>
    <in C code>
    src\main\AuctionHouse\AuctionHouse.lua:305: in function "EnsureAuctionHouseUI"
    AuctionMaster-4.9.0\src\main\Core\Vendor.lua:102: in function <AuctionMaster\src\main\Core\Vendor.lua:99>
    (tail call): ?
    <in C code>
    Skillet-2.21\Libs\AceAddon-3.0\AceAddon-3.0-11.lua:543: in function "EnableAddon"
    Skillet-2.21\Libs\AceAddon-3.0\AceAddon-3.0-11.lua:636: in function <Skillet\Libs\AceAddon-3.0\AceAddon-3.0.lua:621>
    <in C code>
    FrameXML\UIParent.lua:274: in function "UIParentLoadAddOn"
    FrameXML\UIParent.lua:297: in function "CombatLog_LoadUI"
    FrameXML\UIParent.lua:616: in function <FrameXML\UIParent.lua:582>


  • #46

    Apparently for MoP pre-orders GetAccountExpansionLevel now returns 4 but Blizzard has not extended the table MAX_PLAYER_LEVEL_TABLE to return the appropriate value for the MoP expansion level and that screws up the code.
    I will put on a temporary fix for that asap.

  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Star Trek Online Wiki Editing Contest