Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Yet Another Warcraft Multibox Script


  • Please log in to reply
No replies to this topic
ferret
  • Members
  • 1 posts
  • Last active: Jan 09 2015 11:20 PM
  • Joined: 06 Jan 2015

I just felt like sharing my script... Nothing fancy. I jumped into multiboxing this weekend to quickly get a hunter levelled for PVP, and to get my kids a higher level character. I put this together reading a fair number of topics here and tweaking. It's not amazing, and I never did solve the age old issue of getting the mouse cursor to move in background Warcraft windows, but here it is.

DetectHiddenWindows, On ;this for background sending
SetControlDelay -1

; Exit
pause::Suspend
+pause::exitapp

;Normal hotkeys
~1::sendWowKey("1")
return
~2::sendWowKey("2")
return
~3::sendWowKey("3")
return
~4::sendWowKey("4")
return
~5::sendWowKey("5")
return
~6::sendWowKey("6")
return
~q::sendWowKey("q")
return
~e::sendWowKey("e")
return
~r::sendWowKey("r")
return
~t::sendWowKey("t")
return
~f::sendWowKey("f")
return
~g::sendWowKey("g")
return
~~::sendWowKey("~")
return

;Shift modified hotkeys
~+1::sendWowKey("1", 1)
return
~+2::sendWowKey("2", 1)
return
~+3::sendWowKey("3", 1)
return
~+4::sendWowKey("4", 1)
return
~+5::sendWowKey("5", 1)
return
~+6::sendWowKey("6", 1)
return
~+q::sendWowKey("q", 1)
return
~+e::sendWowKey("e", 1)
return
~+r::sendWowKey("r", 1)
return
~+t::sendWowKey("t", 1)
return
~+f::sendWowKey("f", 1)
return
~+g::sendWowKey("g", 1)
return
~+~::sendWowKey("~", 1)
return

;Ctrl modified hotkeys
~^1::sendWowKey("1", 2)
return
~^2::sendWowKey("2", 2)
return
~^3::sendWowKey("3", 2)
return
~^4::sendWowKey("4", 2)
return
~^5::sendWowKey("5", 2)
return
~^6::sendWowKey("6", 2)
return
~^q::sendWowKey("q", 2)
return
~^e::sendWowKey("e", 2)
return
~^r::sendWowKey("r", 2)
return
~^t::sendWowKey("t", 2)
return
~^f::sendWowKey("f", 2)
return
~^g::sendWowKey("g", 2)
return
~^~::sendWowKey("~", 2)
return


;Other buttons
;~b::sendWowKey("b")
;return
;~+b::sendWowKey("b", 1)
;return
~x::sendWowKey("x")
return
~space::sendWowKey("{Space down}")
return
~space up::sendWowKey("{Space up}")
return
;~tab::sendWowKey("{Tab}")
;return

;Mouse sends
~+LButton::
sendWowClick("LEFT")
return

~+RButton::
sendWowClick("RIGHT")
return

sendWowKey(k, s = 0)
{
	KeyWait %k%
	IfWinActive, World of Warcraft
	{
		WinGet, wowid, List, World of Warcraft
		Loop, %wowid%
		{
			this_id := wowid%A_Index%
			
			IfWinActive, ahk_id %this_id%
				continue			
			
			if s = 1
				ControlSend,, {shift down}%k%{shift up}, ahk_id %this_id%
			else if s = 2
				ControlSend,, {ctrl down}%k%{ctrl up}, ahk_id %this_id%
			else
				ControlSend,, %k%, ahk_id %this_id%
		}
	}
	return
}

sendWowClick(c)
{
	IfWinActive, World of Warcraft
	{
		MouseGetPos, xpos, ypos	
		WinGet, wowid, List, World of Warcraft
		
		Loop, %wowid%
		{
			this_id := wowid%A_Index%
			
			IfWinActive, ahk_id %this_id%
				continue

			ControlClick, xpos ypos, ahk_id %this_id%, , %c%, NA Pos
		}
	}
	return
}

Pretty simple. Easy to add any keys you use that I don't. Only sends to inactive Windows. You can shift-mouse click and the click will go, but like I said the cursor won't follow so it's sticky to use.

 

I also thought I'd share my macros. This was my first time multiboxing so veterens probably have better solutions, but... here we go.

 

First, on each client, I bound "Shift+1" to the "Interact with Target" key bind. You cannot macro Interact, so need to bind it in keybinds. This lets you open up quest givers and such with a button press.

 

For abilities macros I used:

/follow Party1
/assist Party1
/autoattack
/petattack
/cast <spellname>

This assumes your active/primary window is the party leader, so you don't have to worry about character name. The inactive windows are always trying with every button push to follow and then assist the leader, and then attack and use ability.

 

For quests, I put together a button that hit the major quest window buttons. 95% of the time, this macro works, but occasionally I'd have to alt tab and do a little manual clicking when a greyed out or incomplete quest ended up being the first selection.

/click GossipTitleButton1
/click QuestTitleButton1
/click QuestFrameCompleteButton
/click QuestFrameCompleteQuestButton
/click QuestFrameAcceptButton

This tries to press the Quest Accept, Quest Complete (First one) and Quest Complete (Second one, rewards) buttons. It also presses the first line of the quest giver's chat text, which will handle things like "Please continue your story" and selecting the quest.

 

Select the quest giver, press any button so the followers will assist you, press Shift+1 to interact, then press Shift+2 (My choice, anyways) to move through the dialogues. I recommend a small delay, don't just hammer on it.

 

I also had six macros (Ctrl+1 through Ctrl+6) for selecting a quest reward:

/click QuestInfoRewardsFrameQuestInfoItem1

Unfortunately, I didn't come up with (Or try terribly hard) to find a way to try to autoequip a quest reward, so you still have to alt tab for that. :)

 

Anyways, just felt like sharing. By the end I felt it was working pretty smoothly, and I hit 85 in less than 18 hours, with a fair bit of idling about.

 

P.s. quests where you click on little moving animals are the worst.