PDA

View Full Version : AutoHotKey



Ellay
01-03-2007, 04:49 PM
AutoHotKey is an application that allows you to send a keystroke to more than 1 client on the same PC. It is scriptable and open source. There is another application called Keyclone that provides similar functionality but without the scripting. If AHK does not work for you and you do not want to go pure hardware, take a look at Keyclone.

http://www.autohotkey.com/

For those planning on dual-boxing with just 1 PC this is the application for you. Being able to push keystrokes on 1 screen and it sending the same to the other greatly enhances the effectiveness.
Although it does take a bit to set up, this is an example of setting up the "2" key to be sent to both World of Warcraft clients.


Code:
WinGet, wowid, List, World of Warcraft

~2::
KeyWait 2
IfWinActive, World of Warcraft
{
ControlSend,, 2, ahk_id %wowid1%
ControlSend,, 2, ahk_id %wowid2%
Return
}


Learning Curve - Medium - High

Post Reviews, Suggestions, and Comments below.

Los
01-07-2007, 12:42 PM
Im somewhat afraid of useing these kinds of tools. Because this could be rated as third party software. Any comments on it?

Smeagoldfish
01-22-2007, 12:38 PM
Was kinda wondering about this aswell. Anyone got a clue?

Rahjak
02-11-2007, 01:14 AM
Been using it with WoW for quite some time. I've never gotten any hiccup or call from a gm while using it. I doubt it could fall under Warden's hammer because all it's doing is duplicating a keystroke. As far as Warden is concerned, it just looks like another set of hands.

Warden can't really tell what the program is doing. Just that it's running. That program doesn't interact with WoW, so Warden doesn't care.

I'll keep on using it until a GM makes it an issue. :)

Micah
02-11-2007, 03:22 AM
The first thing on the list of Auto Hotkey features:

Automate almost anything by sending keystrokes and mouse clicks.

Because of this they may decide to ban it at some point, especially if a lot of players start using it to macro. Based on past precedence, you won't be contacted by a GM, instead you will just have a banned account the next day. If all Auto Hotkey did was allow you to send keystrokes to a background process I doubt they would care but you can write fully automated game play with it as well.

Ellay
02-11-2007, 12:11 PM
Very true Micah, if anyone does get any type of message from a GM or a legitimate response stating that it is against the TOS please let me know so we can remove said application.

Anverc
02-12-2007, 08:49 AM
I asked a GM last night and he said it should be ok. Then I forgot to screenshot :( I'll ask the next GM i talk to (should I end up needing to talk to one anytime in the near future) so i can actually get a screen shot.

Shiakhan
02-26-2007, 07:43 AM
Hmm, this worked perfectly on 32 Bit Windows XP, but now that I'm on 64 bit, it doesn't work so well. I am triple-boxing, and sometimes the third World of Warcraft window will not receive the key strokes. I can usually resolve this by closing and restarting the World of Warcraft window completely, and then restarting the script. I guess it is because Autohotkey doesn't support 64 bit quite yet.

Nocturne
02-26-2007, 11:12 AM
I'll give it a try on my x64 box tonight and post my results.

Nocturne
02-26-2007, 02:19 PM
Anyone found a better way to send Shift+key sequences? This is cumbersome and does not work 100% the way I would like it to. It also prevents me from typing !,@,#,$,%, or ^ outside of WoW which is really irritating and likely due to my inept attempt at writing in the script.

[code:1]
WinGet, wowid, List, World of Warcraft

; *** Begin Action Bar sequence ***

~Shift & 1::
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%
return
}

~Shift & 2::
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%
return
}
[/code:1]

Metho
02-27-2007, 03:11 PM
This is going to make you laugh, but your stuff is just a tiny bit jumbled up from making it work the way you want to:
[code:1]
WinGet, wowid, List, World of Warcraft

; *** Begin Action Bar sequence ***

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


#IfWinActive, World of Warcraft
~Shift & 2::
ControlSend,,{shift down}{2 down}{2 up}{shift up}, ahk_id %wowid1%
ControlSend,,{shift down}{2 down}{2 up}{shift up}, ahk_id %wowid2%
return[/code:1]

By the by, I'm *just* starting to work with autohotkey, but the reason the switch was needed so that it only fires in WoW is because Autohotkey runs the script file line by line with the exception of hotkeys and hotstrings. So, you need that initial IF statement to run BEFORE the hotkey, so that IF it's NOT WoW active, SKIP this hotkey. Now... by my logic, you should be able to place a IfWinActive statement within a hotkey as well... but it just doesn't seem to work that way. *shrug*

kwingat
05-19-2007, 09:26 AM
I'm looking at this program and it kinda seems overwhelming and I bet that if anyone would modify this code so that it was just geared toward World of Warcraft or games in general and was simple to use, I'd bet that people would pay money for it.

Anyways I plugged in the the first script in this forum by editing my ahk doc then I ran it, then WoW. I then set both my mage's fireballs to number 2 keystroke and pressed 2. One mage began to fire and the other did not. Can someone help me with this.

What I would like to do is just have a script that will move both characters with the same keyboard bottons (awsd) and when pressing bottons 1-0 in one window, will do the same in another.

Right now this is looking kinda complicated so I'm installing WoW on another computer however I don't think I'll be able to multibox on it because of the amount of ram the comp has ie 512mb is crap.

Thegamex4
05-19-2007, 08:16 PM
I have a G11 Keyboard and I was wondering if anyone knows of a way to make the G keys work for only one client of WoW so I can have as many possible healing/support macros for my pally while I'm on my main toon

Thanks in advance

Xzin
05-19-2007, 09:47 PM
Change your macros to ignore input from the other client.

E.g. Alt+1 does cast bar 1 on one client. On the other, bind it to something else.

deeb
06-11-2007, 01:23 AM
So is this program allowed to be used with wow. I don't want to start up 3 boxing only to be banned.

Xzin
06-11-2007, 04:11 AM
Bliz has not blessed it - I don't use it and it COULD be used for semi botting like activities. However, it also has plenty of legitimate uses. And a G15 keyboard or assistive technology or items to help with repetitive strain injury also have similar functionality..... so I find it hard to believe that Bliz would ban for use of it. But there is still a risk and it is up to you if you want to risk it or not. I personally choose to do everything in hardware.

overkil2
07-06-2007, 11:44 PM
I see the wowid variable, but what would I use if i wanted to do this with EQ2?

Runiat
07-07-2007, 08:09 PM
"Strain injury".. yeah I've heard of those.. the last 7 years I've been using a keyboard and mouse so much that by now doing so actually relaxes my muscles after overuse of pen and paper..

Anyway, to be of some help..


So is this program allowed to be used with wow. I don't want to start up 3 boxing only to be banned.
First of all you should know that Blizzard can ban you for anything or nothing, at any time or something they assume you might do in the future. That's what the EULA said.

Second you should know that they'd actually quite like people to 3-box as that's 3 times the subscribtion.

Unless someone here has actually gotten banned for using it it'll only happen if you use a delay function. You see, to avoid ppl using stuff like an advanced edition of the G15 to bot with Warden appears to have a function checking how long time there is between your keystrokes, and if 1.000 second pops up too often you'll be recieving a very polite /whisper asking if you're at your PC. The polite-bit is only if they're feeling nice, see the "First of all.." paragraph.

Stick with having it broadcast the commands and it wont do anything that couldn't be done with some fancy wiring, and so they'll have no reason to ban you for it. Againt the "First of all.." paragraph should be considered.

chase
07-09-2007, 03:51 AM
hello,

i am relatively new to this and have played 2 accounts at the same time but not using any additional hardware or software just dual screen playing on seperate wow accounts to do some grinding.

would this software be the one to use to play 2 accounts on the same computer using 2 screens? is there other software that will literaly replicate anything i press on one open window in all other open windows?

Xzin
07-09-2007, 05:48 AM
would this software be the one to use to play 2 accounts on the same computer using 2 screens?

Yes.

I don't know of any other but there are probably other ones out there. AHK will not work for 2+ machines but will work for 2 copies of WoW on 1 machine.

mufar
07-09-2007, 06:08 AM
im having trouble finding/setting up a good script for this tho, as you have to write it from scratch >.<

