ElvUI BetterTalentFrame
ElvUI BetterTalentFrame adds specialisation tabs much like the pre-Legion dual specialisation tabs. These tabs allow the player to view their non-active specialisation's talents at any time.
Other improvements include being able to switch specialisation on any tab of the talent frame and saving/loading custom talent profiles.
Talent Profiles
Talent profiles allows you to save and apply talent configurations with a single click.
Profiles are saved per class/spec (i.e. all your feral druids will have access to the same profiles).
You still have to be in a city or inn (or have a talent change buff active) to be able to change and apply profiles, but simply managing your profiles can be done anywhere.
Creating a profile
- Open the talents interface.
- Configure your talent tree as you wish.
- Click on the dropdown menu.
- Click on the "Add a new profile" option.
- Name your new profile.
Applying a profile
- Make sure you are able to change talents.
- Select your desired profile from the dropdown menu.
- Click the "Apply" button.
Updating an existing profile
- Make sure you are able to change talents.
- Select your desired profile from the dropdown menu.
- Click the "Save" button.
Applying a profile in a macro
Function:
ARWICTP_ActivateProfile(profileIndex)
Example Macro:
/equipset AoE
/run ARWICTP_ActivateProfile(2)
A lua error a got today:
3x ...lvUI_BetterTalentFrame\modules/TalentFrameRework.lua:147: attempt to index field 'bg' (a nil value)
[string "@ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua"]:147: in function `UpdateTalentsTab'
[string "@ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua"]:183: in function <...lvUI_BetterTalentFrame\modules/TalentFrameRework.lua:180>
[string "=(tail call)"]: ?
[string "=[C]"]: in function `PlayerTalentFrame_Update'
[string "@Blizzard_TalentUI\Blizzard_TalentUI.lua"]:429: in function `PlayerTalentFrame_Refresh'
[string "@Blizzard_TalentUI\Blizzard_TalentUI.lua"]:1018: in function `PlayerSpecTab_OnClick'
[string "@Blizzard_TalentUI\Blizzard_TalentUI.lua"]:270: in function <...rfaceBlizzard_TalentUI\Blizzard_TalentUI.lua:257>
[string "=[C]"]: ?
[string "=[C]"]: in function `Show'
[string "@FrameXML\UIParent.lua"]:2893: in function `SetUIPanel'
[string "@FrameXML\UIParent.lua"]:2738: in function `ShowUIPanel'
[string "@FrameXML\UIParent.lua"]:2606: in function <FrameXML\UIParent.lua:2602>
[string "=[C]"]: in function `SetAttribute'
[string "@FrameXML\UIParent.lua"]:3457: in function `ShowUIPanel'
[string "@Blizzard_TalentUI\Blizzard_TalentUI.lua"]:117: in function `PlayerTalentFrame_Toggle'
[string "@FrameXML\UIParent.lua"]:851: in function <FrameXML\UIParent.lua:844>
[string "=[C]"]: in function `ToggleTalentFrame'
[string "TOGGLETALENTS"]:1: in function <[string "TOGGLETALENTS"]:1>
Locals:
self = <table> {
PLAYER_LOGOUT = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:252
SetDefaultModuleLibraries = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:367
UpdateActivateButton = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:82
Enable = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:294
NewModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:235
EnableModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:332
modules = <table> {
}
GetModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:442
SecureHookScript = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:410
defaultModuleLibraries = <table> {
}
RawHookScript = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:395
PLAYER_ENTERING_WORLD = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:256
UpdateSpecTab = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:92
selectedSpec = 1
PLAYER_SPECIALIZATION_CHANGED = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:248
GetName = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:279
UpdateTalentCache = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:53
baseName = "ElvUI_BetterTalentFrame"
hasRunOneTime = true
name = "ElvUI_BetterTalentsFrame_TalentFrameRework"
Initialize = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:281
IsEnabled = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules = <table> {
}
SecureHook = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:336
DisableModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:350
InitActivateButton = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:188
GetTalentButtonTexture = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:48
UpdateTalentsTab = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:103
Unhook = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:418
RegisterMessage = <function> defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:90
HookScript = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:366
Update = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:180
GetTalentButtonFrame = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:43
IsHooked = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:493
UnregisterMessage = <function> defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:153
VerifyDB = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:21
IsModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:217
defaultModuleState = true
SetDefaultModuleState = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:387
UnregisterAllEvents = <function> defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:174
SendMessage = <function> defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:59
SetEnabledState = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:424
Hook = <f
-----------------------------------------------------------------------------------------------------------------------------------------------------
1x ...lvUI_BetterTalentFrame\modules/TalentFrameRework.lua:156: attempt to index field 'bg' (a nil value)
[string "@ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua"]:156: in function `UpdateTalentsTab'
[string "@ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua"]:183: in function `Update'
[string "@ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua"]:226: in function <...lvUI_BetterTalentFrame\modules/TalentFrameRework.lua:223>
Locals:
self = <table> {
PLAYER_LOGOUT = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:252
SetDefaultModuleLibraries = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:367
UpdateActivateButton = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:82
Enable = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:294
NewModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:235
EnableModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:332
modules = <table> {
}
GetModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:442
SecureHookScript = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:410
defaultModuleLibraries = <table> {
}
RawHookScript = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:395
PLAYER_ENTERING_WORLD = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:256
UpdateSpecTab = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:92
selectedSpec = 4
PLAYER_SPECIALIZATION_CHANGED = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:248
GetName = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:279
UpdateTalentCache = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:53
baseName = "ElvUI_BetterTalentFrame"
hasRunOneTime = true
name = "ElvUI_BetterTalentsFrame_TalentFrameRework"
Initialize = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:281
IsEnabled = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules = <table> {
}
SecureHook = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:336
DisableModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:350
InitActivateButton = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:188
GetTalentButtonTexture = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:48
UpdateTalentsTab = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:103
Unhook = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:418
RegisterMessage = <function> defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:90
HookScript = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:366
Update = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:180
GetTalentButtonFrame = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:43
IsHooked = <function> defined @Ace3\AceHook-3.0\AceHook-3.0.lua:493
UnregisterMessage = <function> defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:153
VerifyDB = <function> defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:21
IsModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:217
defaultModuleState = true
SetDefaultModuleState = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:387
UnregisterAllEvents = <function> defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:174
SendMessage = <function> defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:59
SetEnabledState = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:424
Hook = <f
In reply to Zonk87:
I'm not able to reproduce this with ElvUI v12.06 on the Shadowlands beta.
What were you doing when you got this error, and does it still occur if you only enable the three AddOns ElvUI, ElvUI_OptionsUI, and ElvUI_BetterTalentFrame?
In reply to Arwic_:
sorry that i forgot the info this error is not on SL Beta its on Retail and the errors are there on login.
Error:
3x ...s\ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:159: attempt to index global 'talentID' (a nil value)
[string "@ElvUI_BetterTalentFrame\modules/TalentProfiles.lua"]:159: in function `ActivateProfile'
[string "@ElvUI_BetterTalentFrame\modules/TalentProfiles.lua"]:308: in function <...s\ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:301>
Locals:
self = <table> {
GetPvpTalentInfos = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:46
SetDefaultModuleLibraries = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:367
Enable = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:294
NewModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:235
EnableModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:332
modules = <table> {
}
GetModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:442
SecureHookScript = <function> defined @ElvUI\Libraries\Ace3\AceHook-3.0\AceHook-3.0.lua:410
defaultModuleLibraries = <table> {
}
TryDisplay = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:352
playerClass = "MAGE"
SaveProfile = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:173
RawHookScript = <function> defined @ElvUI\Libraries\Ace3\AceHook-3.0\AceHook-3.0.lua:395
baseName = "ElvUI_BetterTalentFrame"
BuildFrame = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:241
UnregisterAllEvents = <function> defined @ElvUI\Libraries\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:174
PLAYER_SPECIALIZATION_CHANGED = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:372
GetName = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:279
PLAYER_ENTERING_WORLD = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:376
ARWIC_BTF_SPEC_SELECTION_CHANGED = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:368
hasRunOneTime = true
name = "ElvUI_BetterTalentsFrame_TalentProfiles"
Initialize = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:390
IsEnabled = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules = <table> {
}
ActivateProfile = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:140
DisableModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:350
GetProfile = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:70
RemoveProfile = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:85
InsertProfile = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:80
GetTalentInfos = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:24
RegisterMessage = <function> defined @ElvUI\Libraries\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:90
HookScript = <function> defined @ElvUI\Libraries\Ace3\AceHook-3.0\AceHook-3.0.lua:366
Print = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:19
StaticPopupShow_Add = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:135
IsHooked = <function> defined @ElvUI\Libraries\Ace3\AceHook-3.0\AceHook-3.0.lua:493
VerifyDB = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:53
GetAllProfiles = <function> defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:75
IsModule = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:217
defaultModuleState = true
SetDefaultModuleState = <function> defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:387
StaticPopupShow_Remove = <function> defined @ElvUI_BetterTalentFrame
And No2:
1x ...s\ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:159: Usage: LearnTalent(talentID)
[string "=[C]"]: in function `LearnPvpTalent'
[string "@ElvUI_BetterTalentFrame\modules/TalentProfiles.lua"]:159: in function `ActivateProfile'
[string "@ElvUI_BetterTalentFrame\modules/TalentProfiles.lua"]:308: in function <...s\ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:301>
Locals:
(*temporary) = 3586
(*temporary) = 1
In reply to ZwiXx80:
1x [ADDON_ACTION_BLOCKED] AddOn 'ElvUI_BetterTalentFrame' hat versucht die geschützte Funktion 'CompactRaidFrame10:Show()' aufzurufen.
[string "@!BugGrabber\BugGrabber.lua"]:519: in function <!BugGrabber\BugGrabber.lua:519>
[string "=[C]"]: in function `Show'
[string "@FrameXML\CompactUnitFrame.lua"]:375: in function `CompactUnitFrame_UpdateVisible'
[string "@FrameXML\CompactUnitFrame.lua"]:306: in function `CompactUnitFrame_UpdateAll'
[string "@FrameXML\CompactUnitFrame.lua"]:125: in function <FrameXML\CompactUnitFrame.lua:57>
In reply to ZwiXx80:
I was not able to reproduce this error, but it may be fixed now that I have fixed the PVP talents apply. Let me know if there are still issues with the new version coming out soon.
please update
There is an issue where in the talent frame the remove profile button covers the one to show or hide pvp talents and warmode turning on and off.
Dropdown menu has vanished since the patch. the only thing(s) i can do currently are select "open to talent pane" and "hide pvp frame".....
In reply to Biermaker1971:
In reply to Arwic6:
The dropdown menu's have disappeared with the patch to 8.1
Is this due to the re-work of the file system by blizz, or something else?
hotfix and or update coming soon ??
In reply to Biermaker1971:
In reply to Arwic6:
Thanks for this addon! Is there a way to make it also change PvP talents?
In reply to o0Rampancy0o:
In reply to Arwic6:
It is a nice Addon to save your Talents, but it is a littlebit confusing when I change my Talents to the 3th Talentprofile that in the dropdownmenu the name from the first Talentprofile is written.
In reply to Dathwada:
Hey,
I really like the Addon, but are there any plans to integrate the PvP Talents in a profile?