Quote Originally Posted by Rhubarb
Here is the 'w' script for my dual box, just add more id clones for more. '-' is a macro set to follow my main...
My only problem with this is that there is always a gap between the two characters, most likely due to lag, whereby the clone stops following well before it is directly behind the main. Thanks for the script though, I have added it to my script however commented it out until I am able to test without as much lag.



For anyone that's interested, below is my entire script. It works for two clients and is basically Sorn's script with two /follow scripts added and a Suspend script added. Comments and suggestions welcome!

[code:1]
;
; Wow Duel Account Helper Version: .02a
; Language: English
; Platform: AutoHotkey Script
; Author: Sorn
; NOTES: Written for the Duel-Boxing.com forums, Send PM or post in the Autohotkey thread for assistance or suggestion
;
; Script Function:
; Allows you to play two copies of WOW at the same time
;
; Edited by Zaza 16/8/07 to include Suspend and Following, mainly for people with disconnects due to /follow.
; Edited without permission of Sorn, no attempt at plagiarism is intended. All other scripting work by Sorn.

; ************************************************** **************************************
; *** READ BEFORE USE! ***
; *** Uncomment ONE of the FOLLOW scripts to setup follow (line 82 to 90 OR 97 to 105) ***
; *** Bind 'Q' to follow macro on Clone ***
; *** Bind '=' to '/assist party1' on Clone ***
; *** Bind 'Ctrl+Q' to target self macros on both Main and Clone ***
; ************************************************** **************************************

;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%

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

MsgBox, 4,, Is this your WOW Main window? (press Yes or No)
IfMsgBox Yes
idMain = %wowid1%
else
idMain = %wowid2%

If idMain = %wowid1%
{
idClone = %wowid2%
} else {
idClone = %wowid1%
}

;Activate All WOW windows
WinActivate, ahk_id %idMain%
WinActivate, ahk_id %idClone%


;*** Special Functions ***

#IfWinActive, World of Warcraft
; *** Makes wow2 follow Wow1 Player ***
^-::
ControlSend,,{- down}{- up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
; *** Makes wow2 Assist Wow1 Player ***
^=::

return


; ************************************************** *******************
; *** Suspending (Pausing) the Script ***
; *** Used when you need to type etc without duplicating keypresses ***
; ************************************************** *******************
^E::Suspend ; Press Ctrl+E to Suspend this script, press it again to resume.


; ************************************************** ***
; *** FOLLOW TYPE 1 ***
; *** Bind 'Q' to follow macro on clone ***
; *** Bind 'E' to walk forwards on clone (unfollow) ***
; ************************************************** ***
;#IfWinActive, World of Warcraft
; ~Q::
; ControlSend,,{Q down}{Q up}, ahk_id %idClone%
;return
;
;#IfWinActive, World of Warcraft
; ~E::
; ControlSend,,{E down}{E up}, ahk_id %idClone%
;return


; ************************************************** **********
; *** FOLLOW TYPE 2 ***
; *** On W down Clone follows Main until W key is released ***
; ************************************************** **********
;#IfWinActive, World of Warcraft
; ~w::
; ControlSend,,{Q down}{Q up}, ahk_id %idClone% ; Replace Q with follow macro keybinding
;return
;
;#IfWinActive, World of Warcraft
; ~w Up::
; ControlSend,,{w down}{w up}, ahk_id %idClone% ; When W is released, clone takes a step ergo breaks follow
;return

; *******************
; *** Target Self ***
; *******************
#IfWinActive, World of Warcraft
~^Q::
ControlSend,,{Ctrl down}{Q down}{Q up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{Ctrl down}{Q down}{Q up}{Ctrl up}, ahk_id %idClone%
return


; *******************
; *** Hotbars 1-0 ***
; *******************
#IfWinActive, World of Warcraft
~1::
ControlSend,,{1 down}{1 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{1 down}{1 up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~2::
ControlSend,,{2 down}{2 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{2 down}{2 up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~3::
ControlSend,,{3 down}{3 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{3 down}{3 up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~4::
ControlSend,,{4 down}{4 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{4 down}{4 up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~5::
ControlSend,,{5 down}{5 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{5 down}{5 up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~6::
ControlSend,,{6 down}{6 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{6 down}{6 up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~7::
ControlSend,,{7 down}{7 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{7 down}{7 up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~8::
ControlSend,,{8 down}{8 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{8 down}{8 up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~9::
ControlSend,,{9 down}{9 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{9 down}{9 up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~0::
ControlSend,,{0 down}{0 up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{0 down}{0 up}, ahk_id %idClone%
return


; ***************************
; *** Hotbars Shift ^ 1-0 ***
; ***************************
#IfWinActive, World of Warcraft
~+1::
ControlSend,,{Shift down}{1 down}{1 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{1 down}{1 up}{Shift up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~+2::
ControlSend,,{Shift down}{2 down}{2 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{2 down}{2 up}{Shift up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~+3::
ControlSend,,{Shift down}{3 down}{3 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{3 down}{3 up}{Shift up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~+4::
ControlSend,,{Shift down}{4 down}{4 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{4 down}{4 up}{Shift up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~+5::
ControlSend,,{Shift down}{5 down}{5 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{5 down}{5 up}{Shift up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~+6::
ControlSend,,{Shift down}{6 down}{6 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{6 down}{6 up}{Shift up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~+7::
ControlSend,,{Shift down}{7 down}{7 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{7 down}{7 up}{Shift up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~+8::
ControlSend,,{Shift down}{8 down}{8 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{8 down}{8 up}{Shift up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~+9::
ControlSend,,{Shift down}{9 down}{9 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{9 down}{9 up}{Shift up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~+0::
ControlSend,,{Shift down}{0 down}{0 up}{Shift up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Shift down}{0 down}{0 up}{Shift up}, ahk_id %idClone%
return


; **************************
; *** Hotbars Cntl ^ 1-0 ***
; **************************
#IfWinActive, World of Warcraft
~^1::
ControlSend,,{Ctrl down}{1 down}{1 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{1 down}{1 up}{Ctrl up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~^2::
ControlSend,,{Ctrl down}{2 down}{2 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{2 down}{2 up}{Ctrl up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~^3::
ControlSend,,{Ctrl down}{3 down}{3 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{3 down}{3 up}{Ctrl up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~^4::
ControlSend,,{Ctrl down}{4 down}{4 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{4 down}{4 up}{Ctrl up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~^5::
ControlSend,,{Ctrl down}{5 down}{5 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{5 down}{5 up}{Ctrl up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~^6::
ControlSend,,{Ctrl down}{6 down}{6 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{6 down}{6 up}{Ctrl up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~^7::
ControlSend,,{Ctrl down}{7 down}{7 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{7 down}{7 up}{Ctrl up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~^8::
ControlSend,,{Ctrl down}{8 down}{8 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{8 down}{8 up}{Ctrl up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~^9::
ControlSend,,{Ctrl down}{9 down}{9 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{9 down}{9 up}{Ctrl up}, ahk_id %idClone%
return

#IfWinActive, World of Warcraft
~^0::
ControlSend,,{Ctrl down}{0 down}{0 up}{Ctrl up}, ahk_id %idMain%
ControlSend,,{= down}{= up}, ahk_id %idClone%
ControlSend,,{Ctrl down}{0 down}{0 up}{Ctrl up}, ahk_id %idClone%
return


[/code:1]