Would be nice for a simple app. to just send keys to another window, without having to mess around writing your own scripts.

chase
07-09-2007, 06:46 AM
Yes.

I don't know of any other but there are probably other ones out there. AHK will not work for 2+ machines but will work for 2 copies of WoW on 1 machine.

ok how about using the other software listed on this site the multiBoxsoftware i know it is meant for 2 pcs but would it work for 2 copies of wow on 1 pc using 2 monitors?

mctrix
07-11-2007, 08:35 AM
how do i get ahk to work for clicking ? i want it to work so when i right click a mob my other toons will right click and pick up the items as well

i have
Click Right::
KeyWait 7
IfWinActive, World of Warcraft
{
ControlSend,, Click Right, ahk_id %wowid1%
ControlSend,, Click Right, ahk_id %wowid2%
Return
}

but that dosnt work ><

Mannyman
07-13-2007, 03:40 AM
I'm interested in knowing how you guys loot with the alt toon. Do you alt-tab and manually loot everything?

hapiguy314
07-13-2007, 12:50 PM
Contrary to what others do here, I don't do collect quests :/

I just grind instances so only main loots and trades it to others for bag space.

But, if you had one of our Vetra KM switches, you can switch easily and use the same mouse to loot.

Better yet - you can set up each of your 5 person as a potential leader, switching leaders (with the appropriate macros - at least I do anyway) when one dude is done questing.

Overall, I find collect questing boring. I can kill for exp just as much, if not more, on the time it takes me to run from the quest guy, collect the stuff, and run back. Usually it's the running that takes too much time and I'd prefer to just grind it in one spot - like an instance :)

Jayk
07-13-2007, 03:45 PM
I've been trying to set up AHK to work with my keys that are shift binded. It seems that it actually requires me to click shift+# rather then clicking a macro binded to that key. Does anyone know if there's a way to set it up so when I click the shift binded key it sends to other client?

unit187
07-13-2007, 05:23 PM
hello, I've got 2 simple questions just to make it clear (my logic sux and I am noob in PC languages :P).

First of all, I have binded on 1, 2, 3... etc some spells, so when I hit for example button "1" on main character, it casts a spell and 2nd character casts a spell binded on "1" as well. But looks like it duplicates or something because sometimes I get double message like "the target is too far away" and as well when I press "1" in chat box I get "11" instead of needed "1". Can this thing be solved?

[code:1]WinGet, wowid, List, World of Warcraft

~1::
KeyWait 1
IfWinActive, World of Warcraft
{
ControlSend,, 1, ahk_id %wowid1%
ControlSend,, 1, ahk_id %wowid2%
Return
}
[/code:1]

And 2nd question. I use keybind for "shift+1" - I have found only one way to do that:
[code:1]
WinGet, wowid, List, World of Warcraft

~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%
return
}[/code:1]

Well it works, but I dont like the way it does. I have to push "shif"t, then "1", then release "1", then release "shift" key just like it says in script.

But it kinda sux for me, is there any way to make it like that - push "shift" and "1" in the same time and then release both buttons in the same time?

Thanks.

Jayk
07-13-2007, 06:55 PM
What would I put in there if I wished to use the numpad keys?

spongejordan123
07-14-2007, 03:57 AM
Hey, I'm new to the dual-boxxing thing, so Im starting small with just 2. Anyways, back on topic.

It seems that when I bind a movement key for WoW to it, it, you know, just makes you stutter in that direction. Is there anyway to cause it to send that key for as long as you hold it down, like a regular keyboard? Oh, and...

[code:1]#IfWinActive, World of Warcraft
~Control & 1::
ControlSend,,1, ahk_id %wowid1%
ControlSend,,1, ahk_id %wowid2%
return[/code:1]

I'm trying to get it to send 1 to both the original and second WoW instance when I press control and 1... that however isn't the case. Any ideas on fixing it?

spongejordan123
07-14-2007, 04:36 AM
hello, I've got 2 simple questions just to make it clear (my logic sux and I am noob in PC languages :P).

First of all, I have binded on 1, 2, 3... etc some spells, so when I hit for example button "1" on main character, it casts a spell and 2nd character casts a spell binded on "1" as well. But looks like it duplicates or something because sometimes I get double message like "the target is too far away" and as well when I press "1" in chat box I get "11" instead of needed "1". Can this thing be solved?


Its actually doing exactly what its told.

You press 1 on one window, thus "~1:: "

Since you pressed 1, you already have a 1 in window 1.

now, that 1 also triggered the script, so you get 1 twice in window 1, but only once in window 2. Understand? Here, in code...

[code:1]~1:: you pressed 1, so its there in the first window.
KeyWait 1
IfWinActive, World of Warcraft
{
ControlSend,, 1, ahk_id %wowid1% that 1 triggered this 1 in window one.
ControlSend,, 1, ahk_id %wowid2% the original 1 triggered this 1 in window two.
Return[/code:1]

spongejordan123
07-14-2007, 04:42 AM
What would I put in there if I wished to use the numpad keys?

Numpad1-9 for the keys.

Anton145
07-14-2007, 12:08 PM
To mctrix: I dont think you could do that since your not moving the cursor over the corpse in all windows at the same time.. ;)

And I have some problems of my own, I hope someone can help me. You see when I move my character in my main window my secondary window character wont follow.. But if I write the "W" in the chat it writes in the 2nd window aswell, but why wont he move?...
Any ideas?

unit187
07-14-2007, 01:44 PM
autohotkey imitates keyclick, so when u press W in one window, it presses single click in 2nd window. You can test it by putting character at 2nd window on /follow behind your main char and then in 1st window press W, character at 2nd window will stop following because it moved.

Maybe there is function to keep W key (or any other) pressed, but I dont rly know...

Anton145
07-14-2007, 02:19 PM
Thanks unit187, didnt think of that. But I have found a solution now, someone posted this on the AutoHotkey forums:
http://www.autohotkey.com/forum/viewtopic.php?t=20966

I also found a World of Warcraft script topic, might be intresting:
http://www.autohotkey.com/forum/topic19616.html&sid=a94ff1a755d9640ac8be78377fc56df8

Sorn
07-15-2007, 12:36 AM
Ok I edited a few of the examples throughout this thread into one script. This scripts allows the use of keys 1-0, Shift+1-0, and Cntl+1-0 for a total of 30 hotkeys you can pass back and forth between the two clients.

This script also is dependant upon two in-game macros you will have to make.

FOLLOW
/follow party1

and
ASSIST
/assist party1

Place these two macros in hotbar location - and =

- is for Follow
and
= is for Assist


This is a general script that will allow you to control any combination of characters, as with anything the usefulness of it depends on your understanding of your characters the placement of your skills.


Description of Script
Simply put it allows both clients to receive the same key press at the same time.

Client 1 (Main) - presses Key 1
Client 1 (Main) - receives Key 1 Input
Client 2 (Drone) - receives Key 1 Input

it also makes Client 2 assist Client 1 with every key press, this can be removed for your own needs by removing the line

ControlSend,,{= down}{= up}, ahk_id %wowid2%

from any of the keypress functions. Why is this needed, for most spells a target is required, so this tells Client 2 to use Client 1's target to cast what ever ability you are telling it to cast. And the script is simply telling Client 2 to press = (bound to macro Assist).

Things to watch out for
When testing this with a Warlock/Mage Combo as well as a Hunter/Hunter combo I noticed when Client 2 (Drone) goes into melee combat it leaves AutoFollowing Mode, so to tell Client 2 to start following you again simply Press Cntrl+- to have him follow you again.

Expand the script to meet your needs
AutoHotkey is a powerful yet very simple to understand scripting language, if you need a delay in between your Client 1 and Client 2 attacks add a pause in there to space out the attacks.


How to use this code

First i'm assuming you have AutoHotkey installed already if not, do that now, then Copy and paste all this code below into a text file and Save As DuelAccountHelper.ahk the ahk extension lets Autohotkey know this is a script file and to process it accordingly.

[code:1]
; ***************************
; *** Duel Account Helper ***
; ***************************

WinGet, wowid, List, World of Warcraft


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

