Download
(105Kb)
Download
Updated: 12-06-10 04:15 PM
Pictures
File Info
Updated:12-06-10 04:15 PM
Created:unknown
Downloads:24,310
Favorites:123
MD5:

eXtreme Unit Buttons  Popular! (More than 5000 hits)

Version: v2.0
by: tayedaen [More]

This highly configurable mod allows players to associate buttons to unit frames. It is meant as a replacement to GroupButtons which stopped functioning with the 2.0 patch in December 2006. The mod extends the capabilities of GroupButtons by providing these additional features:

  1. an unlimited number of buttons per unit frame
  2. Buttons which turn on/off depending on the amount of damage a unit has
  3. Buttons which are dimmed if a unit as that buff or a related buff applied.
  4. Buttons which appear when a debuff is applied to a unit.
  5. Buttons which allow you to have any type of "/" slash or macro command on a button
  6. A variety of a modes for different activities in the game. For example, a set of buttons
  7. for soloing, buttons for instances, buttons for raids, buttons for specific bosses (such as Baron Geddon in MC (to all priests to debuff), buttons for PvP, etc.
  8. Assign buttons to unit frames that when clicked cast spells on different units. This feature allows, for example, buffs and heals for the player unit to appear within the target buttons to minimize the amount of mouse movement between buttons.
  9. Works for any kind of non-casting classes; specifically warriors and rogues.

Version 2.0 (Dec 06, 2010) (by tayedaen)

I know that the documentation is a complete mess at the moment, I am already working on it.
But I wanted to have a released version for cataclysm start.

Before upgrading, please read the included 'readme.txt'.

You will loose your config, so read carefully !

Hightlights of the changes since the last official release:

Code:
New: Support for default profiles for spec1 and spec 2
New: Wizards for Group and Profile generation
 Please use them !
New: LDB button (and menu)
New: Default Buttons now always use the Prefix 'SB_'
 This is an abbreviation for StandardButton.
 I recommend to use 'CB_' as prefix for custom buttons.
New: '$' self condition for cast buttons (buff, debuff etc.)
 Example: CB_Renew,buff,Renew,$Renew
 This custom buutton will only chnge to the state BUFFED if the destination unit is buffed with your OWN Renew.
New: '!' inverts conditions for cast buttons (buff, debuff etc.)
New: new debuff condition "Death"
 A button with this condition is only shown if the destination unit is dead.
New: new debuff condition "Purge"
 A button with this condition is only shown if the destination unit has at least one buff to purge.
New: two keywords for exclude-units:
  'hostile'   and    'friendly'
  Example: MyGroupName,SB_Renew,*,hostile
  This button will be hidden on hostile units (= it will only be shown on friendly units)
New: Spell ranks have been removed (multiranking too)
New: Macro buttons support now '[target=unit#]'
 Here unit# will be rpalced at runtime with the unit the button is attached to.
 Example: /target [target=unit#]
Improved: Verification of buttons while configuring the addon

And last but not least: 
!!! Improved: Internals are mostly rewritten from scratch for better performance  !!!

Please refer to 'z_historic_Changelog.txt' for older changes.
Known problems:
XPerl's partypets get no buttons

Known blizzard bugs:
------------------------
'isUsableSpell' is broken, there is nothing I can do to change that.
That means: Some spells are reported 'not usable' if you target a hostile target or NPC (like 'PowerWord: Shield' for example).

Enjoy - Tayedaen

Hightlights of the changes since the last official release:
===========================================================
New: Support for default profiles for spec1 and spec 2
New: Wizards for Group and Profile generation
Please use them !
New: LDB button (and menu)
New: Default Buttons now always use the Prefix 'SB_'
This is an abbreviation for StandardButton.
I recommend to use 'CB_' as prefix for custom buttons.
New: '$' self condition for cast buttons (buff, debuff etc.)
Example: CB_Renew,buff,Renew,$Renew
This custom buutton will only chnge to the state BUFFED if the destination unit is buffed with your OWN Renew.
New: '!' inverts conditions for cast buttons (buff, debuff etc.)
New: new debuff condition "Death"
A button with this condition is only shown if the destination unit is dead.
New: new debuff condition "Purge"
A button with this condition is only shown if the destination unit has at least one buff to purge.
New: two keywords for exclude-units:
'hostile' and 'friendly'
Example: MyGroupName,SB_Renew,*,hostile
This button will be hidden on hostile units (= it will only be shown on friendly units)
New: Spell ranks have been removed (multiranking too)
New: Macro buttons support now '[target=unit#]'
Here unit# will be rpalced at runtime with the unit the button is attached to.
Example: /target [target=unit#]
Improved: Verification of buttons while configuring the addon

And last but not least:
!!! Improved: Internals are mostly rewritten from scratch for better performance !!!

Please refer to 'z_historic_Changelog.txt' for older changes.

Known problems:
XPerl's partypets get no buttons
Optional Files (2)
File Name
Version
Size
Author
Date
Type
2.1beta4
104kB
09-15-12 11:51 AM
Addon
upload1 RC2
105kB
12-01-10 11:42 AM
Addon


Post A Reply Comment Options
Unread 06-02-07, 02:28 PM  
tayedaen
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 13
File comments: 191
Uploads: 6
@Oximoron:
Yes, this looks good to me, and I think it should work.

I have an idea what is wrong already, but I'm just rewriting a lot of code ATM.
When the code ist stable again, I will then present my code review to big E.
And I hope he will then release a new version that works for you.


best regards
tayedaen
Report comment to moderator  
Reply With Quote
Unread 06-02-07, 12:29 PM  
OxiMoron
A Kobold Labourer

Forum posts: 1
File comments: 30
Uploads: 0
It's something like this:


heal,NaturesSwiftness,*
heal,HealingTouch,*
heal,Regrowth,*
heal,Rejuvenation,*
heal,Swiftmend,*



solo,player,heal

solo,target,heal

solo,party,heal


There's more but that all works fine.

The NaturesSwiftness will only show up on the player frame and the swiftmend only works on the target frame or have myself/the specific party member targeted.


Thanks for the fix..
Report comment to moderator  
Reply With Quote
Unread 06-02-07, 07:21 AM  
tayedaen
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 13
File comments: 191
Uploads: 6
@Oximoron.
Can you please post your all your specifications from '/XUB config' ?
Report comment to moderator  
Reply With Quote
Unread 06-02-07, 07:16 AM  
tayedaen
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 13
File comments: 191
Uploads: 6
I discovered a severe performance bug in 1.6:
WRONG (code from 1.6):
Code:
if ( myButton.Status ~= myPreviousState ) then
GOOD:
Code:
if ( myButton.State ~= myPreviousState ) then
This bug is realy nasty since he never pops up a lua error, while at the same time beeing the biggest contributor to lag caused by this mod.
Because of this bug EVERY buttons gets updated every time instead only if a change occurs.

!!!! NOTE: PLEASE DO NOT USE THIS NEW CODE AS A FIX !!!!
There are some other bugs hidden, that do no harm at the moment.
They do not matter because the buttons are updated all the time.
If you disable these updates, these bugs will make some buttons stop to work.
So please use the "slower" version until a new version is out.

best regards
tayedaen
Last edited by tayedaen : 06-02-07 at 02:33 PM.
Report comment to moderator  
Reply With Quote
Unread 06-02-07, 06:47 AM  
OxiMoron
A Kobold Labourer

Forum posts: 1
File comments: 30
Uploads: 0
Great mod, too bad you stopped development

Anyway.. anyone know how to fix swiftmend and nature's swiftness?

Right now nature's swiftness is only visible on the player frames, while I kinda want it on my party/target frames too.

and swiftmend is only clickable on my target, so I need to target a party member for it to work.
Report comment to moderator  
Reply With Quote
Unread 05-31-07, 11:05 AM  
tayedaen
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 13
File comments: 191
Uploads: 6
Report comment to moderator  
Reply With Quote
Unread 05-31-07, 10:23 AM  
tayedaen
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 13
File comments: 191
Uploads: 6
Hi !

Yes, I just discovered the developers documentation.

What I mean with builtin cooldown?
Change in 'extremUnitButtons.XML':
Code:
<Button name="XUBActionButtonTemplate" inherits="SecureActionButtonTemplate" virtual="true" toplevel="true" hidden="false">
		<!-- Default size for the buttons is that of an action button -->
		<Size>
			<AbsDimension x="36" y="36"/>
		</Size>

		<!-- Layers is used for button art -->
		<Layers>
		.
		.
		.
		</Layers>

		<!-- TAYEDAEN -->
		<!-- This frame is the cooldown model animation of a spell -->
		<Frames>
			<Cooldown name="$parentCooldown" inherits="CooldownFrameTemplate"/>
		</Frames>
		
		<!-- Texture art for the frame around the button -->
and in 'extremunitbuttons.lua':
Code:
                    -- Is button in a cooldown (or is this a global cooldown?
                    local start, duration, enable = GetSpellCooldown(myButton.SpellID, SpellBookFrame.bookType);
                    local remaining = (duration - (GetTime() - start));
                    if ( duration > 0 ) and ( remaining > 0 ) then
                        --TAYEDAEN
                    	  local new_cooldown = getglobal(myButton:GetName()..'Cooldown');
                    	  CooldownFrame_SetTimer(new_cooldown, start, duration, enable);
                        myCooldown = remaining;
                    end
This is all you need to get it working - it starts the cooldown spinner.
But I'm still trying to improve this a bit - I only need to start the timer ONCE, and the code above qould reset the timer every time, causing possible lags.


Try it out

best regards
tayedaen
Last edited by tayedaen : 05-31-07 at 11:08 AM.
Report comment to moderator  
Reply With Quote
Unread 05-31-07, 09:56 AM  
Elenesski
A Murloc Raider
AddOn Author - Click to view AddOns

Forum posts: 6
File comments: 194
Uploads: 2
Originally posted by tayedaen
Hi Big E !

I just studied your code because I want to include the standard blizzard cooldown.
I already succeed (locally), but it's not tested enough yet.

But while looking at your code, I noticed two things:
1) It's SUPER clean and well documented !!!
2) Sometimes you use XUG instead of XUB.

While I am really happy with point 1 *big grin*, I wanted you to ask about point 2
So is there a diffence between XUB and XUG ?

best regards
tayedaen
Curious .. what do you mean by the standard cooldown ... because the mod already handles cooldown.

Look at the patches ... for the developers documentation for all your answers and more.

Also, I am working on a new patch to address a button re-refresh problem I observed. One of my good friends continues to play the game and while I was at his place a few days ago to do other things he was in a Kara raid on the second boss and I watched XUB in action. The problem was that the mod regenerated the buttons frequently, so this change is to address this issue.

HOWEVER, I'm not running the game, so debugging is very slow as I have to make the change, email him a copy, ask for feedback, apply change, email another copy, etc. He's trying it out tonight in another raid run. If it works and is beneficial, I'll post v1.7.
Report comment to moderator  
Reply With Quote
Unread 05-31-07, 09:26 AM  
tayedaen
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 13
File comments: 191
Uploads: 6
Hi Big E !

I just studied your code because I want to include the standard blizzard cooldown.
I already succeed (locally), but it's not tested enough yet.

But while looking at your code, I noticed two things:
1) It's SUPER clean and well documented !!!
2) Sometimes you use XUG instead of XUB.

