Code Monkey home page Code Monkey logo

elvui_bettertalentframe's Introduction

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

  1. Open the talents interface.
  2. Configure your talent tree as you wish.
  3. Click on the dropdown menu.
  4. Click on the "Add a new profile" option.
  5. Name your new profile.

Applying a profile

  1. Make sure you are able to change talents.
  2. Select your desired profile from the dropdown menu.
  3. Click the "Apply" button.

Updating an existing profile

  1. Make sure you are able to change talents.
  2. Select your desired profile from the dropdown menu.
  3. Click the "Save" button.

Applying a profile in a macro

Function:
ARWICTP_ActivateProfile(profileIndex)
Example Macro:
/equipset AoE
/run ARWICTP_ActivateProfile(2)

Chat Commands

-- activates talentprofile with ID <profileID>
-- IDs starting with 1
/talentprofiles activate <profileID>

-- cycle through talentprofiles
/talentprofiles next

-- Info
"/tp" is an alias for "/talentprofiles"

elvui_bettertalentframe's People

Contributors

maxine4j avatar chr2sn0 avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar Jeremy Morton avatar

Forkers

chr2sn0

elvui_bettertalentframe's Issues

Dropdown Menu

The dropdownmenu is overlapping the "apply" button

ElvUI BTF Fehler

Lua Error 1

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 =

