Download
(3Kb)
Download
Updated: 07-18-18 01:29 AM
Pictures
File Info
Compatibility:
Battle for Azeroth (8.0.1)
Shadows of Argus (7.3.0)
Tomb of Sargeras (7.2.0)
Return to Karazhan (7.1.5)
Legion (7.0.3)
Updated:07-18-18 01:29 AM
Created:02-02-10 10:42 AM
Downloads:32,039
Favorites:114
MD5:
Categories:Action Bar Mods, Miscellaneous

ncHoverBind  Popular! (More than 5000 hits)

Version: 1.4.2b
by: nightcracker, Coote

Now maintained by TMcMahon51. See thread here.


ncHoverBind is a simple addon that does one thing: binding buttons on mouseover. You can mouse over actionbuttons, spells in the spellbook and macro's in the macro pane and bind them while hovering. You can bind keys, mousebuttons 4 and 5 and the scrollwheel with this addon. If you made a mistake in binding, you can just press "Discard" and your old bindings are loaded. Real simple!


Usage:
Download and install. To start use either /hb or /hoverbind. Hover over buttons, spells or macro's and press a key, scroll with the mouse or press mousebutton 4 or 5. After you've bound your spell/items/macro's press "Save bindings" and your done!
If you use HealBot, use /hvb instead.

Upcoming features:
- Items
Suggest features!

Credits:
FatalEntity

1.4.2b
--
Bug fix for additional macros

1.4.2
--
TOC bump for Legion

1.4.1
--
6.1 TOC Bump

1.4.0
--
Updated for WoW 6.0 and Warlords of Draenor

1.3.1
--
5.4 .TOC bump

1.3.0
--
MoP compatibility.
.TOC bump

1.2.2
--
Added check to avoid interference with HealBot.

1.2.1
--
.TOC bump
Should be mostly error free now.

1.2.01
--
Reuploaded as .zip. Sorry to any MMO-Minion users, was unaware it couldn't handle .rar files.

1.2
--
Fixed Spellbook binding.
Added in Networm's fixes.

1.1
--
Fixed the keybinding mechanic so it correctly binds to the "hidden" keybinds. Also works on pet and shapeshift buttons now.
Optional Files (0)


Post A Reply Comment Options
Unread 06-23-10, 11:29 AM  
haylie
A Scalebane Royal Guard
 
haylie's Avatar

Forum posts: 417
File comments: 15
Uploads: 1
Heya nightcracker, I'm going to be using your mod for my bindings and I have a question. When I bind a spell from my spellbook (let's say, Arcane Shot Rank 1), once I gain a new rank of the spell (like rank 2) will the binding still be attached to Rank 1 or switch over automatically to Rank 2? Cause it would be a bit annoying to rebind each spell every time I gain a new rank.
Report comment to moderator  
Reply With Quote
Unread 07-22-10, 12:36 AM  
Slaxi81
Guest

Join Date: Not Yet
Forum posts: 0
File comments: 0
Uploads: 0
Great,

thank you for this!


Have a nice day

Slaxi
Report comment to moderator  
Edit/Delete Message Reply With Quote
Unread 10-19-10, 11:22 PM  
wings4tw
A Defias Bandit

Forum posts: 2
File comments: 8
Uploads: 0
Still works in 4.01 !!
Long live Hoverbind!
Report comment to moderator  
Reply With Quote
Unread 10-22-10, 08:56 PM  
Kogasu
A Kobold Labourer
 
Kogasu's Avatar

Forum posts: 0
File comments: 109
Uploads: 0
Existing binds do work, however binding from the "new" spellbook does not.

An update would be much appreciated
Report comment to moderator  
Reply With Quote
Unread 10-23-10, 10:00 PM  
Coote
A Scalebane Royal Guard
 
Coote's Avatar
AddOn Author - Click to view AddOns

Forum posts: 440
File comments: 69
Uploads: 7
Originally posted by Kogasu
Existing binds do work, however binding from the "new" spellbook does not.
I'll look into this sometime tomorrow. My main focus is getting ncSpellAlert back to working condition, since a lot of spell IDs have been changed.
__________________

