- Home
- Downloads
-
Addons & Mods
Featured
World of Warcraft
6,100 Addons
-
Popular Downloads
- Top World of Warcraft Addons
- Top Minecraft Server Mods
- Top Rift Addons
- Top Skyrim Mods
- Top World of Tanks Skins
- Top StarCraft II Maps
- Top Terraria Maps
- Top Runes of Magic Addons
- Top Warhammer Online Addons
- Top The Secret World Mods
- Top Age of Conan Addons
-
- Curse Client
- Premium
- News
- Giveaways
- Forums
- Store
LibGroupTalents-1.0
- 1 Like
- World of Warcraft
- 50 Monthly Downloads
- Supports: 4.0.6
- 36,822 Total Downloads
- Updated 07/14/2011
- Created 08/21/2009
- 11 Favorites
- Project Site
- Comments
- Release Type: Release
- License: MIT License
- Newest File: 4.1 Release
About LibGroupTalents-1.0
A high level interface to the standard talent API. All of the default Blizzard talent functions are mapped onto equivelant library functions which accept a unit ID. Plus many convenience functions are provided to allow collection of much of the commonly needed information.
The library takes care of all of the talent querying, roster changes and so forth. It simply notifies you when someone's talents have changed. You can directly query a talent by name, or get a quick and easy summary of their spec.
LibGroupTalents-1.0 is intended to do the following basic functions usually handled at the mod level.
- Maintain a raid wide table of talents, automatically updated on roster changes, notifying you on talent receipts.
- Provide easy access to talent queries (spec weight, spec name, specific talent presence).
- Monitor talent changes in players, and notify of changes (respec, talent swap, update after out of sight, level up).
- Monitor player roles, and notify of changes (melee, tank, healer, caster).
- Communicate directly with itself to other users to update talents and glyphs via addon channel when possible.
Note that the LibTalentQuery-1.0 dependancy must be included before LibGroupTalents-1.0 in any lib.xml or mod side TOC declarations.
You might wander why two libraries are needed to handle talents? LibTalentQuery-1.0 has it's place; It deals exclusively with queueing and processing inspect requests, and this may still be an easier solution for some. LibGroupTalents-1.0 handles the higher level caching of talents so that re-querying on-demand is not required, and deals with comparing specs on updates from the queue and providing easy access to often needed information.
Functions
UnitHasTalent(unit, talentName[, group])
- Returns: Points spent in talent or nil
GUIDHasTalent(guid, talentName[, group])
- As UnitHasTalent
GetUnitTalentSpec(unitid[, group])
- Returns: Returns: Specialization Tree, spent1, spent2, spent3, non-localized name of specialization tree
It is possible that dominant tree will return a number in cases where talent specs have been received by comms and you have not yet encountered a player of the same class to inspect the talent names and tree names from.
GetGUIDTalentSpec(guid[, group])
- As GetUnitTalentSpec
GetUnitTalents(unit, refresh)
- Returns: Raw talent information in form of table of 3 strings of points spent. The refresh arg will force a re-query of the unit's talents.
GetGUIDTalents(guid, refresh)
- As GetUnitTalents
GetUnitRole(unit)
- Returns one of: "melee", "caster", "healer", "tank"
GetGUIDRole(guid)
- As GetUnitRole.
RefreshTalentsByUnit(unit)
- Force a refresh of talents for the specific unit.
RefreshTalentsByGUID(guid)
- Force a refresh of talents for the specific player GUID.
GetTreeNames(class)
- Returns: The three talent tree names for that class, then the three non-localized tree names
Note: These return values are only valid after a player of that class has been seen by this library.
GetTreeIcons(class)
- Returns: The three talent tree icons for that class.
Note: These return values are only valid after a player of that class has been seen by this library.
GetTalentCount()
- Returns: Talent info got, Talent info missing
GetTalentMissingNames()
- Returns: Comma delimited list of player names we're missing talents for
GetClassTalentInfo(class, talentName)
- Returns: Max Rank, Icon, Tab, Tier, Column, Tree Index.
Note: These return values are only valid after a player of that class has been seen by this library.
GetUnitStorageString(unit)
- Returns: An encoded data string containing talent information for the player which can be stored by mods to set in later sessions using SetStorageString().
This string is encoded and double checked on receipt. It has a CRC combining the WoW build number so any saved sets from old versions of WoW are automatically invalid.
GetGUIDStorageString(guid)
- As GetUnitStorageString.
SetStorageString(talentString)
- Returns: true on success (applicable). Any second return value indicates the data was invalid and should not be kept.
GetUnitGlyphs(unit[, group])
- Returns: Up to 6 spell IDs for the currently assigned Glyphs (Note: For the moment, we can only see the glyphs of players running LibGroupTalents-1.0).
GetGUIDGlyphs(guid[, group])
- As GetUnitGlyphs
UnitHasGlyph(unit, glyph [, group])
- Returns: true if the player has the glyph associated with spellID or spellName (Note: For the moment, we can only see the glyphs of players running LibGroupTalents-1.0).
GUIDHasGlyph(unit, glyph[, group])
- As UnitHasGlyph
PurgeAndRescanTalents()
- Wipe current roster of all talents and rescan from start
Convenience Functions
Similar to Blizzard API functions, but callable with a unit ID. Talent data is read in quite quickly once you see raid members (approximately 3 per second assuming you don't have a mod that's thrashing the NotifyInspect queue), and it's trivial to then access these familiar functions.
GetActiveTalentGroup(unit)
- Returns: Active talent group for unit.
GetNumTalentGroups(unit)
- Returns: Number of talent groups for unit.
GetNumTalentTabs(unit)
- Returns: Number of talent tabs.
GetTalentTabInfo(unit, tab[, group])
- Returns: Tree ID, tree name, tree description, tree icon, points spent, non-localized tree name, preview points spent (or 0 if not player), isSpecialization
GetNumTalents(unit, tab)
- Returns: Number of talents for specified tree
GetTalentInfo(unit, tab, index[, group])
- Returns: Talent Name, Icon, Tier, Column, Points Spent, Max Rank Note that preview return values are not given unless called with "player".
GetUnspentTalentPoints(unit[, group])
- Returns: Number of un-spent talent points for the unit
Events
These events are fired when any group member's talents change for any reason. You don't need to worry about querying the default API for them, just watch these events and update from the library.
LibGroupTalents_Update(guid, unit) LibGroupTalents_Update(guid, unit, newSpec, n1, n2, n3 [, oldSpec, o1, o2, o3])
- Received updated talents. If it's a respec, or old set is known, it passes the old info also in last four args.
This is not sent if new talent scan is same as previous.
LibGroupTalents_UpdateComplete(guid1, guid2[, ...])
- Sent when there are no more pending talent reads due and passes all GUIDs that were updated since last time this event was fired.
LibGroupTalents_Add(guid, unit, name, realm)
- Unit added to talent roster.
Talents not necessarily available yet, but this is the mod's chance to feed talents using SetStorageString
LibGroupTalents_Remove(guid, name, realm)
- Unit removed from talent roster.
This is your last chance to store talents if required using GetUnitStorageString.
LibGroupTalents_RoleChange(guid, unit, newrole, oldrole)
- Roles are: "melee", "caster", "healer", "tank"
------------------------------------------------------------------------
r69 | zeksie | 2011-07-14 09:17:57 +0000 (Thu, 14 Jul 2011) | 1 line
Changed paths:
A /tags/4.1 Release (from /trunk:68)
Tagging as 4.1 Release
------------------------------------------------------------------------
r68 | Zeksie | 2011-03-28 19:11:12 +0000 (Mon, 28 Mar 2011) | 1 line
Changed paths:
M /trunk/LibGroupTalents-1.0.lua
Added RegisterAddonMessagePrefix calls.
------------------------------------------------------------------------
| File Name | Release Type | Game Version | Downloads | Date |
|---|---|---|---|---|
| 4.1 Release | Release | 4.0.6 | 11,218 | 07/14/2011 |
| 4.0 Release 3 | Release | 4.0.3a | 8,808 | 01/16/2011 |
| 4.0 Release 2 | Release | 4.0.1 | 5,864 | 10/28/2010 |
| 4.0 Release 1 | Release | 4.0.1 | 2,883 | 10/18/2010 |
| 3.3 Release 3 | Release | 3.3.5 | 1,105 | 09/30/2010 |
| 3.3 Release 2 | Release | 3.3.3 | 120 | 05/07/2010 |
| r51 | Release | 3.3.0 | 99 | 01/30/2010 |
| 3.3 Release 1 | Release | 3.3.0 | 89 | 12/09/2009 |
| r47 | Release | 3.2.0 | 55 | 10/25/2009 |
| r46 | Release | 3.2.0 | 16 | 10/25/2009 |
| r45 | Release | 3.2.0 | 5 | 10/25/2009 |
| 3.2.2 Release 6 | Release | 3.2.0 | 37 | 10/23/2009 |
| 3.2.2 Release 5 | Release | 3.2.0 | 29 | 10/21/2009 |
| 3.2.2 Release 4 | Release | 3.2.0 | 28 | 10/19/2009 |
| r38 | Release | 3.2.0 | 31 | 10/14/2009 |
| 3.2.2 Release 3 | Release | 3.2.0 | 25 | 10/13/2009 |
| r36 | Release | 3.2.0 | 20 | 10/12/2009 |
| 3.2.2 Release 2 | Release | 3.2.0 | 31 | 10/07/2009 |
| 3.2.2 Release | Release | 3.2.0 | 40 | 10/02/2009 |
| r31 | Release | 3.2.0 | 34 | 09/21/2009 |
| r30 | Release | 3.2.0 | 36 | 09/08/2009 |
| Release 5 | Release | 3.2.0 | 25 | 09/03/2009 |
| Release 4 | Release | 3.2.0 | 17 | 09/02/2009 |
| Release 3 | Release | 3.2.0 | 2 | 09/02/2009 |
| Release 2 | Release | 3.2.0 | 13 | 09/01/2009 |
| First Release | Release | 3.2.0 | 22 | 08/30/2009 |
| r17 | Beta | 3.2.0 | 24 | 08/28/2009 |
| r16 | Beta | 3.2.0 | 22 | 08/27/2009 |
| r14 | Beta | 3.2.0 | 2 | 08/25/2009 |
| r13 | Beta | 3.2.0 | 7 | 08/25/2009 |
| r12 | Beta | 3.2.0 | 4 | 08/25/2009 |
| r11 | Beta | 3.2.0 | 16 | 08/24/2009 |
| r10 | Beta | 3.2.0 | 10 | 08/23/2009 |
| r9 | Beta | 3.2.0 | - | 08/23/2009 |
| r8 | Beta | 3.2.0 | 8 | 08/22/2009 |
| Beta 1 | Beta | 3.2.0 | - | 08/22/2009 |
| r5 | Beta | 3.2.0 | 4 | 08/21/2009 |
| r3 | Beta | 3.2.0 | - | 08/21/2009 |
Addon Packs Containing This...
Top Downloads
-
- Deadly Boss Mods
- Combat, PvP, and Boss Encounters
- 1,025,230 Monthly Downloads
-
- Bagnon
- Bags & Inventory
- 481,343 Monthly Downloads
-
- Auctioneer
- Mail, Tooltip, Bags & Inventory, Professions, and Auction & Economy
- 334,076 Monthly Downloads
-
- Recount
- Combat
- 328,627 Monthly Downloads
-
- HealBot Continued
- Healer and Unit Frames
- 299,676 Monthly Downloads

Comments
Date: 2012-09-08 05:05:33
ID: 18
Error occured in: Global
Count: 2
Message: ...e\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua line 747:
attempt to call global 'GetNumTalentTabs' (a nil value)
Debug:
[C]: GetNumTalentTabs()
...e\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:747:
...e\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:741
...e\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:876: TalentQuery_Ready()
...e\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1385:
...e\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1360
(tail call): ?
...e\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:411: OnRaidRosterUpdate()
...e\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:188:
...e\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:185
Locals:
unit = "player"
_ = "Death Knight"
class = "DEATHKNIGHT"
data = nil
isnotplayer = false
(*temporary) = nil
(*temporary) = false
(*temporary) = "attempt to call global 'GetNumTalentTabs' (a nil value)"
lib = <table> {
GetTalentTreeMasterySpells = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1810
RefreshTalentsByUnit = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1198
GetGUIDGlyphs = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1039
SendMyGlyphs = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1576
OnReceiveTalents = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:964
GetUnitTalentSpec = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:936
RefreshTalentsByGUID = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1206
GUIDHasTalent = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1613
GetActiveTalentGroup = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1656
GetGUIDRole = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1278
GLYPH_REMOVED = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1094
talentTimers = <table> {
}
GetUnitStorageString = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:529
batch = <table> {
}
pendingStorageStrings = <table> {
}
GetNumTalentGroups = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1667
GetUnitRole = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1270
GLYPH_UPDATED = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1099
UserCount = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1593
roster = <table> {
}
SendCommMessage = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1425
CheckForMissingTalents = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1247
UNIT_AURA = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:327
GetTalentCount = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1840
TalentQuery_Ready_Outsider = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:870
GetTreeNames = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:817
UnitHasGlyph = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1056
events = <table> {
}
frame = LibGroupTalents_Frame {
}
UnitHasTalent = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1607
TriggerRefreshTalents = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1187
OnReceiveGlyphs = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1010
classTalentData = <table> {
}
RAID_ROSTER_UPDATE = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:251
GetUnitGlyphs = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1034
GetClassTalentInfo = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1640
CHAT_MSG_ADDON = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1457
UNIT_SPELLCAST_SUCCEEDED = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1148
OnRaidRosterUpdate = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:340
RegisterCallback = <function> defined @Interface\AddOns\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:118
GetUnitTalents = <function> defined @Interface\AddOns\LibGroupTalents-1.0\LibGroupTalents-1.0.lua:1340
UnregisterCallback = <function> defined @Interface\AddOns\Ace3\CallbackH
However, there was an issue when sending messages to players on different realms. This has hopefully been resolved in the latest release. Please test Release 3.
It's better to report issues on the development site (WoWAce, linked above). This bug report went unnoticed until now.