{
PLAYER_LOGOUT = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:252
SetDefaultModuleLibraries = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:367
UpdateActivateButton = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:82
Enable = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:294
NewModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:235
EnableModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:332
modules =
{
}
GetModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:442
SecureHookScript = defined @ace3\AceHook-3.0\AceHook-3.0.lua:410
defaultModuleLibraries =
{
}
RawHookScript = defined @ace3\AceHook-3.0\AceHook-3.0.lua:395
PLAYER_ENTERING_WORLD = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:256
UpdateSpecTab = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:92
selectedSpec = 1
PLAYER_SPECIALIZATION_CHANGED = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:248
GetName = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:279
UpdateTalentCache = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:53
baseName = "ElvUI_BetterTalentFrame"
hasRunOneTime = true
name = "ElvUI_BetterTalentsFrame_TalentFrameRework"
Initialize = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:281
IsEnabled = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules =
{
}
SecureHook = defined @ace3\AceHook-3.0\AceHook-3.0.lua:336
DisableModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:350
InitActivateButton = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:188
GetTalentButtonTexture = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:48
UpdateTalentsTab = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:103
Unhook = defined @ace3\AceHook-3.0\AceHook-3.0.lua:418
RegisterMessage = defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:90
HookScript = defined @ace3\AceHook-3.0\AceHook-3.0.lua:366
Update = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:180
GetTalentButtonFrame = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:43
IsHooked = defined @ace3\AceHook-3.0\AceHook-3.0.lua:493
UnregisterMessage = defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:153
VerifyDB = defined @ElvUI_BetterTalentFrame\modules/TalentFrameRework.lua:21
IsModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:217
defaultModuleState = true
SetDefaultModuleState = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:387
UnregisterAllEvents = defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:174
SendMessage = defined @LibSharedMedia-3.0\CallbackHandler-1.0\CallbackHandler-1.0.lua:59
SetEnabledState = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:424
Hook = <f

Lua Error 2

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 =

{
GetPvpTalentInfos = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:46
SetDefaultModuleLibraries = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:367
Enable = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:294
NewModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:235
EnableModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:332
modules =
{
}
GetModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:442
SecureHookScript = defined @ElvUI\Libraries\Ace3\AceHook-3.0\AceHook-3.0.lua:410
defaultModuleLibraries =
{
}
TryDisplay = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:352
playerClass = "MAGE"
SaveProfile = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:173
RawHookScript = defined @ElvUI\Libraries\Ace3\AceHook-3.0\AceHook-3.0.lua:395
baseName = "ElvUI_BetterTalentFrame"
BuildFrame = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:241
UnregisterAllEvents = defined @ElvUI\Libraries\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:174
PLAYER_SPECIALIZATION_CHANGED = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:372
GetName = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:279
PLAYER_ENTERING_WORLD = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:376
ARWIC_BTF_SPEC_SELECTION_CHANGED = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:368
hasRunOneTime = true
name = "ElvUI_BetterTalentsFrame_TalentProfiles"
Initialize = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:390
IsEnabled = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules =
{
}
ActivateProfile = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:140
DisableModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:350
GetProfile = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:70
RemoveProfile = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:85
InsertProfile = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:80
GetTalentInfos = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:24
RegisterMessage = defined @ElvUI\Libraries\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:90
HookScript = defined @ElvUI\Libraries\Ace3\AceHook-3.0\AceHook-3.0.lua:366
Print = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:19
StaticPopupShow_Add = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:135
IsHooked = defined @ElvUI\Libraries\Ace3\AceHook-3.0\AceHook-3.0.lua:493
VerifyDB = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:53
GetAllProfiles = defined @ElvUI_BetterTalentFrame\modules/TalentProfiles.lua:75
IsModule = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:217
defaultModuleState = true
SetDefaultModuleState = defined @ElvUI\Libraries\Ace3\AceAddon-3.0\AceAddon-3.0.lua:387
StaticPopupShow_Remove = 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

Error when viewing spec that has no talent data

11x ElvUI_BetterTalentFrame\TalentFrameRework.lua:100: Usage: GameTooltip:SetTalent(talentID[, isInspect[, groupIndex]])
[C]: in function `SetTalent'
ElvUI_BetterTalentFrame\TalentFrameRework.lua:100: in function <ElvUI_BetterTalentFrame\TalentFrameRework.lua:98>

Locals:
(*temporary) = GameTooltip {
 0 = <userdata>
 SetCurrencyByID = <function> defined @AllTheThings\AllTheThings.lua:2713
 SetHyperlink = <function> defined =[C]:-1
 SetGuildBankItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetVoidItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetVoidDepositItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetVoidWithdrawalItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 template = "Transparent"
 comparing = false
 TopOverlay = <unnamed> {
 }
 SetUnitDebuff = <function> defined =[C]:-1
 SetLFGDungeonReward = <function> defined @AllTheThings\AllTheThings.lua:2750
 SetQuestItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetCurrencyToken = <function> defined @AllTheThings\AllTheThings.lua:2724
 numMoneyFrames = 2
 SetRecipeResultItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetRecipeReagentItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetBuybackItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 shoppingTooltips = <table> {
 }
 SetMerchantItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetQuestLogItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 Hide = <function> defined =[C]:-1
 SetTradeTargetItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetUnitBuff = <function> defined =[C]:-1
 SetTradePlayerItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetLFGDungeonShortageReward = <function> defined @AllTheThings\AllTheThings.lua:2767
 SetSendMailItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 hasMoney = 1
 updateTooltip = 0.14699999690056
 SetInventoryItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetMerchantCostItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetInboxItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetLootRollItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetUnitAura = <function> defined =[C]:-1
 ignoreUpdates = true
 SetAuctionSellItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetBagItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 needsReset = true
 BottomOverlay = <unnamed> {
 }
 SetLootItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
 SetAuctionItem = <function> defined @TradeSkillMaster\Core\Lib\TooltipLib.lua:93
}
(*temporary) = nil

ADDON_ACTION_BLOCKED

1x [ADDON_ACTION_BLOCKED] AddOn 'ElvUI_BetterTalentFrame' hat versucht die geschützte Funktion 'CompactRaidFrame1:SetAttribute()' aufzurufen.
[string "@!BugGrabber\BugGrabber.lua"]:519: in function <!BugGrabber\BugGrabber.lua:519>
[string "=[C]"]: in function SetAttribute' [string "@FrameXML\CompactUnitFrame.lua"]:363: in function CompactUnitFrame_UpdateInVehicle'
[string "@FrameXML\CompactUnitFrame.lua"]:306: in function `CompactUnitFrame_UpdateAll'
[string "@FrameXML\CompactUnitFrame.lua"]:155: in function <FrameXML\CompactUnitFrame.lua:57>

Using with ElvI 12.16. & Shadow&Light 4.17

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.