While I am really happy with point 1 *big grin*, I wanted you to ask about point 2
So is there a diffence between XUB and XUG ?

best regards
tayedaen
Last edited by tayedaen : 05-31-07 at 09:30 AM.
Report comment to moderator  
Reply With Quote
Unread 05-27-07, 01:50 PM  
Elenesski
A Murloc Raider
AddOn Author - Click to view AddOns

Forum posts: 6
File comments: 194
Uploads: 2
Re: Re: Re: Elenesski, any coders docs?

Originally posted by Cosmic Cleric
Thank you for the reply.

I was wondering if the performance issues are evident because of the way XUF handles events? Could you shed any light on that, your thoughts of coding XUF the way you did, when it came to handling events? I remember reading some comments from other add-on devs talking about how they thought you would have to deal with performance issues with XUF. (Personally, I have a high-end laptop (Dell M1710) so I just throw raw power at XUF to make it work w/o lag).

Also, why is there a performance issue with XUF when adding/removing/updating raid members? Is it just a quantity of buttons/raid members thing, or something about raid handling (vs. party handling) with WoW that is the issue?

I'll take a look at WoW UI Designer. I usually just design my UI's from scratch. I'm all for GUI designers though.


Any chance you can upload the OpenOffice docs, so whoever takes this over can just modify them, vs. having to type them all over again from the PDFs?

