Download
(12Kb)
Download
Updated: 11-26-14 01:28 AM
Compatibility:
Warlords of Draenor (6.0.3)
Warlords of Draenor Pre-Patch (6.0.2)
Updated:11-26-14 01:28 AM
Created:unknown
Downloads:129,087
Favorites:466
MD5:

Action Bar Saver  Popular! (More than 5000 hits)

Version: v2.3.3
by: Shadowed [More]

Quick little mod, allows you to setup different profiles for your action bars. Mainly this is for hybrid classes that want to be able to respec without spending 10-20 minutes setting their action bars up. All you do is type /abs save <name> and it'll save the location of all your spells, macros and items.

For example, if you're currently a Feral Druid you can type /abs save feral then you can respec to Resto and setup your bars, then type /abs save resto once you go respec back to Feral you can then train all your spells again and type /abs restore feral and you'll get your feral setup without all the work of actually finding where you placed things.

Works with any custom interface like Bongos provided you're not using more then the standard 120 action buttons, ones that provided features to go past 120 will cause only the standard 120 to be saved/restored. This isn't a bug however, just a limitation in the WoW API

tag v2.3.3
ad89ad5bf9ece06e5b6ff53859c333241612ffa6
Shadowed <[email protected]>
2014-11-25 23:26:55 -0800

Tagging as release v2.3.3

--------------------

Shadowed:
- cleaned up files
- Updated for WoD

tag v2.3.2
238766229e5e521568f4f7c4d72348ff2f87a167
Shadowed <[email protected]>
2012-09-13 12:57:39 -0700

Tagging as release 2.3.2

--------------------

Shadowed:
- Permissions
- Fixed spell restoring (Thanks Morsker)

tag v2.3.1
e2dd8290c6d4b2e11c8d4673c396c408922b6db4
Shadowed <[email protected]>
2012-08-27 09:39:48 -0700

Tagging as release 2.3.1

--------------------

Shadowed:
- Given I'll be pushing 5.0.4 versions in the next day, I'll just bump TOC now
- Fixed macro handling (Thanks nebula169)
Optional Files (0)


Post A Reply Comment Options
Unread 08-04-12, 09:34 PM  
Fyl
A Kobold Labourer

Forum posts: 0
File comments: 7
Uploads: 0
The localization file needs to be updated for the new Monk class.
Report comment to moderator  
Reply With Quote
Unread 08-03-12, 12:08 AM  
KazamaSogetsu
A Kobold Labourer

Forum posts: 0
File comments: 8
Uploads: 0
So far I had no other issues, so I guess that's about it.
Report comment to moderator  
Reply With Quote
Unread 07-31-12, 09:50 AM  
Ketek777
A Kobold Labourer

Forum posts: 0
File comments: 2
Uploads: 0
Originally Posted by Shadowed
Is that all you had to do? I'll release an update if so.
I can confirm that his solution works. Only problem on my hunter is, that ABS can't restore Cobra Shot. I haven't tried on other characters yet.
Report comment to moderator  
Reply With Quote
Unread 07-30-12, 06:08 PM  
Shadowed
...
Featured Addon Author

Forum posts: 387
File comments: 2513
Uploads: 83
Is that all you had to do? I'll release an update if so.
Report comment to moderator  
Reply With Quote
Unread 07-29-12, 09:38 PM  
KazamaSogetsu
A Kobold Labourer

Forum posts: 0
File comments: 8
Uploads: 0
For those trying to use it on beta and getting errors while trying to restore a profile:

Open the ActionBarSaver.lua file, line 278, and replace
Code:
PickupSpellBookItem(spellCache[spellName], BOOKTYPE_SPELL)
By
Code:
PickupSpellBookItem(spellName)
Report comment to moderator  
Reply With Quote
Unread 02-01-12, 11:23 PM  
Xin
A Kobold Labourer

Forum posts: 1
File comments: 4
Uploads: 0
When restoring as a feral druid, mangle(bear form) is placed on the cat form action bars when mangle(cat form) was originally there. I have temporarily resolved the issue by using a mangle macro in place.
Report comment to moderator  
Reply With Quote
Unread 01-28-12, 08:58 AM  
AnrDaemon
A Chromatic Dragonspawn
AddOn Author - Click to view AddOns

Forum posts: 156
File comments: 2231
Uploads: 5
Re: Love this addon

Originally Posted by popnoart
I would only add an option to save specific action bar, not all at the same time. Would be awsome!
Not quite possible. Action bars are stored as a single string of buttons. All as one. Chopping and slicing it would be not an easy task.
Report comment to moderator  
Reply With Quote
Unread 01-28-12, 08:11 AM  
popnoart
A Kobold Labourer

Forum posts: 0
File comments: 3
Uploads: 0
Love this addon

