What is it?
Coconuts adds a button to your interface that smartly decides a random mount for you. If you're in Outland and have a flying mount, it will pick it instead of your ground mount. Easy switching to a slower mount or to a ground mount if you need to. Also lets you dismount. Used to be called Mount.
What's so special about it and what makes it better than a macro?
Coconuts does not care where your mounts are in your bags or how many you have. It always finds them. It also knows about your mount spells.
Ever have a time where you needed to get on your slow mount? It's easy with Coconuts! Just hold down Shift and Coconuts will now call a slow mount.
Hold down Ctrl while mounted and Coconuts will let you apply Holly or similar such items.
Coconuts supports ButtonFacade and uses LibKeyBound and LibStickyFrames.
Now lets you set what key to hold down to modify it, and has Zone Favorite mounts.
Where do I get it?
The latest beta version is always here. You can get stable versions from WowInterface.
10 points for the Monty Python reference. Made me smile :)
LOL I can't believe I didn't think of that name when I started on the mod months ago. :p I thought of it right when I was posting this thread (I'm a little behind lol I should have posted it a long time ago), so I've decided that 2.0 will be called Coconuts. :)
I've been debating what would be the best way to add those sort of things. Any ideas?
Just rip off the relevant code from AutoBar. AutoBarClassButton.lua has most of the mount code, "Misc.Mount.Summoned" in AutoBarCategory.lua has the codes --> spellName you need. You can make either spell or macro buttons to do the actual summoning.
LOL Not in that sort of detail my friend. More how to display it to the user, how it fits into the categories I already have since they are not mounts, if I even will because they are not mounts. :)
However I do have a question about LibStickyFrames. Mostly I don't think I'm using it right. Frames move and stick, but won't remember their position after a logout. I'm a bit confused about how the callbacks are supposed to be used. I think that's the problem, I'm not using them and was forced to call LibStickyFrames:StartFrameMoving to get the moving to happen which I also don't think is right looking at AutoBar.
...I do have a question about LibStickyFrames ... Frames move and stick, but won't remember their position after a logout.
Most of the code is in Core.lua. You register your frames, and you register for the callbacks.
In the OnStickToFrame callback I call both
bar:StickTo(frame, point, stickToFrame, stickToPoint, stickToX, stickToY)
and
bar:PositionSave()
StickTo remembers the sticking and aplies it on load. it also uses
LibStickyFrames:SetFramePoints(frame, point, stickToFrame, stickToPoint, stickToX, stickToY)
to do the actual sticking. PositionSave remembers the location so if the thing you are sticking to is MIA (disabled by user or whatnot), you are nevertheless positioned correctly.
Simply call LibStickyFrames:SetGroup(true) to start moving, call LibStickyFrames:SetGroup(nil) to stop it.
You can register for OnSetGroup if you need to set flags or something for yourself.
You can trace AutoBar:MoveBarModeToggle() to see this.
Hi nice addon, finally dont need 1 million custom macros for all my chars!
One thing tho, i use CTRL+Z as my hotkey (currently bound to my Mount macro), when i bind it to your addon pressing CTRL ofc shifts to the "mount modifer" options, even if i turn modifiers off. So i have to press CTRL+Z twice to actually get it to mount.
(holding CTRL hides the button, hitting Z shows the button again, hitting z again mounts)
EDIT: ^^^ I wrote this bit before i looked at the code, when unmounted the CTRL isnt for the modifiers, its for the "next best".
I made it work for me by changing line 393 from
local IsNextBestModifierDown = IsControlKeyDown() or IsShiftKeyDown();
to
local IsNextBestModifierDown = IsShiftKeyDown();
I havent looked over the code, but i'm guessing it limits the "next best" to just the Shift modifier instead of shift OR control ? (no need for both, is there?)
Good thought, and it is something I have on the plate for Coconuts (version 2), especially since there are more modifiers (passenger mounts for WotLK). I do realize that it limits the use of ctrl-Key etc bindings, and have been thinking of other ways to do it as well (right click menu being one possibility to add). Hopefully Coconuts won't take too much longer, if it looks like it will I will get the change into Mount.
Personally I have it bound to `. Silly key doesn't do anything otherwise and is nice and close to the movement keys so I don't have to go far. :)
Oh and thanks Toadkiller, that was the problem. Position was no longer stored by WoW so had to store it myself. :) I have the fix going in Coconuts but haven't tested it to my liking for Mount (too much going on in RL at the moment :()
Maybe I'm missing it, but is there any way to make the button for this not be so huge? It really is far too big, and I haven't found an option to resize it. (I notice both it and Minipet got much bigger, both I think with the move to newer libraries -- when Coconut grew out of Mount, in other words.) I'll have to find some other solution if I can't set a different size, because these are about 2-3x too big right now.
LOL while I found that amusing myself, I did finally get that fixed yesterday, spent a lot of my weekend trying to fix that and polish some stuff up in the addons. It only happened if you don't have ButtonFacade. The latest build should be AOK. It was a problem with the common UI that they and Baldrick share. It took me a while to hunt down the exact cause, but it was something silly on my part. Everything *should* be working with the latest build (favorites, zone favorites, button facade support, sticky frames for the most part, libkeybound, the new options) in not let me know.
the last 2 versions from coconuts gave me that error :
..\AddOns\Coconuts\Coconuts.lua line 639:
attempt to index global 'MiniPet' (a nil value)
I don't have the addon minipet, must i ?
Thanks, I've just checked in a fix. That the danger of copy & pasting code *blush*
I also checked in a fix last night for Macs, the embeds.xml said CallBackHandler-1.0 when the directory is actually CallbackHandler-1.0.
Thanks, should be fixed tonight. Also in the version I will be checking in tonight is an addition so that Coconuts will not suggest mounts that the player does not have the riding skill to use. :)
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Coconuts adds a button to your interface that smartly decides a random mount for you. If you're in Outland and have a flying mount, it will pick it instead of your ground mount. Easy switching to a slower mount or to a ground mount if you need to. Also lets you dismount. Used to be called Mount.
What's so special about it and what makes it better than a macro?
Coconuts does not care where your mounts are in your bags or how many you have. It always finds them. It also knows about your mount spells.
Ever have a time where you needed to get on your slow mount? It's easy with Coconuts! Just hold down Shift and Coconuts will now call a slow mount.
Hold down Ctrl while mounted and Coconuts will let you apply Holly or similar such items.
Coconuts supports ButtonFacade and uses LibKeyBound and LibStickyFrames.
Now lets you set what key to hold down to modify it, and has Zone Favorite mounts.
Where do I get it?
The latest beta version is always here. You can get stable versions from WowInterface.
Wiki:
WoWAce Wiki
LOL I can't believe I didn't think of that name when I started on the mod months ago. :p I thought of it right when I was posting this thread (I'm a little behind lol I should have posted it a long time ago), so I've decided that 2.0 will be called Coconuts. :)
I've been debating what would be the best way to add those sort of things. Any ideas?
Just rip off the relevant code from AutoBar. AutoBarClassButton.lua has most of the mount code, "Misc.Mount.Summoned" in AutoBarCategory.lua has the codes --> spellName you need. You can make either spell or macro buttons to do the actual summoning.
However I do have a question about LibStickyFrames. Mostly I don't think I'm using it right. Frames move and stick, but won't remember their position after a logout. I'm a bit confused about how the callbacks are supposed to be used. I think that's the problem, I'm not using them and was forced to call LibStickyFrames:StartFrameMoving to get the moving to happen which I also don't think is right looking at AutoBar.
Most of the code is in Core.lua. You register your frames, and you register for the callbacks.
In the OnStickToFrame callback I call both
and
StickTo remembers the sticking and aplies it on load. it also uses
to do the actual sticking. PositionSave remembers the location so if the thing you are sticking to is MIA (disabled by user or whatnot), you are nevertheless positioned correctly.
Simply call LibStickyFrames:SetGroup(true) to start moving, call LibStickyFrames:SetGroup(nil) to stop it.
You can register for OnSetGroup if you need to set flags or something for yourself.
You can trace AutoBar:MoveBarModeToggle() to see this.
One thing tho, i use CTRL+Z as my hotkey (currently bound to my Mount macro), when i bind it to your addon pressing CTRL ofc shifts to the "mount modifer" options, even if i turn modifiers off. So i have to press CTRL+Z twice to actually get it to mount.
(holding CTRL hides the button, hitting Z shows the button again, hitting z again mounts)
EDIT: ^^^ I wrote this bit before i looked at the code, when unmounted the CTRL isnt for the modifiers, its for the "next best".
I made it work for me by changing line 393 from
local IsNextBestModifierDown = IsControlKeyDown() or IsShiftKeyDown();
to
local IsNextBestModifierDown = IsShiftKeyDown();
I havent looked over the code, but i'm guessing it limits the "next best" to just the Shift modifier instead of shift OR control ? (no need for both, is there?)
(i want to make Shift the modifier for (not)Flying, and alt for "downrank"
Cheers!
Personally I have it bound to `. Silly key doesn't do anything otherwise and is nice and close to the movement keys so I don't have to go far. :)
Oh and thanks Toadkiller, that was the problem. Position was no longer stored by WoW so had to store it myself. :) I have the fix going in Coconuts but haven't tested it to my liking for Mount (too much going on in RL at the moment :()
in lib.xml
<Script file="LibPetAndMountDatabase-1.1lua" />
should be
<Script file="LibPetAndMountDatabase-1.1.lua" />
missed a "." in file name won't load the lib in that state.
the last 2 versions from coconuts gave me that error :
..\AddOns\Coconuts\Coconuts.lua line 639:
attempt to index global 'MiniPet' (a nil value)
I don't have the addon minipet, must i ?
sorry
Thanks, I've just checked in a fix. That the danger of copy & pasting code *blush*
I also checked in a fix last night for Macs, the embeds.xml said CallBackHandler-1.0 when the directory is actually CallbackHandler-1.0.
another bug : the lock button function does not work. i can move the button every time