"This is the fifteen-thousandth four hundredth and ninety-eighth occurence".
Report comment to moderator  
Reply With Quote
Unread 11-06-10, 01:53 PM  
networm
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 7
Uploads: 2
Code:
bind:SetScript("OnKeyUp", function(self, key) self:Listener(key) end)
bind:SetScript("OnMouseUp", function(self, key) self:Listener(key) end)
Code:
-- chaged the following two Script from OnKeyUp to OnKeyDown to fix can't bind a combine key such as SHFT+T, ALT+SHIFT+Q
bind:SetScript("OnKeyDown", function(self, key) self:Listener(key) end)
bind:SetScript("OnMouseDown", function(self, key) self:Listener(key) end)
Code:
-- fix can't bind anykey when a macro isn't available
-- must comment the line in OnHide function
-- such as you are Fury Warrior and you have a macro
-- #showtooltip /cast BladeStorm
-- you can't bind any key to this button because OnHide is not called forever
bind.button.bindings = {GetBindingKey(bind.button.bindstring)}
GameTooltip:SetScript("OnHide", function(self)
self:SetOwner(bind, "ANCHOR_NONE")
to fix this just move "bind.button.bindings = {GetBindingKey(bind.button.bindstring)}" ahead from SetScript("OnHide") because a macro which can't use didn't have any tooltip so it can't trigger OnHide

Code:
		function bind:Listener(key)
			-- fix bind the SCREENSHOT key, now press SCREENSHOT key will take a screen shot
			-- GetBindingFromClick
			if GetBindingByKey(key) == "SCREENSHOT" then
				RunBinding("SCREENSHOT");
				return
			end

			-- change behavior to bind only one key for one button
			if #self.button.bindings > 0 then
				for i = 1, #self.button.bindings do
					SetBinding(self.button.bindings[i])
				end
				self:Update(self.button, self.spellmacro)
				if self.spellmacro~="MACRO" then GameTooltip:Hide() end
			end

Code:
	if not bind.enabled then
		bind:Activate()
		StaticPopup_Show("KEYBIND_MODE")
		-- fix issue that enter /hb it doesn't display bind tooltip when mouse is over action button
		local stance = ShapeshiftButton1:GetScript("OnClick")
		local pet = PetActionButton1:GetScript("OnClick")
		local button = SecureActionButton_OnClick
		local focus = GetMouseFocus()
		if focus.IsProtected and focus.GetObjectType and focus.GetScript and focus:GetObjectType()=="CheckButton" and focus:IsProtected() then
			local script = focus:GetScript("OnClick")
			if script==button then
				bind:Update(focus)
			elseif script==stance then
				bind:Update(focus, "STANCE")
			elseif script==pet then
				bind:Update(focus, "PET")
			end
		end
	end
Report comment to moderator  
Reply With Quote
Unread 11-13-10, 09:53 PM  
neverg
A Frostmaul Preserver
 
neverg's Avatar
AddOn Author - Click to view AddOns

Forum posts: 268
File comments: 498
Uploads: 2
SpellBook Spells

If you want to Fix it for SpellBook Spells, on line 52 change to:

lua Code:
  1. self.button.id = SpellBook_GetSpellBookSlot(self.button)
  2. self.button.name = GetSpellBookItemName(self.button.id, SpellBookFrame.bookType)
__________________
My oUF Layout: oUF Lumen
Report comment to moderator  
Reply With Quote
Unread 11-14-10, 12:47 PM  
Coote
A Scalebane Royal Guard
 
Coote's Avatar
AddOn Author - Click to view AddOns

Forum posts: 440
File comments: 69
Uploads: 7
Re: SpellBook Spells

Originally posted by neverg
If you want to Fix it for SpellBook Spells, on line 52 change to:

lua Code:
  1. self.button.id = SpellBook_GetSpellBookSlot(self.button)
Thanks for including that. That is the one part I was having tons of trouble with. With any change I made, it was throwing errors at lines that had nothing to do with the spellbook frame. >.<

Update should be going up in under an hour.
__________________

"This is the fifteen-thousandth four hundredth and ninety-eighth occurence".
Report comment to moderator  
Reply With Quote
Unread 11-15-10, 12:41 AM  
Slaxi81
Guest

Join Date: Not Yet
Forum posts: 0
File comments: 0
Uploads: 0
Thanks for update!


Have a nice day

Slaxi
Report comment to moderator  
Edit/Delete Message Reply With Quote
Unread 11-17-10, 11:15 AM  
Farronski
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 1
File comments: 11
Uploads: 2
Could you please reupload the addon as a *.zip file? MMOUI-Minion can't handle *rar files.

Would be nice...
Report comment to moderator  
Reply With Quote
Unread 11-17-10, 12:46 PM  
Coote
A Scalebane Royal Guard
 
Coote's Avatar
AddOn Author - Click to view AddOns

Forum posts: 440
File comments: 69
Uploads: 7
Originally posted by Farronski
Could you please reupload the addon as a *.zip file? MMOUI-Minion can't handle *rar files.
Sorry, I was unaware of that.
__________________

"This is the fifteen-thousandth four hundredth and ninety-eighth occurence".
Report comment to moderator  
Reply With Quote
Unread 11-17-10, 02:54 PM  
markhr
A Fallenroot Satyr

Forum posts: 23
File comments: 43
Uploads: 0
Thanks for changing to zip.
Report comment to moderator  
Reply With Quote
Unread 11-23-10, 08:09 PM  
networm
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 7
Uploads: 2
1 OneKeyMode
I think we bind only one key to any button almost. So I think just allow to bind one key is a good idea.
Here is a picture about it:

Here is the code to achieve this:
First add this line to head of ncHoveBind.lua:
Code:
local onekeymode = true
Add these code between SCREENTSHOT and ESC judge:
Code:
				RunBinding("SCREENSHOT");
				return
			end

			-- change behavior to bind only one key for one button
			if #self.button.bindings > 0 and onekeymode then
				for i = 1, #self.button.bindings do
					SetBinding(self.button.bindings[i])
				end
				self:Update(self.button, self.spellmacro)
				if self.spellmacro~="MACRO" then GameTooltip:Hide() end
			end

			if key == "ESCAPE" or key == "RightButton" then
				for i = 1, #self.button.bindings do
2 #showtooltip bug
fix can't bind anykey when a macro isn't available with #showtooltip
such as "#showtooltip /use Conjured Mana Strudel", we couldn't bind any key to it when we haven't Conjured Mana Strudel
Here is the error:
Code:
[08:07:14] Interface\AddOns\ncHoverBind\ncHoverBind.lua:185: attempt to get length of field 'bindings' (a nil value)
[C]: ?
Interface\AddOns\ncHoverBind\ncHoverBind.lua:185: in function `Listener'
Interface\AddOns\ncHoverBind\ncHoverBind.lua:37: in function <Interface\AddOns\ncHoverBind\ncHoverBind.lua:37>
Here is a picbute about it:

Here is the code to fix it:
Code:
					elseif self.button.action < 49 and self.button.action > 36 then
						self.button.bindstring = "MULTIACTIONBAR4BUTTON"..modact
					elseif self.button.action < 37 and self.button.action > 24 then
						self.button.bindstring = "MULTIACTIONBAR3BUTTON"..modact
					end
				end

				GameTooltip:AddLine("Trigger")
				GameTooltip:Show()
				-- fix can't bind anykey when a macro isn't available with #showtooltip
				-- such as "#showtooltip /use Conjured Mana Strudel", we couldn't bind any key to it when we haven't Conjured Mana Strudel
				bind.button.bindings = {GetBindingKey(bind.button.bindstring)}

				GameTooltip:SetScript("OnHide", function(self)
					self:SetOwner(bind, "ANCHOR_NONE")
					self:SetPoint("BOTTOM", bind, "TOP", 0, 1)
					self:AddLine(bind.button.name, 1, 1, 1)
				--	move the following line to front, comment it or delete it.
				--	bind.button.bindings = {GetBindingKey(bind.button.bindstring)}
Last edited by networm : 11-23-10 at 08:21 PM.
Report comment to moderator  
Reply With Quote
Unread 09-09-12, 01:20 AM  
Burnum
A Defias Bandit
 
Burnum's Avatar

Forum posts: 2
File comments: 81
Uploads: 0
Busted?

Message: Interface\AddOns\ncHoverBind\ncHoverBind.lua:242: attempt to index global 'ShapeshiftButton1' (a nil value)
Time: Sun Sep 9 00:13:47 2012
Count: 1
Stack: Interface\AddOns\ncHoverBind\ncHoverBind.lua:242: in function `?'
Interface\FrameXML\ChatFrame.lua:4358: in function `ChatEdit_ParseText'
Interface\FrameXML\ChatFrame.lua:4052: in function `ChatEdit_SendText'
Interface\FrameXML\ChatFrame.lua:4091: in function `ChatEdit_OnEnterPressed'
[string "*:OnEnterPressed"]:1: in function <[string "*:OnEnterPressed"]:1>

Locals: find = <function> defined =[C]:-1
_G = <table> {
ContainerFrame5Item7 = ContainerFrame5Item7 {
}
MultiCastActionButton6Cooldown = MultiCastActionButton6Cooldown {
}
MerchantItem9ItemButtonStock = MerchantItem9ItemButtonStock {
}
GetTrainerServiceTypeFilter = <function> defined =[C]:-1
UNIT_NAMES_COMBATLOG_TOOLTIP = "Color unit names."
UNIT_NAMEPLATES_TYPE_TOOLTIP_3 = "This method avoids overlapping nameplates by spreading them out horizontally and vertically."
SetTrainerServiceTypeFilter = <function> defined =[C]:-1
EventTraceFrameButton7HideButton = EventTraceFrameButton7HideButton {
}
SPELL_FAILED_CUSTOM_ERROR_71 = "This partygoer wants to dance with you."
CompactUnitFrameProfilesGeneralOptionsFrameHealthTextDropdownButtonNormalTexture = CompactUnitFrameProfilesGeneralOptionsFrameHealthTextDropdownButtonNormalTexture {
}
TutorialFrameLeft19 = TutorialFrameLeft19 {
}
MultiCastActionButton2Cooldown = MultiCastActionButton2Cooldown {
}
ERR_TRADE_EQUIPPED_BAG = "You can't trade equipped bags."
PVP_RANK_6_1 = "Corporal"
BOOKTYPE_PROFESSION = "professions"
AudioOptionsVoicePanelOutputDeviceDropDownButtonHighlightTexture = AudioOptionsVoicePanelOutputDeviceDropDownButtonHighlightTexture {
}
InterfaceOptionsDisplayPanelShowAggroPercentageText = InterfaceOptionsDisplayPanelShowAggroPercentageText {
}
VideoOptionsFrameCategoryFrameButton17ToggleHighlightTexture = VideoOptionsFrameCategoryFrameButton17ToggleHighlightTexture {
}
MerchantItem3AltCurrencyFrameItem1Text = MerchantItem3AltCurrencyFrameItem1Text {
}
OPTION_TOOLTIP_ACTION_BUTTON_USE_KEY_DOWN = "Action button keybinds will respond on key down, rather than on key up."
BINDING_NAME_NAMEPLATES = "Show Enemy Name Plates"
INSTANCE_UNAVAILABLE_OTHER_TEMPORARILY_DISABLED = "%s cannot enter. This instance is temporarily disabled."
IsReferAFriendLinked = <function> defined =[C]:-1
MAIL_LETTER_TOOLTIP = "Click to make a permanent
copy of this letter."
QuestDetailBotLeftCorner = QuestDetailBotLeftCorner {
}
ItemTextFrameInsetInsetTopRightCorner = ItemTextFrameInsetInsetTopRightCorner {
}
ERR_NOAMMO_S = "%s"
CHAT_CONFIG_OTHER_COMBAT = <table> {
}
CONSOLIDATED_BUFFS_PER_ROW = 4
TutorialFrameRight19 = TutorialFrameRight19 {
}
MoneyFrame_OnEvent = <function> defined @Interface\FrameXML\MoneyFrame.lua:233
BN_UNABLE_TO_RESOLVE_NAME = "Unable to whisper '%s'. Battle.net may be unavailable."
WatchFrameItem_OnEvent = <function> defined @Interface\FrameXML\WatchFrame.lua:1367
InterfaceOptionsCombatTextPanelFCTDropDown_OnClick = <function> defined @Interface\FrameXML\InterfaceOptionsPanels.lua:1419
LFGTeleport = <function> defined =[C]:-1
SpellButton6Cooldown = SpellButton6Cooldown {
}
ToggleEncounterJournal = <function> defined @Interface\FrameXML\UIParent.lua:617
Graphics_QualityText = Graphics_QualityText {
}
TalentMicroButtonAlertShadowTopLeft = TalentMicroButtonAlertShadowTopLeft {
}
ROGUE_COMBAT_CORE_ABILITY_4 = "Use for damage when you have 5 combo points. Primary finishing move."
Advanced_GraphicsAPIDropDownButtonHighlightTexture = Advanced_GraphicsAPIDropDownButtonHighlightTexture {
}
CompactUnitFrameProfilesSaveButton = CompactUnitFrameProfilesSaveButton {
}
BankFrameItem17SearchOverlay = BankFrameItem17SearchOverlay {
}
ACTION_SPELL_MISSED_POSSESSIVE = "1"
ChannelMemberButton10SpeakerFrameOn = ChannelMemberButton10SpeakerFrameOn {
}
EventTraceFrameTitleButton = EventTraceFrameTitleButton {
}
Is6
Report comment to moderator  
Reply With Quote
Unread 09-09-12, 02:31 AM  
Coote
A Scalebane Royal Guard
 
Coote's Avatar
AddOn Author - Click to view AddOns

Forum posts: 440
File comments: 69
Uploads: 7
Re: Busted?

I hadn't updated the MoP beta for live yet, since it wasn't 100% tested. I'm currently unable to do much testing until MoP goes live.

This should work, though I'm not sure if anything else had been changed between the time I uploaded it, and 5.0 dropping on live servers.
__________________

"This is the fifteen-thousandth four hundredth and ninety-eighth occurence".
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: