Quantcast
Download
(175 Kb)
Download
Updated: 08-12-19 05:28 AM
Pictures
File Info
Compatibility:
WoW Classic (1.13.2)
Updated:08-12-19 05:28 AM
Created:05-20-19 06:41 AM
Downloads:33,209
Favorites:107
MD5:

ClassicCastbars  Popular! (More than 5000 hits)

Version: v1.0.0
by: wardz [More]

Adds castingbars to the target frame and nameplates in Classic World of Warcraft.
Timers may not always be 100% accurate due to API limitations.


Update: Blizzard removed the ability to distinguish between spell ranks in the combat log, so now cast times are always based on the highest rank. Also, there's no way to reliably detect fakecasting. So cast timers are basically very inaccurate now, but the addon can still be useful to know what the enemy are casting so you don't interrupt into Hearthstone or something.

if you only care about cast info such as name of the spell being cast, you can enable "Show Cast Info Only" under the options. This option will disable all timers. If you set the castbar height to zero aswell it will only show the spell name and icon instead of the whole bar.


Options
Castbars have configurable size, positioning, textures and more.
Type `/castbar` or go to `Escape -> Interface Options -> AddOns -> ClassicCastbars` to open options.


Contributing

- Help translate.
- Github

v1.0.0:
- Add support for Tukui & Perl unit frames.
- Add options for changing castbar colors.


v1.0.0b-next.6:
- Fixed certain spells like summon warlock pet not being tracked.
- Added option to change cast icon position.
- Memory usage improvements.
- Updated embedded libs.


v1.0.0b-next.5:
- Blizzard removed the ability to distinguish between spell ranks in the combat log, so now cast times are always based on the highest rank.
This change also breaks being able to retrieve cast times for other player's spells, so now the addon uses a custom made "database" of all the spells instead.
If you see any spells missing or invalid cast times please let me know and I'll fix it asap.
- Improved a lot of the default settings and nameplate castbar scaling. All old settings from beta will be wiped on upgrade.
- Fix custom border textures not being hidden when using simple style option.
- Minor improvements to pushback detection. (Note that this detection is default turned off, see /castbars)
- Minor improvements to options panel.
- Castbar will now truncate long spell names that exceeds the castbar's width.
- Channeled spells now have a green statusbar color like on retail.
- Added korean translations. (Thanks to syj401)


v1.0.0b-next.4:
- Fix incorrect cast times for certain NPC casted abilities that shares name with player abilities.
- Minor update to localizations.


v1.0.0b-next.3:
- Fix castbar not being stopped on crowd controls.
- Fix castbar timer & spark not always being updated while in test mode.
- Fix target anchor not working with Aftermathh & Luna unit frames.
- Add missing RU translations (Thanks Hubbotu)
- Add option to only show cast info without any timers.
- Pushbacks are now ignored for mobs if cast pushback option is enabled. (Most or all mobs have zero pushback).


v1.0.0b-next.2:
- Fix castbar not being stopped on interrupts. (Crowd Controls still won't stop it, I'll try to add a feature for it later)
- Reduced cast time for certain spells that have talented cast reductions.
- Added Russian translations to options. (Thanks to Hubbotu!)
- Added LibSharedMedia support, you can now change border/statusbar texture and text font in the options panel. (still WIP)
- Added option for setting font size.
- Castbar option groups are now listed in a tree view to make navigating easier.
- Reset all settings button now have a confirmation popup.


v1.0.0b-next.1:
- Fixed a typo/oversight that caused spells to always return rank 1.
- Fix addon not loading due to incorrect folder structure in previous uploaded zip file.


v1.0.0 beta:
- Channeled casts are now inversed on the castbar like on retail.
- Channeled casts should now work with non-english game clients.
- Removed slash command options, there's now a GUI for all options (type /castbars to open it)
PS: custom settings from old version will be reset on upgrade due to major changes.
- Added option to show spell rank.
- Added option to hide spell timer text.
- Added option to set castbar spell icon size.
- Added option to hide castbar borders.
- Added option to set castbar width and height.
- Added option to detect spell pushback & cast decreases. (WIP/Experimental. Default off)
- Misc minor improvements & fixes.


v1.0.0 alpha:
- Add detection for channeled casts (WIP).
- Fix castbar position and scale for nameplates.
- Castbar countdown text is now placed inside the castbar frame instead of outside.
- Target castbar is now dynamically placed based on how many auras are visible. (WIP)
- Add options for setting castbar position by XY values. Using this will turn off automatic positioning.
- Add options for toggling castbars for target frame and nameplates.
- Optimizations for cast refreshing.

v1.0.0 pre-alpha:
- initial release.
Archived Files (10)
File Name
Version
Size
Author
Date
1.0.0b-next.6
241kB
wardz
08-10-19 05:36 AM
1.0.0b-next.5
171kB
wardz
08-09-19 05:23 AM
1.0.0b-next4
131kB
wardz
06-11-19 03:28 PM
1.0.0b-next.3
131kB
wardz
06-06-19 08:14 AM
1.0.0b-next.2
130kB
wardz
06-03-19 08:57 AM
1.0.0b-next1
106kB
wardz
05-30-19 10:58 AM
1.0.0b-next.1
108kB
wardz
05-30-19 10:52 AM
1.0.0b
108kB
wardz
05-30-19 05:31 AM
1.0.0a
7kB
wardz
05-23-19 02:14 AM
0.2
5kB
wardz
05-20-19 06:41 AM


Post A Reply Comment Options
Unread 08-10-19, 02:22 PM  
wardz
A Murloc Raider
 
wardz's Avatar
AddOn Author - Click to view AddOns

Forum posts: 8
File comments: 12
Uploads: 6
Re: Castbar Timing

Originally Posted by Drake5280
Hi! Love the addon but it seems the cast time is way off...when i target myself for instance, My cast of Healing Wave lets say is completed but in my Target Frame it says i'm still casting...it seems to be off by 1/2 a second or so. Can you look into this? I've added a Screen shot to show

https://imgur.com/a/LT282KM
See the update note on addon's front page. Cast times are now always based on the highest spell rank in the game, so for Healing Wave (Rank 10) it's 3 seconds or so. This is not fixable unless Blizzard changes their API.


Originally Posted by Fedaygin
Howdies. Won't let me download the latest Version: 1.0.0b-next.6 yet at 10.8.2019 14:55 EEST.

EDIT: Nvm i think it gives the older ones as popup cause of Update is Pending atm. I noticed it at my 'Favorites' list


Kindly: Fedaygin

Yeah, that happens when a new file upload is pending approval. Usually takes an hour.
Last edited by wardz : 08-10-19 at 02:33 PM.
Report comment to moderator  
Reply With Quote
Unread 08-10-19, 01:28 PM  
Drake5280
A Kobold Labourer

Forum posts: 0
File comments: 8
Uploads: 0
Castbar Timing

Hi! Love the addon but it seems the cast time is way off...when i target myself for instance, My cast of Healing Wave lets say is completed but in my Target Frame it says i'm still casting...it seems to be off by 1/2 a second or so. Can you look into this? I've added a Screen shot to show

https://imgur.com/a/LT282KM
Last edited by Drake5280 : 08-10-19 at 01:32 PM.
Report comment to moderator  
Reply With Quote
Unread 08-10-19, 05:56 AM  
Fedaygin
A Defias Bandit
 
Fedaygin's Avatar

Forum posts: 2
File comments: 7
Uploads: 0
Offers Zip Files before 10.8.2019 update.

Howdies. Won't let me download the latest Version: 1.0.0b-next.6 yet at 10.8.2019 14:55 EEST.

EDIT: Nvm i think it gives the older ones as popup cause of Update is Pending atm. I noticed it at my 'Favorites' list


Kindly: Fedaygin
__________________
​"Recycle to Help the Planet & Don't use Plastic Bags & Bottles"
Last edited by Fedaygin : 08-10-19 at 06:06 AM.
Report comment to moderator  
Reply With Quote
Unread 08-09-19, 08:20 AM  
Elegen
A Kobold Labourer

Forum posts: 0
File comments: 2
Uploads: 0
Re: Re: Addon Update

Originally Posted by wardz
Originally Posted by Elegen
Will this be updated for launch? I saw the update note on the main page but as of today's stress test it looks like the addon is still not working. So, I assume it hasn't been updated since that note was added.
Uploaded an update for it now.
Thanks! Can confirm its working now.
Report comment to moderator  
Reply With Quote
Unread 08-09-19, 05:41 AM  
wardz
A Murloc Raider
 
wardz's Avatar
AddOn Author - Click to view AddOns

Forum posts: 8
File comments: 12
Uploads: 6
Re: Addon Update

Originally Posted by Elegen
Will this be updated for launch? I saw the update note on the main page but as of today's stress test it looks like the addon is still not working. So, I assume it hasn't been updated since that note was added.
Uploaded an update for it now.
Report comment to moderator  
Reply With Quote
Unread 08-08-19, 08:48 PM  
Elegen
A Kobold Labourer

Forum posts: 0
File comments: 2
Uploads: 0
Addon Update

Will this be updated for launch? I saw the update note on the main page but as of today's stress test it looks like the addon is still not working. So, I assume it hasn't been updated since that note was added.
Report comment to moderator  
Reply With Quote
Unread 05-30-19, 04:54 PM  
puda74
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 4
Uploads: 2
Nice Updates. Working very well with Zperl.
Report comment to moderator  
Reply With Quote
Unread 05-28-19, 05:24 AM  
wardz
A Murloc Raider
 
wardz's Avatar
AddOn Author - Click to view AddOns

Forum posts: 8
File comments: 12
Uploads: 6
Re: LUA Error

Originally Posted by jackfrost7
Getting the following error only when using zperl

Code:
Message: Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:67: attempt to compare number with nil
Time: Mon May 27 21:19:23 2019
Count: 2
Stack: Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:67: attempt to compare number with nil
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:67: in function `AdjustTargetCastbarPosition'
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:89: in function `StartCast'
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:122: in function `StartAllCasts'
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:150: in function `StoreCast'
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:168: in function <Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:161>
(tail call): ?

Locals: self = <unnamed> {
 NAME_PLATE_UNIT_REMOVED = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:271
 StoreCast = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:135
 PLAYER_ENTERING_WORLD = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:199
 StopCast = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:107
 GetCastbarFrame = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:32
 ToggleUnitEvents = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:208
 db = <table> {
 }
 DeleteCast = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:154
 NAME_PLATE_UNIT_ADDED = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:264
 PLAYER_GUID = "Player-4618-0000ECE3"
 COMBAT_LOG_EVENT_UNFILTERED = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:161
 AdjustTargetCastbarPosition = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:47
 StartAllCasts = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:115
 0 = <userdata>
 StopAllCasts = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:127
 StartCast = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:75
 PLAYER_TARGET_CHANGED = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:254
}
castbar = <unnamed> {
 0 = <userdata>
 Border = <unnamed> {
 }
 Flash = <unnamed> {
 }
 showCastbar = true
 _data = <table> {
 }
 Icon = <unnamed> {
 }
 startChannelColor = <table> {
 }
 finishedCastColor = <table> {
 }
 nonInterruptibleColor = <table> {
 }
 Text = <unnamed> {
 }
 Timer = <unnamed> {
 }
 BorderShield = <unnamed> {
 }
 Spark = <unnamed> {
 }
 startCastColor = <table> {
 }
 flashColorSameAsStart = true
 finishedColorSameAsStart = true
 failedCastColor = <table> {
 }
}
parentFrame = XPerl_TargetportraitFrame {
 0 = <userdata>
 portrait3D = XPerl_TargetportraitFrameportrait3D {
 }
 gradient = <unnamed> {
 }
 portrait = XPerl_TargetportraitFrameportrait {
 }
}
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to compare number with nil"
Only when target is enabled, not nameplate... disabling target and enabling nameplate lets that part work (which is the part I use so I'm fine, just letting you know).

Not sure if this is on your addon or on zperl... I'm guessing zperl, but maybe you'll want to fix it anyways because people like non-blizz unit frames.

Thanks for the addon btw.
Thanks for the report. Next version should fix it but im gonna postpone uploading it until I get access to the stress test/beta servers again, incase there's any new errors.

Edit: Should be fixed now.
Last edited by wardz : 05-30-19 at 06:31 AM.
Report comment to moderator  
Reply With Quote
Unread 05-27-19, 07:37 PM  
jackfrost7
A Kobold Labourer

Forum posts: 0
File comments: 6
Uploads: 0
LUA Error

Getting the following error only when using zperl

Code:
Message: Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:67: attempt to compare number with nil
Time: Mon May 27 21:19:23 2019
Count: 2
Stack: Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:67: attempt to compare number with nil
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:67: in function `AdjustTargetCastbarPosition'
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:89: in function `StartCast'
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:122: in function `StartAllCasts'
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:150: in function `StoreCast'
Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:168: in function <Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:161>
(tail call): ?

Locals: self = <unnamed> {
 NAME_PLATE_UNIT_REMOVED = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:271
 StoreCast = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:135
 PLAYER_ENTERING_WORLD = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:199
 StopCast = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:107
 GetCastbarFrame = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:32
 ToggleUnitEvents = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:208
 db = <table> {
 }
 DeleteCast = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:154
 NAME_PLATE_UNIT_ADDED = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:264
 PLAYER_GUID = "Player-4618-0000ECE3"
 COMBAT_LOG_EVENT_UNFILTERED = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:161
 AdjustTargetCastbarPosition = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:47
 StartAllCasts = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:115
 0 = <userdata>
 StopAllCasts = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:127
 StartCast = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:75
 PLAYER_TARGET_CHANGED = <function> defined @Interface\AddOns\ClassicCastbars\ClassicCastbars.lua:254
}
castbar = <unnamed> {
 0 = <userdata>
 Border = <unnamed> {
 }
 Flash = <unnamed> {
 }
 showCastbar = true
 _data = <table> {
 }
 Icon = <unnamed> {
 }
 startChannelColor = <table> {
 }
 finishedCastColor = <table> {
 }
 nonInterruptibleColor = <table> {
 }
 Text = <unnamed> {
 }
 Timer = <unnamed> {
 }
 BorderShield = <unnamed> {
 }
 Spark = <unnamed> {
 }
 startCastColor = <table> {
 }
 flashColorSameAsStart = true
 finishedColorSameAsStart = true
 failedCastColor = <table> {
 }
}
parentFrame = XPerl_TargetportraitFrame {
 0 = <userdata>
 portrait3D = XPerl_TargetportraitFrameportrait3D {
 }
 gradient = <unnamed> {
 }
 portrait = XPerl_TargetportraitFrameportrait {
 }
}
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to compare number with nil"
Only when target is enabled, not nameplate... disabling target and enabling nameplate lets that part work (which is the part I use so I'm fine, just letting you know).

Not sure if this is on your addon or on zperl... I'm guessing zperl, but maybe you'll want to fix it anyways because people like non-blizz unit frames.

Thanks for the addon btw.
Report comment to moderator  
Reply With Quote
Unread 05-23-19, 08:48 AM  
puda74
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 4
Uploads: 2
Nice, i love it.

/castbar target pos 0 -20
Is just under Target of Target frames btw.

Great job man
Report comment to moderator  
Reply With Quote
Unread 05-22-19, 12:45 AM  
wardz
A Murloc Raider
 
wardz's Avatar
AddOn Author - Click to view AddOns

Forum posts: 8
File comments: 12
Uploads: 6
Ok, so I got into the stress test atleast. I'll upload a version tomorrow with all the fixes and options.

Edit: Uploaded it now, let me know if there's any issues.
Last edited by wardz : 05-23-19 at 02:48 AM.
Report comment to moderator  
Reply With Quote
Unread 05-21-19, 06:58 PM  
puda74
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 4
Uploads: 2
I just removed these lines.

-- self:RegisterEvent("NAME_PLATE_UNIT_ADDED")
-- self:RegisterEvent("NAME_PLATE_UNIT_REMOVED")

and..

-- function addon:NAME_PLATE_UNIT_ADDED(namePlateUnitToken)
-- local unitGUID = UnitGUID(namePlateUnitToken)
-- activeGUIDs[namePlateUnitToken] = unitGUID
--
-- self:StartCast(unitGUID, namePlateUnitToken)
--end

--function addon:NAME_PLATE_UNIT_REMOVED(namePlateUnitToken)
-- activeGUIDs[namePlateUnitToken] = nil
--
-- Release frame, but do not delete cast data
-- local castbar = frames[namePlateUnitToken]
-- if castbar then
-- PoolManager:ReleaseFrame(castbar)
-- frames[namePlateUnitToken] = nil
-- end
--end

And no more nameplates.
Report comment to moderator  
Reply With Quote
Unread 05-21-19, 12:26 PM  
wardz
A Murloc Raider
 
wardz's Avatar
AddOn Author - Click to view AddOns

Forum posts: 8
File comments: 12
Uploads: 6
Originally Posted by Passed
At present, this creates two castbars. one underneath the main UI frame. One over the on screen health bar, it superimposes itself directly over the top. It is also larger than the main window health plate so that becomes completely hidden.


Can you upload a screenshot? I'll try and change the nameplate position for next version, but it's hard for me to fix since I don't have beta access. Any frame positioning are guesses only atm.
Last edited by wardz : 05-21-19 at 12:50 PM.
Report comment to moderator  
Reply With Quote
Unread 05-21-19, 09:01 AM  
Passed
A Kobold Labourer

Forum posts: 0
File comments: 12
Uploads: 0
At present, this creates two castbars. one underneath the main UI frame. One over the on screen health bar, it superimposes itself directly over the top. It is also larger than the main window health plate so that becomes completely hidden.
Report comment to moderator  
Reply With Quote
Unread 05-20-19, 09:43 PM  
wardz
A Murloc Raider
 
wardz's Avatar
AddOn Author - Click to view AddOns

Forum posts: 8
File comments: 12
Uploads: 6
Re: Option to not use castbar on nameplates.

Originally Posted by puda74
Option to turn off nameplate cast bar and just use unitframes.
I don't have beta access so hard for me to add yet, I'll add options once I get in.

Originally Posted by puda74
Very cute.

local names = { Asmongold=1, Chance=1, Esfand=1, Tipsout=1, Joana=1, Ziqoftw=1, Sodapoppin=1, Staysafe=1 }
if names[UnitName("player")] then
C_Timer.After(1800, function()
if not UnitIsDeadOrGhost("player") then
DoEmote("fart")
Shhh
Last edited by wardz : 05-20-19 at 09:44 PM.
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.