#IfWinActive, World of Warcraft
; *** Makes wow2 Assist Wow1 Player ***
^=::
ControlSend,,{= down}{= up}, ahk_id %wowid2%
return

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#IfWinActive, World of Warcraft
~^0::
ControlSend,,{Ctrl down}{0 down}{0 up}{Ctrl up}, ahk_id %wowid1%
ControlSend,,{= down}{= up}, ahk_id %wowid2%
ControlSend,,{Ctrl down}{0 down}{0 up}{Ctrl up}, ahk_id %wowid2%
return
[/code:1]



PS. Not sure about how your system acts with Wow windowed, but I'm running a 2.20GHtz Athlon 64, with 3Gigs of Ram and wow lags a hell of alot with two copies open and running, To improve performance I shrank Client 2 down as small of a window as I could get it and Had Client one shank down enough where performance wasn't laggy anymore.

Mannyman
07-15-2007, 03:49 AM
Hmm. I'm thinking of running two copies of WoW on the same computer with AHK. Warrior would be the main, priest would be running in a 2nd background window.

Let's say I create macro's for the priest like /target warrior, /cast heal, etc. Then I'd bind that macro to a key in the priest's window. I would then make a dummy macro in my warrior's screen, and it would only hit the keystroke that I bound my priest's heal macro to on the other screen. So when I want a heal on my warrior, I'd just click on that dummy heal macro on his screen, and it would automatically send that command to the priest's screen, and heal me.

I want to set up a bunch of macro's like this on the warrior's screen, like shield, renew, wand, etc. That way, when I want the priest to do something, I could just bind his actions to my F1-12 keys, my N52, or whatever. I'd much prefer this over just sending duplicate actions for everything my main toon does. I just want the priest to follow me, and only act when I hit certain keys while I'm playing the warrior.

Hopefully this makes sense, it's kinda early here, 3am:) Or maybe I missed the boat completely and this is the most basic of the basic things AHK can do. If this can work, then I could get some 3-boxing going with my 2 computers.

Jayk
07-15-2007, 04:32 AM
Hmm. I'm thinking of running two copies of WoW on the same computer with AHK. Warrior would be the main, priest would be running in a 2nd background window.

Let's say I create macro's for the priest like /target warrior, /cast heal, etc. Then I'd bind that macro to a key in the priest's window. I would then make a dummy macro in my warrior's screen, and it would only hit the keystroke that I bound my priest's heal macro to on the other screen. So when I want a heal on my warrior, I'd just click on that dummy heal macro on his screen, and it would automatically send that command to the priest's screen, and heal me.

I want to set up a bunch of macro's like this on the warrior's screen, like shield, renew, wand, etc. That way, when I want the priest to do something, I could just bind his actions to my F1-12 keys, my N52, or whatever. I'd much prefer this over just sending duplicate actions for everything my main toon does. I just want the priest to follow me, and only act when I hit certain keys while I'm playing the warrior.

Hopefully this makes sense, it's kinda early here, 3am:) Or maybe I missed the boat completely and this is the most basic of the basic things AHK can do. If this can work, then I could get some 3-boxing going with my 2 computers.

Do you want this hotkeyed or mouse click?

If you want it hotkeyed the above examples will work.

Sorn
07-15-2007, 04:41 AM
The scripts are based around Hotkeys, (ie 1-=, or Shift+1-0, or Cntl+1-0) I believe AHK would intercept mouseclicks as well, however I will not be posting any code for that, because it can be used nefariously. (ie unattended botting)

But if you're wanting to use the F1-F12 keys sure it's simple just change my script around and instead of ~1:: You would change it to ~F1 and so forth, you would have to edit all the script though to make it press the correct keys,

take this line for example


[code:1]
#IfWinActive, World of Warcraft
~1::
ControlSend,,{1 down}{1 up}, ahk_id %wowid1%
ControlSend,,{= down}{= up}, ahk_id %wowid2%
ControlSend,,{1 down}{1 up}, ahk_id %wowid2%
return [/code:1]

would be changed to

[code:1]
#IfWinActive, World of Warcraft
~1::
ControlSend,,{F1 down}{F1 up}, ahk_id %wowid1%
ControlSend,,{= down}{= up}, ahk_id %wowid2%
ControlSend,,{F1 down}{F1 up}, ahk_id %wowid2%
return [/code:1]

Like I said before this language is pretty straight forward and has a very slim learning curve, when in doubt, consult the help file it should tell you everything you need, look up Keys in the help file for all available keys it supports and how to use them in the scripts.

Sorn
07-15-2007, 04:42 AM
For those of you with three accounts, this script is just like my previous one, with the exception it supports three accounts opposed to two.

[code:1]
; ***************************
; *** Triple Account Helper ***
; ***************************

WinGet, wowid, List, World of Warcraft



;*** Special Functions ***

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

#IfWinActive, World of Warcraft
; *** Makes wow2 Assist Wow1 Player ***
^=::
ControlSend,,{= down}{= up}, ahk_id %wowid2%
ControlSend,,{= down}{= up}, ahk_id %wowid3%
return

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#IfWinActive, World of Warcraft
~^0::
ControlSend,,{Ctrl down}{0 down}{0 up}{Ctrl up}, ahk_id %wowid1%
ControlSend,,{= down}{= up}, ahk_id %wowid2%
ControlSend,,{= down}{= up}, ahk_id %wowid3%
ControlSend,,{Ctrl down}{0 down}{0 up}{Ctrl up}, ahk_id %wowid2%
ControlSend,,{Ctrl down}{0 down}{0 up}{Ctrl up}, ahk_id %wowid3%
return
[/code:1]

Enjoy!


PS. If i get some time I might make this script a bit more smart. Meaning right now it can't determine which is the Main copy of Wow running, so I can add some user input and have it ask you which copy is the main account and dynamically adjust the script to reflect that. Any other suggestions as to what you'd like to see in the scripts is welcomed to, I'll see if I can add as many requests into the scripts as possible....no promises though ;)

Mannyman
07-15-2007, 04:43 AM
Hotkeyed preferred. Good to know it has a chance:)

By the way, any chance AHK can handle spells where you have to target and click a spot, like blizzard, hellfire, shadowfury, etc?

Sorn
07-15-2007, 04:53 AM
Hotkeyed preferred. Good to know it has a chance:)

By the way, any chance AHK can handle spells where you have to target and click a spot, like blizzard, hellfire, shadowfury, etc?


yes it can but that would borderline on botting, since it would have to move the mouse, and in the way the scripts are setup right now, it would have to gain focus on the copy of wow, then take control of your mouse then click in a location. But I'm sure Bliz wouldn't approve of that sort of script and would hurry along the banning of this software, which would be a shame, right now it's in the grey area meaning it's neither banned, nor approved. So lets not give them any reason to ban it.

Mannyman
07-15-2007, 05:16 AM
Alright, scratch that idea then:)

wolviex
07-17-2007, 02:55 PM
Ok I edited a few of the examples throughout this thread into one script. This scripts allows the use of keys 1-0, Shift+1-0, and Cntl+1-0 for a total of 30 hotkeys you can pass back and forth between the two clients.

This script also is dependant upon two in-game macros you will have to make.

FOLLOW
/follow party1

and
ASSIST
/assist party1

Place these two macros in hotbar location - and =

- is for Follow
and
= is for Assist


This is a general script that will allow you to control any combination of characters, as with anything the usefulness of it depends on your understanding of your characters the placement of your skills.


Description of Script
Simply put it allows both clients to receive the same key press at the same time.

Client 1 (Main) - presses Key 1
Client 1 (Main) - receives Key 1 Input
Client 2 (Drone) - receives Key 1 Input

it also makes Client 2 assist Client 1 with every key press, this can be removed for your own needs by removing the line

ControlSend,,{= down}{= up}, ahk_id %wowid2%

from any of the keypress functions. Why is this needed, for most spells a target is required, so this tells Client 2 to use Client 1's target to cast what ever ability you are telling it to cast. And the script is simply telling Client 2 to press = (bound to macro Assist).

Things to watch out for
When testing this with a Warlock/Mage Combo as well as a Hunter/Hunter combo I noticed when Client 2 (Drone) goes into melee combat it leaves AutoFollowing Mode, so to tell Client 2 to start following you again simply Press Cntrl+- to have him follow you again.

Expand the script to meet your needs
AutoHotkey is a powerful yet very simple to understand scripting language, if you need a delay in between your Client 1 and Client 2 attacks add a pause in there to space out the attacks.


How to use this code

First i'm assuming you have AutoHotkey installed already if not, do that now, then Copy and paste all this code below into a text file and Save As DuelAccountHelper.ahk the ahk extension lets Autohotkey know this is a script file and to process it accordingly.

[code:1]
; ***************************
; *** Duel Account Helper ***
; ***************************

WinGet, wowid, List, World of Warcraft


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

#IfWinActive, World of Warcraft
; *** Makes wow2 Assist Wow1 Player ***
^=::
ControlSend,,{= down}{= up}, ahk_id %wowid2%
return

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#IfWinActive, World of Warcraft
~^0::
ControlSend,,{Ctrl down}{0 down}{0 up}{Ctrl up}, ahk_id %wowid1%
ControlSend,,{= down}{= up}, ahk_id %wowid2%
ControlSend,,{Ctrl down}{0 down}{0 up}{Ctrl up}, ahk_id %wowid2%
return
[/code:1]



PS. Not sure about how your system acts with Wow windowed, but I'm running a 2.20GHtz Athlon 64, with 3Gigs of Ram and wow lags a hell of alot with two copies open and running, To improve performance I shrank Client 2 down as small of a window as I could get it and Had Client one shank down enough where performance wasn't laggy anymore.

when i run this script, mine is backwords, my "clone" is the main one and my onw thats suppose to be my main is the clone

jp3550
07-17-2007, 03:35 PM
Hmm. I'm thinking of running two copies of WoW on the same computer with AHK. Warrior would be the main, priest would be running in a 2nd background window.

Let's say I create macro's for the priest like /target warrior, /cast heal, etc. Then I'd bind that macro to a key in the priest's window. I would then make a dummy macro in my warrior's screen, and it would only hit the keystroke that I bound my priest's heal macro to on the other screen. So when I want a heal on my warrior, I'd just click on that dummy heal macro on his screen, and it would automatically send that command to the priest's screen, and heal me.

I want to set up a bunch of macro's like this on the warrior's screen, like shield, renew, wand, etc. That way, when I want the priest to do something, I could just bind his actions to my F1-12 keys, my N52, or whatever. I'd much prefer this over just sending duplicate actions for everything my main toon does. I just want the priest to follow me, and only act when I hit certain keys while I'm playing the warrior.

Hopefully this makes sense, it's kinda early here, 3am:) Or maybe I missed the boat completely and this is the most basic of the basic things AHK can do. If this can work, then I could get some 3-boxing going with my 2 computers.

Do you want this hotkeyed or mouse click?

If you want it hotkeyed the above examples will work.

How hard would it be if you wanted to do mouseclick? I'm definately going to be doing the 1-0 when i get home, im just curious how the mouseclick idea would work.

Sorn
07-18-2007, 02:34 AM
when i run this script, mine is backwords, my "clone" is the main one and my onw thats suppose to be my main is the clone

It has to do with the way WoW starts up, and which one is recognized first by AHK I'll be adding a few more features to solve this problem in the next few days. it'll ask you which copy is your main and which is the clone. For now i just deal with it, and log out and switch the login info between the clients, and then it works fine, it shouldn't have to do this. So in the next version i release it'll fix all that.



How hard would it be if you wanted to do mouseclick? I'm definately going to be doing the 1-0 when i get home, im just curious how the mouseclick idea would work.

It's fairly involved and deals with pixel locations on your screen so unless you know the exact window size your wow window will be, then this is also impossible, unless you run it full screen. And further more you would have to involve pixelgrabbing and the like to determine whether or not a specific location has changed or not, and react whatever way you want it to. I'm not going to give pointers on how to do all this because A.) there are plenty of scripts on the net and information on how to do this at various location, and B as I stated before can be used in a nefarious way and ventures into unattended botting and/or giving you an advantage a 'Normal' player would not. One such use for this method would be a 'Fishing Script' and just sat around all day and fished for you, by first finding the bobber, then clicking it when the splash occurred, then recasting and repeating.

Sorn
07-18-2007, 06:15 AM
UPDATED: Duel Account Helper v.02a

Changes: No longer will the script randomly choose what the main windows and clone windows are. This process will take some user input, you tell it what window is what.

Instructions: Start up both copies of WOW then start this script. The script will minimize both copies of wow, then minimize one at a time asking you if it has chosen the correct window, if so choose Yes, if no choose No.

[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 suggestions
;
; Script Function:
; Allows you to play two 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%

;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 ***
^=::
ControlSend,,{= down}{= 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]

jp3550
07-18-2007, 08:40 AM
Works much better. The only issue i dont like with running two copies of wow is the lag time. Has anyone really experienced that? The second toon lags behind the main toon just a little bit. So say when you trying to cast two fireballs, you gotta wait for about a second to shoot it off. (for the second toon to catch up to the main)

Xzin
07-18-2007, 12:24 PM
Thats game latency. Cast dots, insta cast spells, or get used to it.

wolviex
07-19-2007, 09:46 AM
UPDATED: Duel Account Helper v.02a

Changes: No longer will the script randomly choose what the main windows and clone windows are. This process will take some user input, you tell it what window is what.

Instructions: Start up both copies of WOW then start this script. The script will minimize both copies of wow, then minimize one at a time asking you if it has chosen the correct window, if so choose Yes, if no choose No.



after it minimizes both wow's and ask me it this is my Main, the one it pics is always the clone, i hit NO, then it restores both. did it pic my main then or do i gotta do more?

Sorn
07-19-2007, 09:55 AM
Yes since there is only two wow clients running, it knows if the first one it selects is not the main it automatically assumes the other window is the Main and restores both and continues on. So it's important you choose the correct one when it asks you which if it selects the clone first and you answer no, you have. i hope that helps.

wolviex
07-19-2007, 10:35 AM
Yes since there is only two wow clients running, it knows if the first one it selects is not the main it automatically assumes the other window is the Main and restores both and continues on. So it's important you choose the correct one when it asks you which if it selects the clone first and you answer no, you have. i hope that helps.

thanks for all ur effort in this, the script is crazy! How do i use the alt, shift, to set hotkeys? can i set like the #1 to to have more than one of a different macro?

I mean how do i use ur Shift/conrtol part of ur script?

fling
07-20-2007, 09:54 AM
I haven't dual or triple boxed since my EQ days, and am looking to get back into it with WoW. I can control 2 characters on my system decently for slow PVE, but I would like to be able to move and react on both a lot faster and at the same time.

Does anyone have or have an idea of how to write a script that will mirror movement keys to the 2nd WoW instance? Basically, when character one moves or casts, I want character 2 to move and cast using the same commands and attacking the same target. It looks like mouse movement would be a lot more complex to script, and I think I would be fine if I could use:

w,a,s,d for movement, 1,2,3,4,5 for casting, and maybe a few buttons to refresh assist, follow, drink, etc.

I've played with a couple of scripts so far, but I can't seem to get anything working that moves both characters. So far I have been able to get number keys to pass to both, but that is it. Sorry I am such a noob at this! Thanks for your help.

Misc Info: PC is a Core 2 duo @ 2.99ghz, 2gb ram, 8800gts 320mb video, raid 0 on 2 sata 3.0 drives, OS is Vista Home Premium. Currently testing with 2 freshly created mages. I would like to do some PVP eventually, I do have another less powerful PC I can get running if I need to run them on separate boxes later on down the road.

latexone
07-21-2007, 02:26 AM
Is the script that you made only for 2 WoWs or would i have to modify it to support 3 copies of wow on 1 machine?
like in here--

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

Anywho you guyz are life savers ive been playing 2 copies switching my mouse and actually inputting all the keystrokes myself..I feel saved
I kinda dont know what Im doin and Kinda do I smoke to much..

Sorn
07-21-2007, 10:06 AM
I'll put an updated version of the 3 account one as well, it'll need to do one more level of checking to determine the master and slave windows. I'll post it tomorrow.

i'm actually working on a fully featured script that will allow you to assign your own hotkeys and will allow profile saving. So the script will create and use a ini file to store all your saved custom hotkeys. No ETA on this update though, there is going to be quite a bit of coding that needs to be done. It'll be alot more complicated then Main Press Key 1 and spams it to Clone 2 & 3 lol.

unit187
07-21-2007, 01:52 PM
hm I've got a problem. When I press "1", "2" etc. buttons I got delay for like 0.3 sec between my 3 clients. Should it work like that?
And 2nd problem - my hotkeys like "E" and "F" work in very strange way. On my main client I have to press "E" like 10-15 times to make spell actually cast even on main client. Same crap on other 2. Any way to fix that? :P

*waiting for Sorn's script, maybe it will work better :P*

I use simple script like that:

[code:1]

WinGet, wowid, List, World of Warcraft

0::
IfWinActive, World of Warcraft
ControlSend,, 0, ahk_id %wowid1%
ControlSend,, 0, ahk_id %wowid2%
ControlSend,, 0, ahk_id %wowid3%
Return

1::
KeyWait, 1, D
IfWinActive, World of Warcraft
ControlSend,, 1, ahk_id %wowid1%
ControlSend,, 1, ahk_id %wowid2%
ControlSend,, 1, ahk_id %wowid3%
Return


blablabla...

9::
IfWinActive, World of Warcraft
KeyWait, 9, D
ControlSend,, 9, ahk_id %wowid1%
ControlSend,, 9, ahk_id %wowid2%
ControlSend,, 9, ahk_id %wowid3%
Return

F::
IfWinActive, World of Warcraft
ControlSend,, F, ahk_id %wowid1%
ControlSend,, F, ahk_id %wowid2%
ControlSend,, F, ahk_id %wowid3%
Return [/code:1]

latexone
07-21-2007, 03:53 PM
Sweet, thank you guyz very much

Sorn
07-21-2007, 05:41 PM
I have, had that happened to me as well, I believed it is due to system bottlenecks, so this is what I did.

One thing you can try to speed up performance a bit, it

A>) Turn all gfx down to minimal setting on the clones
B>) Turn all sounds off on Clones.

The main should be ok to have you're normal play settings running, Since you're not really playing the clones, well in a sense of staring at their screens all day, there is no need for the extra resources to be used to make it look it's best nor do they require any sound.

Try that and let me know how that works out for you.


Wolviex:
I built the script around my UI mods, but it should work for any keys assigned to those keys, Shift, Alt, Control modifiers included. If it helps I use Bongos for my hotbars, It allows up to 120 hotbars, but i no where nearly use that, 10 is fine for me at least for now. Bongos allows you to assign hotkeys to any slot on your hotbars, which is cool so your hotbar could look like this.

1 3 2 4 8 7 5 6 9 = - 0

But that is an example, mine actually look like this.

Misc bar5
Misc bar4
Misc bar3
Misc bar2
Misc bar1
Cntrl 1 2 3 4 5 6 7 8 9 0 - =
Shift 1 2 3 4 5 6 7 8 9 0 - =
1 2 3 4 5 6 7 8 9 0 - =

Sorn
07-22-2007, 01:06 PM
Here is a sneak preview of the rough design of what the main interface is going to look like. Should be easy to setup/modify each character that you will be using as clones.

Enjoy, any input is greatly appreciated on what features you'd like to see, if it's keys then if you notice the Select Hotkey box it will allow you to select your own hotkey for the spell activatation, and the way it will handle spells it will not need to know what hotbar location that spell is located at. If you've noticed i've slowed down posting and updating the older scripts I've posted it's because of this, this should totally replace the scripts i've written in the past, and as you can see it will be flexible for multiple copies of wow setups not just 2 or 3.

http://i31.photobucket.com/albums/c394/Alzeric/gui_test.jpg

unit187
07-22-2007, 01:59 PM
Sorn, I will try it later, atm setting up 2nd monitor :)

Sorn
07-23-2007, 08:46 AM
A little more screenies for you of the interface, I ditch the other one, thought through it a little more and have even more intuitive design, that will allow for easier, and faster mapping of spells & abilities.

http://i31.photobucket.com/albums/c394/Alzeric/gui_v2.gif

As you can see it's coming right along, and i'm hard at work still. If I could recruit some assistance from those of you waiting on this script, i need a list of the Point and Target cursor then click spells / abilities for each class. (IE. Hunter's Eagle Eyes) it would certainly help speed up the completion.

I got some great surprises in store for you all on how to manage you're clone windows as well.

Nefarious
07-24-2007, 07:54 PM
I'm new to AutoHotkey, have been using the dual window/alt tabbing mode of dual boxing for a while now. Anywho found it and now would like to try it out. My first attempt at scripting has been less then succesfull. What I am attempting to do is with a single Key press, Target and cast a heal.
I've adapted Sorn's window selection script to LOTR.

In game key for Target =F1, F2
The Key I have in my Autobar for the spell to be cast: Q

My Script:
[code:1]
WinGet,lotrid,list,The Lord of the Rings Online™: Shadows of Angmar™
#IfWinActive, The Lord of the Rings Online™: Shadows of Angmar™
^1::
ControlSend,, {F2} , ahk_id %Cloneid%
ControlSend,, q , ahk_id %Cloneid%
Return
^2::
ControlSend,, {F1}, ahk_id %Cloneid%
ControlSend,, q, ahk_id %Cloneid%
Return

[/code:1]
I've tried changing the id# to see if It's sending to the wrong window, but that doesn't fix anything, it doesn't really seem to do... ANYTHING in game, won't even use the party targeting system (The F keys)

I've read through the manual but unfortunately cannot come up with a solution on my own, any help would be great.

Shame there is so much development for WoW and such little reguard for the other MMO's..

wolviex
07-25-2007, 10:38 AM
A little more screenies for you of the interface, I ditch the other one, thought through it a little more and have even more intuitive design, that will allow for easier, and faster mapping of spells & abilities.

http://i31.photobucket.com/albums/c394/Alzeric/gui_v2.gif

As you can see it's coming right along, and i'm hard at work still. If I could recruit some assistance from those of you waiting on this script, i need a list of the Point and Target cursor then click spells / abilities for each class. (IE. Hunter's Eagle Eyes) it would certainly help speed up the completion.

I got some great surprises in store for you all on how to manage you're clone windows as well.


that looks great!! You will have to write up a totorial on how to use it lol, if u need help testing or anything, im sure many user here will be glad to help!

Ellay
07-26-2007, 12:34 AM
Thanks Sorn for the assistance on this piece, if you have a compiled tutorial or just want to slap everything together, I can place it at the top of this thread and /or sticky a new one for you.

Sorn
07-26-2007, 10:24 AM
Thanks Sorn for the assistance on this piece, if you have a compiled tutorial or just want to slap everything together, I can place it at the top of this thread and /or sticky a new one for you.

Thank you, Once I have it fully operational I'll write up a tutorial and release the script, not sure how you all feel about compiled exe's or just want the staight script. I'll request a new thread so it's easier to track changes and revisions and offer assistance on it.

Ziie
07-31-2007, 05:01 PM
I found this on the Autohotkey Forum site.
http://www.autohotkey.com/forum/topic21076.html&highlight=pause+script


What if I want to control the script running manually by pausing whenever I wish to pause?

after script runs then somehow I want to pause to look at the output on the screen then after that I cancel my pause manually then let the script runs again.

-- The Reply --

Try something like:
Code (Copy):
[code:1]Pause::Pause, Toggle, 1 ; toggle-pause underlying thread[/code:1]
(The first "Pause" is the Pause key; the second is a command-call.)

The question I had is will this type of script help "pause" my script so I can use the keyboard like normal until I "unpause" the script?

The Problem I have is that I get a tell, I reply to the tell, and watch my alt jump every time I press the space bar. This really isnt too big of an issue, but I had to move most of my key binds to Ctrl+ "whatever key" to keep the alt from casting spells while I type to my friend.

If anybody has made a nice pause script or know of one that can fix this issue, it would be sweet! I could then keybind all the keys needed, then just "pause" the script to type to guild/friends/group.

Edit: pause doesn't pause the script for what we are using it for. You need to use suspend like ytrehod posted below.

Ziie

ytrehod
07-31-2007, 05:34 PM
What I did to my AHK script was put
[code:1]\::Suspend[/code:1]
as the first hotkey defined after my WinGet statement. This makes my "\" key act as a toggle for my script. I use it specifically for the same thing you were talking about (alt chars jumping with every space when chatting).

Arbitrary
07-31-2007, 08:16 PM
I have a stupid problem, but can't seem to figure out what's happening:

2 clients, 1 pc. I've deleted the WTF dir, but when I run Scorn's script, it always seems to attach to the priest's binding heal regardless of bar position. Also I never get the "Is this your main client" box. Any ideas?

Many thanks, this looks quite promising.

wolviex
07-31-2007, 08:41 PM
did u start both WoW's before starting script?

Arbitrary
07-31-2007, 08:53 PM
did u start both WoW's before starting script?

Revising answer due t additional discoveries: It seems that the correct key is being called, but after binding heal is cast. Example: If I'm running and I use the key for renew, because I'm moving binding heal isn't casted but renew is.

I'm simply trying to bind keypad numbers to specific spells, I'm fairly certain it'll work once I figure out why another spell is being cast first every time.

Thanks for any ideas

[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 suggestions
;
; Script Function:
; Allows you to play two 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%

;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 ***
^=::
ControlSend,,{= down}{= up}, ahk_id %idClone%
return

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

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

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

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

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

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

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

[/code:1]

wolviex
08-01-2007, 12:33 AM
are u using a action bar mod? i am using Bongos, and sometimes i get spells going off when i dont want, seems to be conflicting hotkey issues somewhere


also i just tried to run 3 wow's on 1 pc and the script dont detect 3, only 2, i dont even know where to start to make it for 3 or even 5 lol

Ziie
08-01-2007, 09:28 AM
What I did to my AHK script was put
[code:1]\::Suspend[/code:1]
as the first hotkey defined after my WinGet statement. This makes my "\" key act as a toggle for my script. I use it specifically for the same thing you were talking about (alt chars jumping with every space when chatting).
I had not thought about using the "\" key or even the "/" key for the suspend. The next question is to automate the toggle for when you type.

Maybe something like this
[code:1]/::Suspend, On
{enter}::Suspend, Off[/code:1]

This in WoW should allow you to /tell, /who, /invite, /what ever you want to do, then once you hit Enter it will turn Suspend Off.

*Edit: I tried using this code and it would work for me the way I wanted. I had 2 errors, 1st was the Enter once hit would Suspend the script but not open the chat prompt. 2nd after typing in the chat prompt, Enter wouldn't "enter" the typed text. (Enter on the number pad would but not the "normal" enter key)

*Edit: I ended up using my "Pause" key again like I did originally. If someone has written a script that makes this work the way I would like, I would love to see it and fix my logic :(

Ziie

unit187
08-02-2007, 03:16 PM
Sorn, could you be so kind and make that part of script (Duel Account Helper v.02a) which chooses main and clones windows for 5-box? :)
I am bad scripter, cannot make it to work myself.

tequilale
08-03-2007, 03:52 AM
Hello everybody ;-)

it is possible to send and HOLD a key?
background:

to follow the main char is very good... but i'll realy control each of them.
so AHK must send and hold in this case the keys "w" "a" "s" "d" and so on...

will this work and how it'll be realize in code?

Thanks for your answer!

Sorn
08-03-2007, 10:41 AM
Sorry been side-tracked (been decompiling Everquest II) and pouring over the assembly for a bit finding offsets. Working on EQII tools as well, (non AHK script).


Sorn, could you be so kind and make that part of script (Duel Account Helper v.02a) which chooses main and clones windows for 5-box? :)
I am bad scripter, cannot make it to work myself.

I'll write up the window selector, won't have time to update the whole script but after plugging the window selector you should be able to edit the rest it's pretty straight forward.

unit187
08-04-2007, 08:50 PM
yeah thats what I meant, cannot understand how does window selector work, all other is pretty simple :)