Finally, any v2.0 type source code that never saw the light of day, but that you could make available, even for just taking a look at it and getting ideas of where you were going with 2.0 with it?
Developer documentation is now posted as a patch for the mod. The ZIP file contains a PDF version of the file as well as the original Open Office ODT version. It's not too long at 26 pages. I didn't describe every routine, rather the architecture of the mod. I'll leave up to programmer types to read the code.

I also gathered up 3 postings I made elsewhere on this board and embedded them into the document. This describes the WOW API and LUA links, adding new mod support, and adding movable frames that XUB can take advantage of.

As for v2.0 code, I didn't get much into the code. Most of what I wrote never compiled, and I was contemplating chucking it all and starting again. As well, the more I got into it, the busier I got with work so I really don't know the state of things and decided to not include any code you've requested.

Hopefully I've described enough to get you started. If you decide to take over the mod, I'll write an email to the WoWInterface System Administrators so that you can take control of the posting rather than having to point everybody elsewhere. Let me know what you want to do via a private message.

Regards,
- El
Report comment to moderator  
Reply With Quote
Unread 05-25-07, 10:13 PM  
Elenesski
A Murloc Raider
AddOn Author - Click to view AddOns

Forum posts: 6
File comments: 194
Uploads: 2
Re: Re: Re: Elenesski, any coders docs?

Originally posted by Cosmic Cleric
Any chance you can upload the OpenOffice docs, so whoever takes this over can just modify them, vs. having to type them all over again from the PDFs?
As per your request ...

The original docs, some JPeg's, couple of spreadsheets and a Photoshop PSD file has been uploaded as a patch. I'll try to respond to the rest of your request sometime in the next few days.

- El
Report comment to moderator  
Reply With Quote
Unread 05-25-07, 05:23 PM  
sleepingferret
A Kobold Labourer

Forum posts: 0
File comments: 2
Uploads: 1
TOC update

For those of you who don't like to mess with editing files, I'll be submitting a TOC update patch before the day is out.
Report comment to moderator  
Reply With Quote
Unread 05-25-07, 02:31 PM  
paladindrome
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 140
Uploads: 1
Re: Re: Re: Re: Re: Elenesski, any coders docs?

Originally posted by Cosmic Cleric
Can you elaborate on the 'new profiler tools' ?
from http://forums.worldofwarcraft.com/th...02909657&sid=1

CPU Profiling
* CPU profiling is disabled by default since it has some overhead. CPU profiling is controlled by the scriptProfile cvar, which persists across sessions, and takes effect after a UI reload.
* When profiling is enabled, you can use the following functions to retrieve CPU usage statistics. Times are in seconds with about-a-microsecond precision:
* NEW - time = GetScriptCPUUsage() - Returns the total timeused by the scripting system
* NEW - UpdateAddOnCPUUsage() - Scan through the profiling data and update the per-addon statistics
* NEW - time = GetAddOnCPUUsage(index or \"name\") - Returns the total time used by the specified AddOn. This returns a cached value calculated by UpdateAddOnCPUUsage().
* NEW - time, count = GetFunctionCPUUsage(function[, includeSubroutines]) - Returns the time used and number of times the specified function was called. If 'includeSubroutines' is true or omitted, the time includes both the time spent in the function and subroutines called by the function. If it is false, then time is only the time actually spent by the code in the function itself.
* NEW - time, count = GetFrameCPUUsage(frame[, includeChildren]) - Returns the time used and number of function calls of any of the frame's script handlers. If 'includeChildren' is true or omitted, the time and call count will include the handlers for all of the frame's children as well.
* NEW - time, count = GetEventCPUUsage(["event"]) - Returns the time used and number of times the specified event has been triggered. If 'event' is omitted, the time and count will be totals across all events.
* NEW - ResetCPUUsage() - Reset all CPU profiling statistics to zero.

GetFunctionCPUUsage, GetFrameCPUUsage and GetEventCPUUsage look very promising.


Drome

PS Have a great long weekend if you get one!
Report comment to moderator  
Reply With Quote
Unread 05-25-07, 12:02 PM  
sleepingferret
A Kobold Labourer

Forum posts: 0
File comments: 2
Uploads: 1
No changes were made to the API code that affect this mod, as of the patch from 05/22/07 (WoW version 2.1). Although unless you enable the load outdated add-ons option, this mod will not function as the TOC files are not updated (unless you choose to manually do so).

The macro coding changes that affect this mod however, aren't many but should be noted as followed.

1) Just as general note for making custom buttons using /cast
- You must now type out the spell name as displayed in game (i.e /cast Flash Heal)

That being said, here are a few macros you can use along with this mod to make casting Power Word: Shield on yourself or your raid/party members with ease, post patch 2.1.

For yourself:
_shieldself,macro,472,/cast [target=player] Power Word: Shield

Then just add the _shieldself custom button to your player group in XUB.

For party/raid members and party pets:
_shieldparty,macro,472,/cast [target=party#] Power Word: Shield
_shieldpartypet,macro,472,/cast [target=partypet#] Power Word: Shield
_shieldraid,macro,472,/cast [target=raid#] Power Word: Shield

Again just add the buttons to the appropriate group in XUB.

A friendly reminder however, as XUB only provides single "/" command macro functions you will not be able to see the spell cooldown or if your intended target is in range or not with the above macros. So although they will allow restore the "one click" Power Word: Shield capability that we have all used to save countless lives, use with caution and know where your allies are.

2) Remember also for macros using /cast [target=UnitID] <spellname> the 2.1 patch now allows multiple arguments to [target=UnitID]. Not really useful for those using XUB, but something to keep in mind for any macros you make for any other action bars.

The present documentation that is included with XUB will still provide all the necessary information for users to get group or self buttons up. Also XUB's formatting of spell names still works for group and self buttons, just not custom buttons (see notes above).

Example XUB Setup for 70 Priest (uses custom macros from above)

Example Player Buttons:
self,InnerFire,*
self,Renew,*
self,FlashHeal,*
self,_shieldself,*
self,AbolishDisease,*
self,DispelMagic,*
self,PrayerofHealing,*

Example Party Buttons:
party,Renew,*
party,FlashHeal,*
party,GreaterHeal,*
party,_shieldparty,*
party,AbolishDisease,*
party,DispelMagic,*
party,BindingHeal,*
party,PrayerofMending,*

Example Party Pet Buttons:
partypet,Renew,*
partypet,FlashHeal,*
partypet,_shieldpartypet,*
partypet,AbolishDisease,*
partypet,DispelMagic,*

Example Raid Buttons:
raid,FlashHeal,*
raid,_shieldraid,*
raid,AbolishDisease,*
raid,DispelMagic,*
raid,PrayerofMending,*

Note: For raid use you may want to use a specific Rank of flash heal to save mana and cut down on overhealing that occurs in raids.

For Example:
raid,FlashHealRank6,*

Now that takes care of the button setup, but they aren't shown yet. Well remember the name of the profile you gave your character when you first ran XUB in game? You used the /xub p <profilename> command to assign one.

Well again according to XUB's documentation, all you need to do now is in the profile window:

<profilename>,<targetframe>,<XUB group name>

So for my examples:
<profilename>,player,self
<profilename>,party,party
<profilename>,partypet,partypet
<profilename>,raid,raid

And remember make sure XUB knows what unit frames you're using. So if you're using XPerl, then change the XUB options setting for the unit frames to XPerl. Also change the option for the appropriate raid frames as well. Otherwise the buttons won't work or show up.

As a final note, I have noticed that when in a raid if members are moved around by the raid leader and groups reorganized, sometimes one or two XUB button sets become non-functional. The only way I've found to restore functionality to all XUB buttons during raids after group reorganization is to use the /console reloadui command.
Last edited by sleepingferret : 05-25-07 at 12:10 PM.
Report comment to moderator  
Reply With Quote
Unread 05-25-07, 11:11 AM  
paladindrome
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 140
Uploads: 1
Re: Re: Re: Elenesski, any coders docs?

Originally posted by Cosmic Cleric

I was wondering if the performance issues are evident because of the way XUF handles events?
...
Also, why is there a performance issue with XUF when adding/removing/updating raid members?
...
Is it just a quantity of buttons/raid members thing, or something about raid handling (vs. party handling) with WoW that is the issue?
It would be nice to get a developers section up to segregate the development discussions from the end user stuff (everyone should have access if they desire). Does WoWinterface support that or would a developer site be better. I saw an addon that was up on googles developer site - looked nice for the 30 seconds i gave it.

I am hoping that the new profiler tools can help address the performance issues. I am realinterested if it is the Button Update, buff tracking or something else. I can see modulerizing a couple of the larger functions so the profiling is easier - they mention microsecond accuracy in function calls.

Drome
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: