Log in

View Full Version : AHK ( AutoHotKey ) Script....



doc
08-27-2007, 12:48 PM
Hi, I've been following the Multi-boxing forum for quite some time now. And I decided to try it out myself. However as i cant afford to set up a multi computer set up, i decided to go the software rute and use AHK script to control the key inputs on the multi clients..
With the help of many of u who have posted scripts and tidbits of AHK script, i've managed to eddit my own script to run 5 wow accounts.

Anyway, I just though i'd post the script so others can use or refine it, , It works quite well and i'm updating it as i go/lvl up...

plz feel free to use it, and please post any refinements you make to it back on forum for others to use...

PS. use of AHk is only half the story.. a great deal of Ingame macroing is required to have the different toons act in synergy....So use forum to read up on good Macroing..

AHK key list -- http://www.autohotkey.com/docs/KeyList.htm

FINALLY<< BE AWARE THAT USING AHK SCRIPT AND ANY SOFTWARE TO RUN MULTI CLIENTS PROBABLY VIOLATES BLIZZARD RULES AND MIGHT PUT U IN JEPORDY OF BEING BANNED SOMETIME DOWN THE LINE.. USE AT YOUR OWN DISCRETION..;

All the number keys are mapped out+letters Q,E,F,V,Z (so far) u can add more easily.. Also Ctrl+numbers, Shift+numbers is mapped so u can easily have action bars changes executed on all clients at the same time,,
I have my shammy totems set up on action bar 2.. so i click Shift+2 on main to change all toons to actuion bar 2 then lay down the totems simply by pressing the appropriate number/totem on that action bar.. (easy to figure out with a little practice)..

It took me a while to figure AutoHotKeys out,, but i think its quite powerfull and i use it to run 5 toons on a relatively normal computer.. All u need to remember is have the main client window as ur maximised main, while have the other 4 minimised... It works fine for me for now,,

Anyway,, here is the script.... Have fun. and please dont abuse it.. we dont want Blizzard getting peeved off and then banning this programme... cya.

;
; Wow Duel Account Helper Version: .02a
; Language: English
; Platform: AutoHotkey Script
; Author: Sorn, Eddited and updated by Doc.
; NOTES: Written for the Duel-Boxing.com forums, Send PM or post in the Autohotkey thread for assistance or suggestions
;
; Script Function:
; Allows you to play multiple copies of WOW at the same time
;

;Tell user what is about to happen
SplashTextOn, 325, , Preparing to find your Main and Clone windows of WoW.
Sleep, 2000
SplasHtextoff

;Grab unique window ID's
WinGet, wowid, List, World of Warcraft


; Minimize All WOW windows
WinMinimize, ahk_id %wowid1%
WinMinimize, ahk_id %wowid2%
WinMinimize, ahk_id %wowid3%
WinMinimize, ahk_id %wowid4%
WinMinimize, ahk_id %wowid5%

;Determine Main and Clone Windows
WinActivate, ahk_id %wowid1%


;*** Special Functions ***
;*** Turn AHK on and Off ingame by presing ],\ ***

#IfWinActive, World of Warcraft
~]::Suspend, on
~\::Suspend, off


;*** Special Functions ***

#IfWinActive, World of Warcraft
; *** Makes wowclients 2,3,4,5 to follow Wow1 Player ***
; ************ My follow Macro is bound to ( - ) key ******
^-::
ControlSend,,{- down}{- up}, ahk_id %wowid1%
ControlSend,,{- down}{- up}, ahk_id %wowid2%
ControlSend,,{- down}{- up}, ahk_id %wowid3%
ControlSend,,{- down}{- up}, ahk_id %wowid4%
ControlSend,,{- down}{- up}, ahk_id %wowid5%

return

#IfWinActive, World of Warcraft
; *** Makes wow2 Assist Wow1 Player *** (=) key is my assist macro
^=::
ControlSend,,{= down}{= up}, ahk_id %wowid1%
ControlSend,,{= down}{= up}, ahk_id %wowid2%
ControlSend,,{= down}{= up}, ahk_id %wowid3%
ControlSend,,{= down}{= up}, ahk_id %wowid4%
ControlSend,,{= down}{= up}, ahk_id %wowid5%
return



; *******************
; *** Hotbars 1-0 ***
; *******************
#IfWinActive, World of Warcraft
~1::
ControlSend,,{1 down}{1 up}, ahk_id %wowid1%
ControlSend,,{1 down}{1 up}, ahk_id %wowid2%
ControlSend,,{1 down}{1 up}, ahk_id %wowid3%
ControlSend,,{1 down}{1 up}, ahk_id %wowid4%
ControlSend,,{1 down}{1 up}, ahk_id %wowid5%
return

#IfWinActive, World of Warcraft
~2::
ControlSend,,{2 down}{2 up}, ahk_id %wowid1%
ControlSend,,{2 down}{2 up}, ahk_id %wowid2%
ControlSend,,{2 down}{2 up}, ahk_id %wowid3%
ControlSend,,{2 down}{2 up}, ahk_id %wowid4%
ControlSend,,{2 down}{2 up}, ahk_id %wowid5%
return

#IfWinActive, World of Warcraft
~3::
ControlSend,,{3 down}{3 up}, ahk_id %wowid1%
ControlSend,,{3 down}{3 up}, ahk_id %wowid2%
ControlSend,,{3 down}{3 up}, ahk_id %wowid3%
ControlSend,,{3 down}{3 up}, ahk_id %wowid4%
ControlSend,,{3 down}{3 up}, ahk_id %wowid5%
return

#IfWinActive, World of Warcraft
~4::
ControlSend,,{4 down}{4 up}, ahk_id %wowid1%
ControlSend,,{4 down}{4 up}, ahk_id %wowid2%
ControlSend,,{4 down}{4 up}, ahk_id %wowid3%
ControlSend,,{4 down}{4 up}, ahk_id %wowid4%
ControlSend,,{4 down}{4 up}, ahk_id %wowid5%
return

#IfWinActive, World of Warcraft
~5::
ControlSend,,{5 down}{5 up}, ahk_id %wowid1%
ControlSend,,{5 down}{5 up}, ahk_id %wowid2%
ControlSend,,{5 down}{5 up}, ahk_id %wowid3%
ControlSend,,{5 down}{5 up}, ahk_id %wowid4%
ControlSend,,{5 down}{5 up}, ahk_id %wowid5%
return

#IfWinActive, World of Warcraft
~6::
ControlSend,,{6 down}{6 up}, ahk_id %wowid1%
ControlSend,,{6 down}{6 up}, ahk_id %wowid2%
ControlSend,,{6 down}{6 up}, ahk_id %wowid3%
ControlSend,,{6 down}{6 up}, ahk_id %wowid4%
ControlSend,,{6 down}{6 up}, ahk_id %wowid5%
return

#IfWinActive, World of Warcraft
~7::
ControlSend,,{7 down}{7 up}, ahk_id %wowid1%
ControlSend,,{7 down}{7 up}, ahk_id %wowid2%
ControlSend,,{7 down}{7 up}, ahk_id %wowid3%
ControlSend,,{7 down}{7 up}, ahk_id %wowid4%
ControlSend,,{7 down}{7 up}, ahk_id %wowid5%
return

#IfWinActive, World of Warcraft
~8::
ControlSend,,{8 down}{8 up}, ahk_id %wowid1%
ControlSend,,{8 down}{8 up}, ahk_id %wowid2%
ControlSend,,{8 down}{8 up}, ahk_id %wowid3%
ControlSend,,{8 down}{8 up}, ahk_id %wowid4%
ControlSend,,{8 down}{8 up}, ahk_id %wowid5%
return

#IfWinActive, World of Warcraft
~9::
ControlSend,,{9 down}{9 up}, ahk_id %wowid1%
ControlSend,,{9 down}{9 up}, ahk_id %wowid2%
ControlSend,,{9 down}{9 up}, ahk_id %wowid3%
ControlSend,,{9 down}{9 up}, ahk_id %wowid4%
ControlSend,,{9 down}{9 up}, ahk_id %wowid5%
return

#IfWinActive, World of Warcraft
~0::
ControlSend,,{0 down}{0 up}, ahk_id %wowid1%
ControlSend,,{0 down}{0 up}, ahk_id %wowid2%
ControlSend,,{0 down}{0 up}, ahk_id %wowid3%
ControlSend,,{0 down}{0 up}, ahk_id %wowid4%
ControlSend,,{0 down}{0 up}, ahk_id %wowid5%
return

~-::
#IfWinActive, World of Warcraft
ControlSend,,{- down}{- up}, ahk_id %wowid1%
ControlSend,,{- down}{- up}, ahk_id %wowid2%
ControlSend,,{- down}{- up}, ahk_id %wowid3%
ControlSend,,{- down}{- up}, ahk_id %wowid4%
ControlSend,,{- down}{- up}, ahk_id %wowid5%
return

~=::
#IfWinActive, World of Warcraft
ControlSend,,{= down}{= up}, ahk_id %wowid1%
ControlSend,,{= down}{= up}, ahk_id %wowid2%
ControlSend,,{= down}{= up}, ahk_id %wowid3%
ControlSend,,{= down}{= up}, ahk_id %wowid4%
ControlSend,,{= down}{= up}, ahk_id %wowid5%
return





; **********************************
; *** Hotbars LShift&caps 1-0 -,= *** PS: (UNTESTED, seems buged)
; **********************************


Ctrl & 1::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{1 down}{1 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{1 down}{1 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{1 down}{1 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{1 down}{1 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{1 down}{1 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & 2::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{2 down}{2 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{2 down}{2 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{2 down}{2 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{2 down}{2 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{2 down}{2 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & 3::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{3 down}{3 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{3 down}{3 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{3 down}{3 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{3 down}{3 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{3 down}{3 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & 4::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{4 down}{4 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{4 down}{4 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{4 down}{4 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{4 down}{4 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{4 down}{4 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & 5::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{5 down}{5 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{5 down}{5 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{5 down}{5 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{5 down}{5 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{5 down}{5 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & 6::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{6 down}{6 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{6 down}{6 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{6 down}{6 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{6 down}{6 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{6 down}{6 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & 7::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{7 down}{7 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{7 down}{7 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{7 down}{7 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{7 down}{7 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{7 down}{7 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & 8::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{8 down}{8 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{8 down}{8 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{8 down}{8 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{8 down}{8 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{8 down}{8 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & 9::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{9 down}{9 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{9 down}{9 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{9 down}{9 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{9 down}{9 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{9 down}{9 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & 0::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{0 down}{0 up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{0 down}{0 up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{0 down}{0 up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{0 down}{0 up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{0 down}{0 up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & -::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{- down}{- up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{- down}{- up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{- down}{- up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{- down}{- up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{- down}{- up}{ctrl up}, ahk_id %wowid5%
}
return

Ctrl & =::
KeyWait, ctrl, D
#IfWinActive, World of Warcraft
{
ControlSend,,{ctrl down}{= down}{= up}{ctrl up}, ahk_id %wowid1%
ControlSend,,{ctrl down}{= down}{= up}{ctrl up}, ahk_id %wowid2%
ControlSend,,{ctrl down}{= down}{= up}{ctrl up}, ahk_id %wowid3%
ControlSend,,{ctrl down}{= down}{= up}{ctrl up}, ahk_id %wowid4%
ControlSend,,{ctrl down}{= down}{= up}{ctrl up}, ahk_id %wowid5%
}
return


shift & 1::
KeyWait, shift
#IfWinActive, World of Warcraft
{
ControlSend,,{shift down}{1 down}{1 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{1 down}{1 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{1 down}{1 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{1 down}{1 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{1 down}{1 up}{shift up}, ahk_id %wowid5%
}
return

shift & 2::
KeyWait, shift
#IfWinActive, World of Warcraft
{
ControlSend,,{shift down}{2 down}{2 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{2 down}{2 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{2 down}{2 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{2 down}{2 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{2 down}{2 up}{shift up}, ahk_id %wowid5%
}
return

shift & 3::
KeyWait, shift
#IfWinActive, World of Warcraft
{
ControlSend,,{shift down}{3 down}{3 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{3 down}{3 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{3 down}{3 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{3 down}{3 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{3 down}{3 up}{shift up}, ahk_id %wowid5%
}
return


; **********************************
; *** Hotbars Shift 1-0 -,= *** PS: (seems to work as intended)
; **********************************
; *** Begin Action Shift Bar sequence ***


~Shift & 4::
#IfWinActive, World of Warcraft
ControlSend,,{shift down}{4 down}{4 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{4 down}{4 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{4 down}{4 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{4 down}{4 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{4 down}{4 up}{shift up}, ahk_id %wowid5%
return

~Shift & 5::
#IfWinActive, World of Warcraft
ControlSend,,{shift down}{5 down}{5 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{5 down}{5 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{5 down}{5 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{5 down}{5 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{5 down}{5 up}{shift up}, ahk_id %wowid5%
return

~Shift & 6::
#IfWinActive, World of Warcraft
ControlSend,,{shift down}{6 down}{6 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{6 down}{6 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{6 down}{6 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{6 down}{6 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{6 down}{6 up}{shift up}, ahk_id %wowid5%
return

~Shift & 7::
#IfWinActive, World of Warcraft
ControlSend,,{shift down}{7 down}{7 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{7 down}{7 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{7 down}{7 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{7 down}{7 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{7 down}{7 up}{shift up}, ahk_id %wowid5%
return

~Shift & 8::
#IfWinActive, World of Warcraft
ControlSend,,{shift down}{8 down}{8 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{8 down}{8 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{8 down}{8 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{8 down}{8 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{8 down}{8 up}{shift up}, ahk_id %wowid5%
return

~Shift & 9::
#IfWinActive, World of Warcraft
ControlSend,,{shift down}{9 down}{9 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{9 down}{9 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{9 down}{9 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{9 down}{9 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{9 down}{9 up}{shift up}, ahk_id %wowid5%
return

~Shift & 0::
#IfWinActive, World of Warcraft
ControlSend,,{shift down}{0 down}{0 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{0 down}{0 up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{0 down}{0 up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{0 down}{0 up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{0 down}{0 up}{shift up}, ahk_id %wowid5%
return

~Shift & -::
#IfWinActive, World of Warcraft
ControlSend,,{shift down}{- down}{- up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{- down}{- up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{- down}{- up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{- down}{- up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{- down}{- up}{shift up}, ahk_id %wowid5%
return

~Shift & =::
#IfWinActive, World of Warcraft
ControlSend,,{shift down}{= down}{= up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{= down}{= up}{shift up}, ahk_id %wowid2%
ControlSend,,{shift down}{= down}{= up}{shift up}, ahk_id %wowid3%
ControlSend,,{shift down}{= down}{= up}{shift up}, ahk_id %wowid4%
ControlSend,,{shift down}{= down}{= up}{shift up}, ahk_id %wowid5%
return



; ************************************************** *******************
; *** Hotbars Client Movement ,, Jump, Strafe left right, Split toons ***
; ************************************************** *******************
; *** Begin Action Movement sequence ***

~space::
#IfWinActive, World of Warcraft
ControlSend,,{space down}{space up}, ahk_id %wowid1%
ControlSend,,{space down}{space up}, ahk_id %wowid2%
ControlSend,,{space down}{space up}, ahk_id %wowid3%
ControlSend,,{space down}{space up}, ahk_id %wowid4%
ControlSend,,{space down}{space up}, ahk_id %wowid5%
return

~f::
#IfWinActive, World of Warcraft
{
ControlSend, , {f Down}, ahk_id %wowid1%
ControlSend, , {f Down}, ahk_id %wowid2%
ControlSend, , {f Down}, ahk_id %wowid3%
ControlSend, , {f Down}, ahk_id %wowid4%
ControlSend, , {f Down}, ahk_id %wowid5%
}
Return

~f Up::
#IfWinActive, World of Warcraft
{
ControlSend, , {f Up}, ahk_id %wowid1%
ControlSend, , {f Up}, ahk_id %wowid2%
ControlSend, , {f Up}, ahk_id %wowid3%
ControlSend, , {f Up}, ahk_id %wowid4%
ControlSend, , {f Up}, ahk_id %wowid5%
}
Return

~v::
#IfWinActive, World of Warcraft
{
ControlSend, , {v Down}, ahk_id %wowid1%
ControlSend, , {v Down}, ahk_id %wowid2%
ControlSend, , {v Down}, ahk_id %wowid3%
ControlSend, , {v Down}, ahk_id %wowid4%
ControlSend, , {v Down}, ahk_id %wowid5%
}
Return

~v Up::
#IfWinActive, World of Warcraft
{
ControlSend, , {v Up}, ahk_id %wowid1%
ControlSend, , {v Up}, ahk_id %wowid2%
ControlSend, , {v Up}, ahk_id %wowid3%
ControlSend, , {v Up}, ahk_id %wowid4%
ControlSend, , {v Up}, ahk_id %wowid5%
}
Return

~z::
#IfWinActive, World of Warcraft
{
ControlSend, , {z Down}, ahk_id %wowid1%
ControlSend, , {z Down}, ahk_id %wowid2%
ControlSend, , {z Down}, ahk_id %wowid3%
ControlSend, , {z Down}, ahk_id %wowid4%
ControlSend, , {z Down}, ahk_id %wowid5%
}
Return

~z Up::
#IfWinActive, World of Warcraft
{
ControlSend, , {z Up}, ahk_id %wowid1%
ControlSend, , {z Up}, ahk_id %wowid2%
ControlSend, , {z Up}, ahk_id %wowid3%
ControlSend, , {z Up}, ahk_id %wowid4%
ControlSend, , {z Up}, ahk_id %wowid5%
}
Return

; Note: From now on whenever you run AutoHotkey directly, this script
; will be loaded. So feel free to customize it to suit your needs.

; Please read the QUICK-START TUTORIAL near the top of the help file.
; It explains how to perform common automation tasks such as sending
; keystrokes and mouse clicks. It also explains more about hotkeys.

doc
08-28-2007, 07:18 PM
Hi again,,

Just added a really nice couple of script items to help with mouse clicks and such..

First is a script that sends a click command to a specifyed macro or keybind on all 5 clients when i click the middle or 5th mouse buttons..

I use the middle to tell all my shammies to heal my target..(Heal macro is bound on = on my shammies),, while clicking 5th mouse button tells my shammies to heal main(mage)..

Script goes like this>>

;************************************************* ********
; click middle at the current mouse pos:

~Mbutton::
#IfWinActive, World of Warcraft
ControlSend,,{= down}{= up}, ahk_id %wowid1%
ControlSend,,{= down}{= up}, ahk_id %wowid2%
ControlSend,,{= down}{= up}, ahk_id %wowid3%
ControlSend,,{= down}{= up}, ahk_id %wowid4%
ControlSend,,{= down}{= up}, ahk_id %wowid5%
return

~Xbutton2::
#IfWinActive, World of Warcraft
ControlSend,,{- down}{- up}, ahk_id %wowid1%
ControlSend,,{- down}{- up}, ahk_id %wowid2%
ControlSend,,{- down}{- up}, ahk_id %wowid3%
ControlSend,,{- down}{- up}, ahk_id %wowid4%
ControlSend,,{- down}{- up}, ahk_id %wowid5%
return

;*********************************************

;Just cut and paste to the main script above...

The second script that i found and rewrote is to tell AHK to send a specific key command when i click the Left mouse button while it is positioned above a certain location(coordinates).. this allows me to have my shammy Totems and spells on view while on the main(mage) and just roll over the mouse on the picture of that spell and then click it,, this sends a click through AHK to other clients (the shammies) who have their totems or spells allocated to certain numbers on the Numpad1-9..

the action is only executed while the mouse is hovering above a certain coordinates which u specify..

Anyway, im sure u get the idea>> hers the script which u can expand a easily,,(im just starting with this so the script is still a little thin, but it works),, and as above,, just cut and paste top the main script/.

;******************************************

;************************************************* *********

;Coordinats scripted action

~LButton::
; ROW 1
If MouseInRange(812,840,330,350)
{
ControlSend,,9, ahk_id %wowid2%
ControlSend,,9, ahk_id %wowid3%
ControlSend,,9, ahk_id %wowid4%
ControlSend,,9, ahk_id %wowid5%
}

else if MouseInRange(1174,1221,703,751)
Suspend ; SUSPEND

; ROW 2

else
Click
Return

MouseInRange(minx,maxx,miny,maxy)
{
MouseGetPos, x, y
If (y >= miny) and (y <= maxy) and (x >= minx) and (x <= maxx)
Return 1
Return 0
}

; ********************* GOOD LUCK ********************

unit187
08-29-2007, 07:08 AM
nice job, havent tested it tho, not using AHK atm

I suggest you to put your script into sticky AHK guide thread since its... sticky :wink:

Meathead
10-08-2007, 11:08 PM
Very Nice script....but for some reason my second toon that is on follow is getting some lag issuses for some reason would you know why? like it would keep walking in from of me but it aint then it stops behind me :P Wierd it never happed with keyclone

Djarid
10-09-2007, 05:30 AM
nice but....

NO no no no no Shirley (in a Dr Cox-like voice)


#IfWinActive, World of Warcraft
~1::
ControlSend,,{1 down}{1 up}, ahk_id %wowid1%
ControlSend,,{1 down}{1 up}, ahk_id %wowid2%
ControlSend,,{1 down}{1 up}, ahk_id %wowid3%
ControlSend,,{1 down}{1 up}, ahk_id %wowid4%
ControlSend,,{1 down}{1 up}, ahk_id %wowid5%
return


you only need one [code:1]#IfWinActive, World of Warcraft[/code:1] as all hotkeys below that line are governed by that instruction. I don't know about the internal working of AHK but it is possible that each # instruction is independent in memory and so this could lead to inefficiency

also don't use ~ , this passes through the native keypress to the active window as well as sending that keystroke to each of the wow instances.

a better solution would be
[code:1]1::
ControlSend,,{1 down}{1 up}, ahk_id %wowid1%
ControlSend,,{1 down}{1 up}, ahk_id %wowid2%
ControlSend,,{1 down}{1 up}, ahk_id %wowid3%
ControlSend,,{1 down}{1 up}, ahk_id %wowid4%
ControlSend,,{1 down}{1 up}, ahk_id %wowid5%
return[/code:1]

Metalocalypse
10-31-2007, 05:02 AM
I found this script somewhere (can't remember, else I'd give credit due) for determining your main wow regardless of how many you're running, it's modified version of Sorn's ..but for multi instead of 2:

[code:1]
;Tell user what is about to happen
SplashTextOn, 325, , Preparing to find your Main and Clone windows of WoW.
Sleep, 2000
SplasHtextoff

;Grab unique window ID's
WinGet, wowid, List, World of Warcraft
;wowid contains the number of active wow windows found

; Minimize All WOW windows
Loop, %wowid%
{
thiswowid := wowid%A_index%
WinMinimize, ahk_id %thiswowid%
}

;Determine Main and Clone Windows
Loop, %wowid%
{
thiswowid := wowid%A_index%
WinActivate, ahk_id %thiswowid%

MsgBox, 4,, Is this your WOW Main window? (press Yes or No)
IfMsgBox Yes
{
idMain = %thiswowid%
Break
}
else
continue

}

;all others are clones
Loop, %wowid%
{
thiswowid := wowid%A_index%
if (thiswowid = idMain)
continue
count++
idClone%count% := thiswowid
}

numberOfClones := wowid - 1

;Activate All WOW windows
WinActivate, ahk_id %idMain%
Loop, %numberOfClones%
{
thiswowid := idClone%A_index%
;WinActivate, ahk_id %thiswowid%
}

;
return[/code:1]

From this I figured that the loop function could be used for keystrokes:

[code:1]
#IfWinActive, World of Warcraft
1::
ControlSend,,{1 down}{1 up}, ahk_id %idMain%
Loop, %numberOfClones%
{ thiswowid := idClone%A_index%
ControlSend,,{1 down}{1 up}, ahk_id %thiswowid%
}
return
[/code:1]

(and repeat for any keys you need)
Only thing is, I'm not sure if this will cause unnecessary latency or some other problem I'm not aware of, would appreciate input on this.