X-Perl UnitFrames
Patch 6.0.3 compatibility and future of X-Perl
Use latest alpha from WoWAce for using in Patch 6.0.3
http://www.wowace.com/addons/xperl/files/
May still has problems but for most cases it should be working(at least was tested on beta), if not, clearing old setting by killing(and backup) XPerlxxxxxxx.lua in the WTF directory of your WoW installlation and try again with fresh new default setting, thanks your patience.
If still someone want to help Zeksie for he earns his donates from X-Perl then that's fine for Zek and X-Perl, but seems like it's time to cut him out as no one want to help X-Perl anymore (as many of users already heard about the mess of this poor addon), I guess.
I don't know X-Perl will still be continue or not(it's highly possible it won't be, as the new maintainer Resike continued the developing and forked to Z-Perl, and he said he won't abandon his addons), I won't force everyone should must to use Resike's one at this point, as his Z-Perl isn't stable yet, and for some reasons, I don't think he want to port his fixes back to X-Perl as he knows about how Zek did about his addons and everyone who helped Zek to maintaining this poor addon...and, of course...X-Perl may broken again when next time Blizzard's patches released..... /sigh
(At this point, I won't force everyone who used X-Perl to go Z-Perl until it's more stable than now, feel free to use Z-Perl or other Unitframe addons if you want, and do NOT hold your breathe about X-Perl too much, too. I already lost my hope on X-Perl, at least I can trust Resike and Z-Perl now...)
Sincerely,
PlayerLin - Maintainer of X-Perl but not a proper skilled coder, just a locale translator and do some shitty PRs. :(
Bug Reporting
Please use the Ticketing System on WoWAce Here and avoid posting bugs using comments on Curse because they're difficult to track and they will probably get lost.
Use a good error catcher (like BugSack from files.wowace.com) and provide the full error text, and give as much information as possible to recreate the problem. Don't assume We know what you're talking about with some three word report.
Introduction
Perl, with Extra stuff. Much enchanced from Nymbia's Perl UnitFrames, and a complete replacement for Blizzard's default unit frames, including raid frames and raid tools, with little remaining of the original Nymbia code.
- Range Finder (combined with optional health check and/or debuff check) for all frames based on spell or item range test.
- HoT Monitor will highlight units clearly that have ''your own'' active Heal over Time spells. Regardless of how many other heal over time buffs are on the raid members, you can keep track of your own ones and when they expire.
- Debuff Highlighting in standard debuff colours on all friendly frames. Priority given to show debuffs that ''you'' can cure first.
- Raid Frames, buff icons, MT list units and some other portions or X-Perl are Created on demand. Saving a lot of time and memory at system startup. Defering the creation of many parts of X-Perl to when they are actually required. And of course, most often outside of raids they are never required and are never created.
- Raid Target icon support for Target, Target's Target, MT Targets.
- Raid Tooltip will show combat rezzers available (druids with Rebirth ready (or very soon available) and any normal rezzers out of combat) if you bring up tooltip of a dead person.
- In-combat indicators for all units.
- 3D Portraits for player, pet, target, focus, party. Optional. Of course this may degrade your framerate somewhat because you are displaying more 3D character models that without this option. But some like it pretty, and it does look cool.
- Red and Green combat flashes for frames when player, pet, target, party, partypets, raid take damage/heals. Useful indication of things happening.
- Added '''time left''' on party member/target buffs/debuffs when in a raid, these depend somewhat on CTRA sending appropriate information over the addon channel, although some of it can be determined at run time by X-Perl, when a player gets a buff for example, we know how long it should last, and therefor when it should expire.
- Totally new options window including all X-Perl options and access via minimap icon and the /xperl splash command.
- Configurable colours for borders and backgrounds. Including class coloured names, and configurable reaction colours.
Much care has been taken with code size, memory load, memory usage per cycle and so on. LuaProfiler/OnEvent mods used extensively and regularly to ensure that X-Perl does not do more work than is absolutely necessary.
Assists View
Will show anyone from raid assising you with your target, and can also show healers or all plus known enemies targetting you.
Tooltips for the same also available (on player and target frames) if you prefer to not use the main window.
MT Targets
Replaces CTRA MT Targets window, and doubles as a replacement for the Perl RaidFrames warrior targets.
Indicator shows which target you are on.
Frames will be coloured to show if tanks have duplicate targets.
Casting Monitor
(WORK IN PROGRESS)
Shows selected classes (defaults to healer classes) in a list (much like the MT List), but with some differences.
Shows mana bars and cast bars on left. Their targets on right. Health bar as normal, but a secondary small red bar on targets which shows the maximum single hit this unit has received since entering combat. The secondary bar will extend downwards from their current HP level down to as far as zero.
A green name on the targets indicates this is the same target that you have. You can click on casters or their targets as expected.
For druids, right clicking on a caster will cast Innervate on them.
For shamans, right clicking on a caster will cast Mana Tide Totem. Check the * indicator to see if they're in your group.
All bars can be re-sized in X-Perl main options (Monitor section).
Totals can be toggled (from the 'T' minibutton at top of frame) which gives overview of raid mana status.
Raid Admin
(WORK IN PROGRESS)
Save/Load raid roster setups Only does direct save and load for the moment, but more to come (templates and such).
Item Check
Replacement for /raitem /radur /raresist /rareg. Use the old commands before, or drop items in the left item list.
Query button will perform /raitem on all ticked items (query always includes dur and resists) and you can then view and review all the results whenever, without having to re-query each item.
Includes everyone in raid, so you don't have to work out who doesn't have items, it'll list them with 0 instead of no entry.
Active Scanner to check raid member's equipment for the item selected. So you can be sure that people actually have the item worn (Onyxia Cloak for example), without having to go round single target inspecting everyone who 'forgot' to install CTRA for the 50th raid in a row.
Grim Reaper
Removed from X-Perl, but continues as it's own standalone Ace mod.
[http://www.wowace.com/projects/grim-reaper/]
More Buffing Features
Can be found in my new universal buffing mod, ZOMGBuffs
do not post the function post the error, because the function doesn't tell me anything.
Blizzard updates unit power in on update i believe, but unit health on UNIT_HEALTH_FREQUENT only.
In r634 I really do not like the new power bar in the player frame it's really choppy and laggy now especially for energy and mana. Is this really needed to reduce the CPU usage across the board in 25 mans?
ever since i've updated my pc i statred to have frame problems , it's cuts only during combat when am in a group or raid . i turned all my addons off and tryed again and still the same problems , my fps reads high and low alot during combat . once i've turned off the Xperl and activte the rest of the addons , everything works fine, but if it's on again , the same problem !
Can anyone help me plz ?
It's probalby returning 0 for max power on first call, it was a common problem, if it returns 0 xperl ignores it to avoid a div by 0 error, so it won't update until second time when value isn't 0. Trust me though, you don't want to remove the div by 0 checks in MoP.
Or maybe transparency or something is 0 initially? dunno, still not sure what code you're talking about. is this the thing you say gives a lua error?
doing excellent work, you give me hope for xperl. i'll talk to zek about adding you to authors list.
Please try r634, trimmed alot of junk out of the system.
So I disabled the onupdate function for the raidframes, and noticed a massive decrease in cpu usage. It was updating all raidframes health bars etc, everytime it was called.
So far, the only issue this has caused is buffs not updating if you toggle the setting on and off. I imagine we can just do that work during the actual toggle, and itll be g2g.
I've tweaked the player frame, am now working on the raid frames.
Seems that for some reason the raid frame thinks its ok to do a shit to of stuff to each subframe on every onupdate call. Thats prolly why with 25 people its going nuts on cpu usage.
HP should only be updated when UNIT_HEALTH_FREQUENT (or just UNIT_HEALTH if really conservative although blizzards default frames use UNIT_HEALTH_FREQUENT). Onpudate seems like major excess
power only fired on UNIT_POWER events.
I have a nagging feeling that a lot of our performance issues are related to how we are calling the update health/mana bar functions. These functions are very intensive, and seem to be called on every OnUpdate, causing them to be run continually rather then on events.
25 man heroic raids especially fights like spine, or zonozz or yorsahj when adds are up are pretty big. xperl starts consuming way more cpu then other unit frame mods. it was like 20x worse when sontix tried to fix some stuff so i reverted his fixes at one point. but it still stands for improvement. not something that really can be fixed on beta right now as they are only testing 10 mans
i usually cpu profile with a broker module, although it doesn't tell me what function is using the cpu, only what mod and how much. determining the function i don't know what to use. http://wow.curseforge.com/addons/brokercpu/
I took minor cracks at reducing cpu usage, like xperl used to check players GUID EVERY event for no good reason, i got the GUID on login instead then saved it, then just checked saved value for a speed increase at cost of what, few bytes of memory? But i think xperl needs a lot more then that to fix it heh.
Also, any hints as to where the biggest performance issues lie would be great.
I've got a super high end rig, but I have a feeling that x-perl eats way more cpu then it needs to be.
http://tortoisesvn.net/ is what I use for my svn management on windows.
What addon(s) are good for profiling? I'd be more the willing to take a wack at reducing cpu usage.
What tharai says
the problem with your fixes sontix is you never want to really commit em, just host a seperate package then what makes it hard to even merge your fixes into trunk is that you don't even have diffs, we pretty much have to replace all the files and hope for the best :\...it's better to review diffs, check other commits for errors and fix em, get more eyes and perspectives on stuff. plus you get version control, prevent 2 authors from replacing one persons fix with a regression because their files overwrite someone elses changes. etc.
as for all those issues you list, those are super minor really. that stuff is just out of date. honestly ora2 should be stripped, so should CTRA and a bunch of other crap to be honest. I think it's a good time as any to remove just about anything that isn't 100% from the feature set and slim things down, xperl uses enough cpu without supporting obsolete features that don't work or aren't used by anyone anymore. no one uses ora2 anymore.
also, what error for "why the hell i'm getting an error on beta everytime fade bars is enabled and i use mana / lose hp ?" div by 0? it's possible i missed one place to fix that during 4.3 beta. blizz was originally giong to let that go live in 4.x but pulled it in last beta build since al the authors didn't fix all cases of it yet. it's re-enabled in 5.0 and that's probably a spot that's not fixed yet. an actual error report will be nice to fix that.
@sontix
What "real" bugs? The whole point of having a svn is multiple people can work on it at the sametime. I haven't gotten around to rolling a monk and crafting a ui for it.
@sontix
My mother language is not English too, do I sounds like a fxxxing idiot? :P
(Or maybe like an asshole I admit. xD)
Using a SVN program to do SVN repo works is really good idea if you really want to help fixing X-Perl.
Xperl does do duplications cause of it's module design, so you could for most part use any combinatio of files and it'll work without a dependancy missing (minus actual core file).
Some were also done for performance purposes. Although performance is a real sore spot with xperl. whenever modifying it, consider the performance impact of your changs because it's very easy for one simple change to make fps so bad the addon is unusable. Sontix, it's just time you get a good svn client. if you work out of same branch, you don't do double work, plus you can commit changes he misses and what not. instead of needing one of us to commit changes.
The version check shit only useless if the "updated & fixed X-Perl" do not works in Cata 5.0, but it unlikely so just not really needed, unless, you guys added something works with 4.x and 5.0, then it should be ported and added version checks.
About the duplicate functions in every XPerl files, like I were said, X-Perl addons can loaded individually but due X-Perl do not use any ext-libs for some basic shit about Blizzard APIs so that's result.(Yeah, X-Perl was NOT an Ace-libs addon that when it got hosted on WoWAce, ever. I'm not really sure but looks like that for some reasons...) Yeah, if you try clean up without knowing them and do something like moving them to other lua and let all X-Perl modules/sub-addons accessing them, you may get shit happens and I won't be surprised.
Also, like the r630/r631 fixes cause shit happens in Raid... I would fear if the memory leaks hided somewhere even X-Perl has been 5.0 compatible without Error/Broken shits happened, it doesn't means no shit happens on lower systems in some heavy-resources-needed situations, I guess...
Maybe sontix and Tharai need to sit down on Vent and collaborate so you guys don't do double work :)
@sontix
Already done, check out my branch...