I would only add an option to save specific action bar, not all at the same time. Would be awsome!
Report comment to moderator  
Reply With Quote
Unread 11-25-11, 08:34 AM  
AnrDaemon
A Chromatic Dragonspawn
AddOn Author - Click to view AddOns

Forum posts: 156
File comments: 2231
Uploads: 5
Running diff through my installed ABS and r20110919, I noticed a few differences that I only can call "regressions".
I.e. "restoreRank = true," being default behavior.
Report comment to moderator  
Reply With Quote
Unread 09-23-11, 08:35 AM  
weavil
A Deviate Faerie Dragon

Forum posts: 14
File comments: 95
Uploads: 0
welcome back ?!
Report comment to moderator  
Reply With Quote
Unread 10-17-10, 12:29 AM  
Tact
A Deviate Faerie Dragon

Forum posts: 12
File comments: 29
Uploads: 0
i need an update SOOO bad. i like to respec a lot (yes i need more than 2 specs on my toon) and i HATE having to put back all the buttons 1 by 1.

any word on an update? /cry



edit:

ok. it seems blizz has done something that might make this addon unnecisary.

so i've been holding out on respeccing cause i didn't want to put back all my moves again to the action bar. (lazy ) but today when i forced myself to respec, NONE of my buttons dissapeared! they were all there and still are even after i removed one of those moves. (got rid of concussive blow on my tank)

so i guess if that's all you ever used this addon for, we no longer need it? O_o

idk if the same applies to macros though. just putting in my observations. idk if they help.


great addon none the less and a great backup to have on the offchance all your buttons do dissapear. (very annoying). so update still appreciated cause it's awesome.
Last edited by Tact : 10-17-10 at 12:54 AM.
Report comment to moderator  
Reply With Quote
Unread 10-13-10, 04:23 PM  
Farmbuyer
A Cyclonian
AddOn Author - Click to view AddOns

Forum posts: 43
File comments: 36
Uploads: 1
Re: Not working in 4.0.1

Originally posted by Mordh
Or maybe the hack below works...anyone else tried it live, and is it the "<" lines that need deletion and replacement with the ">" lines?
The style of text posted by fakeh is called a "diff", except it looks like he got the old and new reversed, and forgot to toggle context on. :-) I took his changes as a starting point and got a little farther. The change below works for me, but fails on companions. Also, some "spells" are just not able to be looked up using the new API; presumably there's a way to get them but I have no documentation available on how the new API *works*, so for now I'm skipping them in a hardcoded list. (Yes, it's called "screwed" in the code. You may guess at my frustration level at the time I wrote it. It was a stronger word but wowinterface won't let me post it. /facepalm)

Code:
--- ActionBarSaver.lua.orig	2010-10-13 15:14:35.816250000 -0400
+++ ActionBarSaver.lua	2010-10-13 18:16:09.519375000 -0400
@@ -15,6 +15,9 @@
 local MAX_ACTION_BUTTONS = 144
 local POSSESSION_START = 121
 local POSSESSION_END = 132
+local screwed = {
+	["Lifeblood"] = true,
+}
 
 
 function ABS:OnInitialize()
@@ -69,11 +72,13 @@
 		set[actionID] = nil
 		
 		local type, id, subType, extraID = GetActionInfo(actionID)
+		--print("actionID", actionID, "maps to type", type, "id", id, "sub", subType, "extra/global", extraID)
 		if( type and id and ( actionID < POSSESSION_START or actionID > POSSESSION_END ) ) then
 			-- DB Format: <type>|<id>|<binding>|<name>|<extra ...>
 			-- Save a companion
 			if( type == "companion" ) then
-				set[actionID] = string.format("%s|%s|%s|%s|%s|%s", type, id, "", name, subType, extraID)
+				-- FIXME 'name' here is the name of the profile, not the name of the critter
+				set[actionID] = string.format("%s|%s|%s|%s|%s|%s", type, id, "", name, subType, extraID or "")
 			-- Save an equipment set
 			elseif( type == "equipmentset" ) then
 				set[actionID] = string.format("%s|%s|%s", type, id, "")
@@ -82,7 +87,7 @@
 				set[actionID] = string.format("%s|%d|%s|%s", type, id, "", (GetItemInfo(id)) or "")
 			-- Save a spell
 			elseif( type == "spell" and id > 0 ) then
-				local spell, rank = GetSpellName(id, BOOKTYPE_SPELL)
+				local spell, rank = GetSpellInfo(id) --GetSpellBookItemName(id, BOOKTYPE_SPELL)
 				if( spell ) then
 					set[actionID] = string.format("%s|%d|%s|%s|%s|%s", type, id, "", spell, rank or "", extraID or "")
 				end
@@ -196,7 +201,7 @@
 
 		for i=1, numSpells do
 			local index = offset + i
-			local spell, rank = GetSpellName(index, BOOKTYPE_SPELL)
+			local spell, rank = GetSpellBookItemName(index, BOOKTYPE_SPELL)
 			
 			-- This way we restore the max rank of spells
 			spellCache[spell] = index
@@ -272,12 +277,15 @@
 	-- Restore a spell
 	if( type == "spell" ) then
 		local spellName, spellRank = ...
+		if GetSpellInfo(spellName) and not screwed[spellName] then
+			PickupSpellBookItem(spellCache[spellName], BOOKTYPE_SPELL)
+		--[[
 		if( ( self.db.restoreRank or spellRank == "" ) and spellCache[spellName] ) then
 			PickupSpell(spellCache[spellName], BOOKTYPE_SPELL)
 		elseif( spellRank ~= "" and spellCache[spellName .. spellRank] ) then
 			PickupSpell(spellCache[spellName .. spellRank], BOOKTYPE_SPELL)
+		end]]
 		end
-		
 		if( GetCursorInfo() ~= type ) then
 			-- Bad restore, check if we should link at all
 			local lowerSpell = string.lower(spellName)
@@ -321,6 +329,7 @@
 		local critterName, critterType, critterID = ...
 		PickupCompanion(critterType, actionID)
 		if( GetCursorInfo() ~= "companion" ) then
+			critterName = actionID --FIXME see SaveProfile
 			table.insert(restoreErrors, string.format(L["Unable to restore companion \"%s\" to slot #%d, it does not appear to exist yet."], critterName, i))
 			ClearCursor()
 			return
@@ -392,7 +401,8 @@
 		
 	-- Profile restoring
 	elseif( cmd == "restore" and arg ~= "" ) then
-		for i=#(restoreErrors), 1, -1 do table.remove(restoreErrors, i) end
+		--for i=#(restoreErrors), 1, -1 do table.remove(restoreErrors, i) end
+		table.wipe(restoreErrors)
 				
 		if( not self.db.sets[playerClass][arg] ) then
 			self:Print(string.format(L["Cannot restore profile \"%s\", you can only restore profiles saved to your class."], arg))
@@ -434,7 +444,7 @@
 		end
 
 		self:Print(string.format(L["Errors found: %d"], #(restoreErrors)))
-		for _, text in pairs(restoreErrors) do
+		for _, text in ipairs(restoreErrors) do
 			DEFAULT_CHAT_FRAME:AddMessage(text)
 		end
Report comment to moderator  
Reply With Quote
Unread 10-13-10, 06:59 AM  
Mordh
A Kobold Labourer

Forum posts: 0
File comments: 10
Uploads: 0
Not working in 4.0.1

Has anyone found another mod that serves this function and works in 4.0.1? As a shaman, I respec pretty often, and with the number of hotkeys and macros I bind....

Or maybe the hack below works...anyone else tried it live, and is it the "<" lines that need deletion and replacement with the ">" lines?
Report comment to moderator  
Reply With Quote
Unread 10-06-10, 05:27 AM  
fakeh
A Murloc Raider

Forum posts: 7
File comments: 16
Uploads: 0
Originally posted by Niightblade
Does this work on the current Beta?
With the following hacky changes my needs on the beta are satisfied, but I haven't extensively tested.
Code:
85c85
<                               local spell = GetSpellInfo(id)
---
>                               local spell, rank = GetSpellName(id, BOOKTYPE_SPELL)
199c199
<                       local spell = GetSpellBookItemName(index, SpellBookFrame.bookType)
---
>                       local spell, rank = GetSpellName(index, BOOKTYPE_SPELL)
205c205
<                       --[[if( rank and rank ~= "" ) then
---
>                       if( rank and rank ~= "" ) then
207c207
<                       end]]
---
>                       end
275,279c275,279
<               --if( ( self.db.restoreRank or spellRank == "" ) and spellCache[spellName] ) then
<                       if spellCache[spellName] then PickupSpellBookItem(spellCache[spellName], BOOKTYPE_SPELL) end
<               --elseif( spellRank ~= "" and spellCache[spellName .. spellRank] ) then
<               --      PickupSpell(spellCache[spellName .. spellRank], BOOKTYPE_SPELL)
<               --end
---
>               if( ( self.db.restoreRank or spellRank == "" ) and spellCache[spellName] ) then
>                       PickupSpell(spellCache[spellName], BOOKTYPE_SPELL)
>               elseif( spellRank ~= "" and spellCache[spellName .. spellRank] ) then
>                       PickupSpell(spellCache[spellName .. spellRank], BOOKTYPE_SPELL)
>               end
Best, Dan.
Report comment to moderator  
Reply With Quote
Unread 09-16-10, 11:43 PM  
Niightblade
A Fallenroot Satyr
AddOn Author - Click to view AddOns

Forum posts: 21
File comments: 67
Uploads: 3
Does this work on the current Beta?
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.