Ziie
08-05-2007, 12:20 PM
Hello everybody ;-)

it is possible to send and HOLD a key?
background:

to follow the main char is very good... but i'll realy control each of them.
so AHK must send and hold in this case the keys "w" "a" "s" "d" and so on...

will this work and how it'll be realize in code?

Thanks for your answer!

Not sure if the is what your wanting, but here is the code i wrote to make both toons move the same, down side is because of the little lag issue when turning, they dont turn the same degrees, but here it is none the less (i also added my script that makes them strife apart and back together again. (KeyWait = the hold)

[code:1]
; **************************************
; *** Movement Both W/S/A/D/Q/E/Jump ***
; **************************************

#IfWinActive, World of Warcraft
; *** Makes wow2 and Wow1 Player walk up***
W::
ControlSend,,{W down}, ahk_id %wowid1%
ControlSend,,{W down}, ahk_id %wowid2%
KeyWait W
ControlSend,,{W up}, ahk_id %wowid1%
ControlSend,,{W up}, ahk_id %wowid2%
return

#IfWinActive, World of Warcraft
; *** Makes wow2 and Wow1 Player walk back***
s::
ControlSend,,{s down}, ahk_id %wowid1%
ControlSend,,{s down}, ahk_id %wowid2%
KeyWait s
ControlSend,,{s up}, ahk_id %wowid1%
ControlSend,,{s up}, ahk_id %wowid2%
return

#IfWinActive, World of Warcraft
; *** Makes wow2 and Wow1 Player turn left***
a::
ControlSend,,{a down}, ahk_id %wowid1%
ControlSend,,{a down}, ahk_id %wowid2%
KeyWait a
ControlSend,,{a up}, ahk_id %wowid1%
ControlSend,,{a up}, ahk_id %wowid2%
return

#IfWinActive, World of Warcraft
; *** Makes wow2 and Wow1 Player turn right***
d::
ControlSend,,{d down}, ahk_id %wowid1%
ControlSend,,{d down}, ahk_id %wowid2%
KeyWait d
ControlSend,,{d up}, ahk_id %wowid1%
ControlSend,,{d up}, ahk_id %wowid2%
return

#IfWinActive, World of Warcraft
; *** Makes wow2 and Wow1 Player strife left***
q::
ControlSend,,{q down}, ahk_id %wowid1%
ControlSend,,{q down}, ahk_id %wowid2%
KeyWait q
ControlSend,,{q up}, ahk_id %wowid1%
ControlSend,,{q up}, ahk_id %wowid2%
return

#IfWinActive, World of Warcraft
; *** Makes wow2 and Wow1 Player strife right***
e::
ControlSend,,{e down}, ahk_id %wowid1%
ControlSend,,{e down}, ahk_id %wowid2%
KeyWait e
ControlSend,,{e up}, ahk_id %wowid1%
ControlSend,,{e up}, ahk_id %wowid2%
return

#IfWinActive, World of Warcraft
Space:: ; jump
KeyWait, Space, D
ControlSend,, {Space} , ahk_id %wowid1%
ControlSend,, {Space} , ahk_id %wowid2%
Return

; *****************************************
; *** Movement Opposit Strife E(+)/Q(-) ***
; *****************************************

#IfWinActive, World of Warcraft
NumpadAdd::
ControlSend,,{e down}, ahk_id %wowid1%
ControlSend,,{q down}, ahk_id %wowid2%
KeyWait NumpadAdd
ControlSend,,{e up}, ahk_id %wowid1%
ControlSend,,{q up}, ahk_id %wowid2%
return

;NumpadSub
#IfWinActive, World of Warcraft
NumpadSub::
ControlSend,,{q down}, ahk_id %wowid1%
ControlSend,,{e down}, ahk_id %wowid2%
KeyWait NumpadSub
ControlSend,,{q up}, ahk_id %wowid1%
ControlSend,,{e up}, ahk_id %wowid2%
return
[/code:1]

tequilale
08-06-2007, 08:36 AM
thanks, that was what i'am looking for.
the only problem will be the different ways, every charakter i s moving. they cant all look to the same way ;-(

so in the beginning, they walk the right way, later they'll spread out...

thinking, theres no solution about this. following an turning around in pvp is realy holy sh** if you have to fast turn, jump.

Ziie
08-06-2007, 09:31 AM
In pvp to turn my second toon around, I normally run away / jump, run back and start casting.. few seconds later my second toon is turned around right beside facing the right way. With 2 warlocks makes it easier, because I can Fear a person to get them off me and give me the time to line the toons up.

Ziie

Anton145
08-09-2007, 04:47 PM
Errm. :shock: Some of you seems to have problem with movement, why the heck would you use want to use WASD or any other keys when you can add a Macro to all your toons that is "/follow MyMainCharactersName" then you can put it on your UI and have for instance "Space" to trigger the Macro, works perfect for me!

hapiguy314
08-09-2007, 05:47 PM
Errm. :shock: Some of you seems to have problem with movement, why the heck would you use want to use WASD or any other keys when you can add a Macro to all your toons that is "/follow MyMainCharactersName" then you can put it on your UI and have for instance "Space" to trigger the Macro, works perfect for me!

Ok - now spread your characters into a Diamond so they dont all get AE'd.

Anton145
08-09-2007, 06:01 PM
Well if you need to do that, im shure someone has posted this but to run forward with your second character you can try this script:
[code:1]~w::ControlSend, , {w Down}, ahk_id %wowid2%
~w Up::ControlSend, , {w Up}, ahk_id %wowid2%[/code:1]

sofalord
08-14-2007, 09:48 AM
some people in the autohotkey forum telling about bans in wow, who uses the software..

i dont want to start dual boxing with 2 mages, even been banned after a while...
i can run 2 instances of wow on my desk...

any free suggestions?

i'm a little bit afraid ;)

unit187
08-14-2007, 10:33 AM
some people in the autohotkey forum telling about bans in wow, who uses the software..

i dont want to start dual boxing with 2 mages, even been banned after a while...
i can run 2 instances of wow on my desk...

any free suggestions?

i'm a little bit afraid ;)
give us a link to that telling

I am more then sure that that person was actually botting with automatic actions, but still no links yet ;)

There is no more free suggestions. You can try Keyclone software or 2 PC with Hardware. Or AHK. Your choice.

sofalord
08-14-2007, 03:39 PM
here is the link : http://www.autohotkey.com/forum/topic16189.html&highlight=wow

i want to tryout the 2xWoW on one pc.. so i want to try autohotkey... i have also 2 or more pc's available, but it doesnt make sense yet...

just want to try it, but im afraid of loosing my main acc...

Sorn
08-14-2007, 04:27 PM
Sorry on those of you waiting on my updated window detection routine. I'll try and find some time this week and get it updated.

unit187
08-14-2007, 05:19 PM
well, I have asked a GM about legality of using software like Autohotkey but he told me 3 god damn times to read EULA and TOS. I tried to talk with him more about the software but he was like "I know nothing!". Actually, after all he told me to go to the forums if I want deeper discussion.
I dont really want to post anything on forums because of all those stupid "bot!" kids around. And probably they will delete the thread anyways. :?

hapiguy314
08-14-2007, 06:12 PM
I haven't use Keyclone, but since it's not open sourced, only the author can change how it can work. And as it stands, he only programmed it to broadcast keys, where AHK can be programmed to "BOT."

I think it might be worth coughing up the $10 for those who want to stay a little safer. As for me, vetra all the way baby!

Sorn
08-14-2007, 09:18 PM
AutoHotkey is one of those 'GREY AREA' tools to use along with WoW, they have not come out and said it is against the rules to use.

AutoIT on the other hand is 'BLACKLISTED' because there was a bot that was written with it.

The two pieces of software here are written by the same company they function 'Almost' the sameway however, AutoHotkey is the dumber little brother to AutoIT.

What does that mean, basically AutoIT has more features and functionality then AutoHotkey mainly the Read/Write to Process Memory function. That alone allows the scripter "if they knew what they were doing" to create a memory reader/writer that could allow for things like 'Warp', 'Speedhacks', among a list of other things. And if i'm correct it has basic packet writing abilities as well. (not 100% sure on the packet thing).

Yes, Autohotkey could be used to automate some actions in WoW, would they be useful? Probably not unless coupled with the memory reading. But this could be said with a number of other programs as well. In fact you could do the very same things with VBS (Visual Basic Script) and use the WindowsScriptingHost to play back the actions.

Everything we do here is 'Grey Area' anyways, to argue over the fact which is the lesser of any evils is a moot point. It's basically down to which route you want to take and how much money/time you want to put into it, if any.

Zeio
08-16-2007, 03:37 PM
This is exactly what I've been looking for. Thanks Scorn!

unit187
08-16-2007, 03:48 PM
why do you just have to quote the longests posts ever? :/

Zeio
08-16-2007, 05:14 PM
Yea I'm sorry :[ I noticed how long it was after I posted it.

Zeio
08-16-2007, 05:59 PM
What if I want to type something in party chat or guild chat? I start typing and both clients start typing, but I dont want the same thing to come out twice so I want to type with my main only.

How can I do that, if there is anyway, without suspending the script?

Asrai
08-16-2007, 06:15 PM
What if I want to type something in party chat or guild chat? I start typing and both clients start typing, but I dont want the same thing to come out twice so I want to type with my main only.

How can I do that, if there is anyway, without suspending the script?

From what I have read, the only way to do this is, indeed, to suspend the script.

nero5150
08-21-2007, 01:24 PM
hey guys, um could anyone offer some help here I'm pretty clueless and new to this and don't know anything about scripting. I installed this program and ran this script that was posted to send "2" to both wow clients.
[code:1]Code:
WinGet, wowid, List, World of Warcraft

~2::
KeyWait 2
IfWinActive, World of Warcraft
{
ControlSend,, 2, ahk_id %wowid1%
ControlSend,, 2, ahk_id %wowid2%
Return
}[/code:1]

but it doesn't work. And I have no idea how to debug it. Any ideas where to start lol? Also, I am running both coppies of WOW from 1 installation, so far the only problem I've had is my macros used for all characters get deleted. Is there some reason I should bite the bullet and create another installation?

wolviex
08-21-2007, 09:10 PM
u u have to have wow installed for every wow u run. just copy the wow in ur c;programfiles save to ur desktop

AlfaStation
08-24-2007, 10:08 AM
Tried out AHK last night. It works... well, lets say 80% of the time:

Example:
1) I have "B" bind to bags (in Wow). Pressing "B" opens bags in both active(main) and inactive(clone) windows simultaniously about 3 to 5 times, then one of the windows "misses" a keypress and bags open alternate, for a while (3-5 times), then one "misses" again so the'yre back in synch, etc....

2) second problem is movement: Press and hold E in active window wil make main toon strafe smoothly, but clone will be extremely jerky, unplayable. And visa-versa. (I'll try the scripting -suggestions for movement given here when i get home tonight.

Atsuki
08-24-2007, 10:41 AM
[code:1]~2::
KeyWait 2
IfWinActive, World of Warcraft
{
ControlSend,, 2, ahk_id %wowid1%
ControlSend,, 2, ahk_id %wowid2%
Return
}[/code:1]

I do not recommend using this kind of broadcasting.
Either way, it always broadcast the key a second time to the active window.

[code:1]
IfWinActive, World of Warcraft
2::
ControlSend,, {2 down}, ahk_id %wowid1%
ControlSend,, {2 down}, ahk_id %wowid2%
KeyWait, 2
ControlSend,, {2 up}, ahk_id %wowid1%
ControlSend,, {2 up}, ahk_id %wowid2%
Return
[/code:1]

I found that this model behaves exactly like it is supposed to with WoW.
WoW reacts on both keystates (down it highlights the icon, up it launches the action/macro) and this script allows that, makes it look like normal keyboard broadcast.

You can, of course, use any WoW window to broadcast your keystroke without the fear of double-sending the key.

There is one downside though, and I still haven't figured a way out of it yet, and it is caused by how AHK handles hotkey threading.
Say I press Shift-2 but don't release it yet, and add 3 to the shift-2 combo. So now Shift, 2 and 3 are pressed together. In AHK, I have a broadcast script telling my WoWs to press Shift-2 and Shift-3. BUT, once I pressed Shift-2, and since I haven't released it its thread stay active, Shift-3 doesn't activate UNTIL I release 2. Anyway, it does some weird behavior when you try to cast something, change your mind and try to cast something else before (Shift-2 down, 3 down, release 3, cast Shift-3, wait for cooldown and release Shift-2).

It's not much of a problem if you are careful, plus I find the benefit of seemless keyboard broadcast much more interesting.

To AlfaStation: your problem with your bags comes from the double B sent to the active window: sometimes WoW receives both Bs and just doesn't seem to be doing anything because of that. Remove the ~ and it should solve your problem.

AlfaStation
08-24-2007, 08:44 PM
Atsuki: You're a Genious!
Thanks! /kiss :D :D :D

Now it works how its supposed to ^^, even walking-strafe works fine like that in wow.

(ps: you forgot #, but you're still a genious 8) )

nero5150
08-26-2007, 02:27 AM
yeah, thanks, that script works for me. the other one not only didn't work but caused my computer to act really wonky.

Atsuki
08-29-2007, 08:21 AM
Atsuki: You're a Genious!
Thanks! /kiss :D :D :D

No problem. ;)


(ps: you forgot #, but you're still a genious 8) )

I wrote it off the top of my head, what can I say...

I'm still working on my own script for my dual mages setup, but once it's done, be sure I will be posting it whole.

Chiea
08-29-2007, 03:56 PM
I'v bumped into a little problem while running AHK.

I run two WoW-windows on on computer, running them on two different monitors at the moment (I'v tried using only one minitor aswell, but I guess this is irrelevant).
I'd like to have both WoW-windows up at the same time since it makes it alot easier to pick up questloot, accept quests etc.

It works fine and runs smoothly when I have the game minimzed.
But when I have both windows up, my secondary character gets logged out after ~20 seconds of playing, anyone else that have experienced this?

hapiguy314
08-29-2007, 03:59 PM
I'v bumped into a little problem while running AHK.

I run two WoW-windows on on computer, running them on two different monitors at the moment (I'v tried using only one minitor aswell, but I guess this is irrelevant).
I'd like to have both WoW-windows up at the same time since it makes it alot easier to pick up questloot, accept quests etc.

It works fine and runs smoothly when I have the game minimzed.
But when I have both windows up, my secondary character gets logged out after ~20 seconds of playing, anyone else that have experienced this?

Nope. Never had a disconnect when 2 wow clients are in 2 different monitors. I only get D/Cs when one is in the background of the other. Check your memory load. Your comp might be choking. Also uncheck your V-Sync in the Video Settings.

If you havent already, make sure ur video settings in windows is in Horizontal span and not independent monitors. This will help your FPS tremendously.

Chiea
08-29-2007, 04:24 PM
The horizontal span helped a little regarding fps, got it up to 70. I'v got 1100mb of 49xx memory usage when running two wows, firefox and mirc.

So I don't think it's choking, I have no idea what the problem is tho :(.

Solved it, thanks for the help :).

wolviex
08-29-2007, 06:31 PM
If you havent already, make sure ur video settings in windows is in Horizontal span and not independent monitors. This will help your FPS tremendously.[/quote]


how/where i check this?

unit187
08-29-2007, 06:35 PM
if u r using nvidia graphic card there must be software "NVIDIA nView Desktop Manager". It usually makes icon in tray. Also u always can find it in Control Panel.

Djarid
08-30-2007, 02:49 AM
Same with ATI... the catalyst control centre....


you must unattach (logically) the 2nd monitor as the option to span is only available when you attach it

nero5150
08-31-2007, 01:49 AM
I've been trying to bind some keys to the numpad but I'm unable to use the NumpadPlus and NumpadMinus keys, I get an error that says "key does not exist in the current keyboard layout."

Any ideas? thanks in advance.

unit187
08-31-2007, 02:33 AM
if I am not mistaken, it spells like NumpadAdd and NumpadSub

nero5150
08-31-2007, 06:21 AM
yep, that works, didn't notice there's another auto-hotkey thread in the general forums.

So I just started using this program and have been playing with my hunter and paly in AV. Now in order to keep my paladin from going AFK I had set up my hunter's move forward key to be my paladins mini-map zoom out hot key so that he's be doing something every time I moved forward on my hunter. I just have my paladin /follow my hunter rather than bind movement keys together for both.... so I'm kinda stumped as to another solution because I don't like my paladin not having his move forward key bound. Andyone got an idea ? :P

unit187
08-31-2007, 06:29 AM
yep, that works, didn't notice there's another auto-hotkey thread in the general forums.

So I just started using this program and have been playing with my hunter and paly in AV. Now in order to keep my paladin from going AFK I had set up my hunter's move forward key to be my paladins mini-map zoom out hot key so that he's be doing something every time I moved forward on my hunter. I just have my paladin /follow my hunter rather than bind movement keys together for both.... so I'm kinda stumped as to another solution because I don't like my paladin not having his move forward key bound. Andyone got an idea ? :P
errr... jump? :D

nero5150
08-31-2007, 06:34 AM
Yeah maybe I'll try that, I was thinking about it but thought it might take him off /follow but it doesn't. I kind of wanted something that I didn't have to conciously do every couple minutes but I guess jumping a couple times every 5 minutes isn't hard lol.

hb
09-01-2007, 10:39 AM
EDIT: Meh.
This seems to work just fine...Dunno what I did wrong last time o.O

[code:1]~Numpad0::ControlSend, , {Numpad0 Down}, ahk_id %idClone%
~Numpad0 Up::ControlSend, , {Numpad0 Up}, ahk_id %idClone% [/code:1]


Hello.

I have this problem with ahk. Currently I'm testing with two computers: a normal desktop pc and a laptop. I'm running two wow clients on both of them so I have four characters now. Main character is A which ofcourse runs on my primary computer. On the same computer is also other char which is B. Char C is fullscreen client on my laptop and D is minimized client. I'm using Synergy/Multibox (both of them seems to work exactly the same in WoW) to broadcast my keys from desktop pc to laptop. So A and C which are on fullscreen work just fine but B and D causes some problems.

I've been searching some scripts from this forum but no matter which one I use it does not work properly. For example I have Frost Armor binded to "1". When I hold 1 down on my keyboard B and D casts their frost armor instantly and keep casting it as long as the button is hold down. A and C in the other hand cast it only after the button is released, which is ofcourse how it should work. So the problem is that ahk keeps spamming the button up and down as long as I keep it pressed down. Any ideas?

The scripts I've tested this with:

[code:1]~1::
ControlSend, , {1 Down}, ahk_id %idClone%
~1 Up::
ControlSend, , {1 Up}, ahk_id %idClone%
[/code:1]
[code:1]#IfWinActive, World of Warcraft
~2::
;ControlSend,, {1 down}, ahk_id %idMain%
ControlSend,, {1 down}, ahk_id %idClone%
KeyWait, 2
;ControlSend,, {1 up}, ahk_id %idMain%
ControlSend,, {1 up}, ahk_id %idClone%
Return[/code:1]
[code:1]#IfWinActive, World of Warcraft
~1::
ControlSend,,{1 down}{1 up}, ahk_id %idClone%
return [/code:1]

hb
09-02-2007, 11:50 AM
Ok now I have this new problem. How to get this script to detect main window out of three wow clients? Here is the original (http://pastebin.com/m49fdd6fd) and modified (http://pastebin.com/m5b582cee) which could work with some slight modifications...

Niko33
09-08-2007, 07:35 PM
Omg i got a mean bug O.o
Makes me unanvible to run the program :
Error at Line 21.
Line text 1
Error dublicant hotkey.
The program will exit.

And i really cant get it away.. I'v reinstallet it many times..

Wilbur
09-08-2007, 09:29 PM
Error at Line 21.
Line text 1
Error dublicant hotkey.
The program will exit.


Duplicant hotkey?

If so remove the Identical hotkey in the script and try again.

Niko33
09-10-2007, 10:55 AM
The problem pretty much is that i cant open the program.
The autoHotkey.exe..
Any ideas to reset ?

unit187
09-10-2007, 11:03 AM
you cant actually open it ;)

you just need to install it and then make scripts in Notepad, then rename files to *.ahk and start them with double-click

Wilbur
09-10-2007, 02:03 PM
Open the SCRIPT file that it was compiled from - Edit that.