Log in

View Full Version : Noob help with Autohotkey(and duel-boxing)



Destro
08-06-2007, 04:34 PM
i just tried boxing today
im using 2 games on 1 comp

i used the code in the guide and it works so far

i tried to add some code so i could move

i got WASD to somewhat work but the arrows and space don't

even using wasd it is very glichy and the other game doesn't move as far as the main does

i was wondering how to fix this of if anyone had some code i could use :D

this is what i have now

[code:1]

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

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

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

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

[/code:1]


EDIT- after reading the post about if it is leagle...

is autohotkey still leagle? thanks :D

keyclone
08-06-2007, 04:49 PM
**cough**

keyclone (http://solidice.com/keyclone)

**cough**

Destro
08-06-2007, 04:55 PM
**cough**

keyclone (http://solidice.com/keyclone)

**cough**

ohh you have to pay for it...
oh....

convince me that its better and i might get it....

Xzin
08-06-2007, 04:58 PM
Ahh capitalism at its finest :)

Destro
08-06-2007, 05:09 PM
Ahh capitalism at its finest :)

uhh... gotta love it :P

i think im gonna stick with autohotkeys

so any ideas on how to fix it?


also to Xzin
do you really pay for 10 accounts
thats $150 a month
how do ya get the money

Wilbur
08-06-2007, 05:28 PM
Xzin is a pimp for high society ;-)

unit187
08-06-2007, 05:33 PM
I think moving with WASD for all characters is kinda tricky since you have some latency issue between a few clients so you cant have exactly the same movements.

Destro
08-06-2007, 06:08 PM
I think moving with WASD for all characters is kinda tricky since you have some latency issue between a few clients so you cant have exactly the same movements.

well its fine when im not moving

and it doesn't lag at all just the moving is working

the other moves about half as much as the main

unit187
08-06-2007, 06:26 PM
try this script but with your WASD hotkeys

[code:1]~j::
#IfWinActive, World of Warcraft
{
ControlSend, , {j Down}, ahk_id %wowid1%
ControlSend, , {j Down}, ahk_id %wowid2%
ControlSend, , {j Down}, ahk_id %wowid3%
ControlSend, , {j Down}, ahk_id %wowid4%
ControlSend, , {j Down}, ahk_id %wowid5%
}
Return

~j Up::
#IfWinActive, World of Warcraft
{
ControlSend, , {j Up}, ahk_id %wowid1%
ControlSend, , {j Up}, ahk_id %wowid2%
ControlSend, , {j Up}, ahk_id %wowid3%
ControlSend, , {j Up}, ahk_id %wowid4%
ControlSend, , {j Up}, ahk_id %wowid5%
}
Return[/code:1]

Destro
08-06-2007, 06:39 PM
no it Does nothing

keyclone
08-06-2007, 06:50 PM
convince you? this'll be easy...

original post time: Mon Aug 06, 2007 3:34 pm
last post with a problem: Mon Aug 06, 2007 5:39 pm

duration: about 2 hrs ... so far

your time worth more then $5/hr?

Destro
08-06-2007, 06:59 PM
convince you? this'll be easy...

original post time: Mon Aug 06, 2007 3:34 pm
last post with a problem: Mon Aug 06, 2007 5:39 pm

duration: about 2 hrs ... so far

your time worth more then $5/hr?


uhh what?

keyclone
08-06-2007, 07:04 PM
Destro wrote:
uhh what?

so i'm guessing not

Destro
08-06-2007, 07:05 PM
what do you mean by worth more than $5/hour ?

keyclone
08-06-2007, 07:08 PM
cost of keyclone: $10
time noodling with AHK so far: 2 hours
cost of time saved per hour if using keyclone: $5

of course, that begs the other question.. do you have it up and running yet? if not, then it would change to $4/hr (2.5 hrs so far)

unit187
08-07-2007, 02:58 AM
no it Does nothing
works fine for me and others, you are doing something totally wrong

Destro
08-07-2007, 10:21 AM
i changed a few things around and it works fine now
no clue what happened

i have another question about multiboxing

i downloaded multibox on both my pcs
i ran the client on both with the same channel and had the server on my main comp open

how do i start broadcasting the keys?

does it do it automatically once you open it? because my other comp wasn't receiving anything...

Ziie
08-07-2007, 11:03 AM
I dont use Keyclone but to be honest, unless your ok with programming in AHK and know how to make AHK do what you want, Keyclone might be the best bet.

I use AHK, but I have wrote all my own code (for the most part) and I have it doing exactly what I want it to do, and if I post it, it will not work the way you want it to because macros are in different location and we use different key binding.

I like AHK because I can program it to do what I want and how I want, but again if you dont know how to program, scared of programming, or just lazy and dont want to do all the work to program the code... spend the money for Keyclone lol.

I have spent a lot of time tweeking my code, but I find it just as fun as playing my 2 box setup. What can I say... i'm a computer geek, I have just as much fun making it work as I do playing it once it is finished.

Ziie

Destro
08-07-2007, 12:43 PM
iv got everything working so far

i need a little help with a simple macro though

how do you have everyone target the same thing?

unit187
08-07-2007, 12:55 PM
bind macro on a button:

/assist party1

or /assist Char_Name

And then just push the button and all chars will assist your main.

Destro
08-07-2007, 01:12 PM
thanks

so far iv been testing this with my friend but now that it works i think im going to go buy a second copy of wow now

what are good combos?

would mage and warlock work
or 2 mages or 2 warlocks?

and again thank you every one
this is one of the first "computer techish" type of forum i haven spammed to death by "nub you dont know how to do that lawl!!!!!111111"

unit187
08-07-2007, 01:43 PM
I'd go mage and lock, harder to control, more fun, more possibilities :)

Destro
08-07-2007, 01:57 PM
ok is there a guide somewhere on how to make macros on 2 separate classes?

unit187
08-07-2007, 02:10 PM
it is very simple to figure out so if u read WoW macros tutorial on official forums you can do everything yourself

Destro
08-07-2007, 02:24 PM
it is very simple to figure out so if u read WoW macros tutorial on official forums you can do everything yourself

well i know how to make macros

my question is how do you have them set op so it works for 2 different classes

like say you have fireball on the 1 what would you put on the 1 for the warlock? things like that

unit187
08-07-2007, 03:41 PM
It depends on your preferences and playstyle :)

Destro
08-07-2007, 11:10 PM
well i decides to do duel undead mages

i still have a few questions

how do you move characters into formations like Zin does in the 10 boxing vid

im still trying to think of a good name

i prob wont get the second game for 2 weeks... i hate biweekly pay :evil:

keyclone
08-08-2007, 01:20 AM
you can get a 10 day trial account (or 5) for free... and when you get paid, activate them or just pay them for the month (doesn't have to have recurring monthly payments). that way, you could have you character already level up by the time you get paid.

wow 10-day free trials here:

https://signup.worldofwarcraft.com/trial/10dayfreetrial.htm

i recommend this to anyone that wants to try multi-boxing but doesn't want to fork over the money for an account.. in case they don't like it. just be aware, there are some limitations with the free accounts (like no bank, auction house, mail, or trading with other players)

view
08-08-2007, 02:19 AM
The class combination doesn't really matter- I dual a hunter and a palladin.

The pally is set to follow my hunter (i have the pally wow window minimized as I don't need to use it) and all the needed buttons are macro'd on the numpad. Most of it is done through using target=focus, and I have one to set my hunter to focus (but can easily be changed if some one wants to borrow him ^^) - then it's just different buttons for healing the hunter, the pet, or himself. Different blessings, auras, 2 different mounts etc. Cake :)

The formation stuff I wouldn't have said you need for a 2man as the non-main char will just step in behind your own.

With regards to the 'lag' issue you mentioned earlier - there's 2 possible sources. First, and least likely is your latency - if you're net connection can't handle both, one tends to get priority and it would make sense that it's the window you currently have active. Second, and most likely (as it's the problem I have at the moment) - my cpu can barely keep both instances of wow running at full speed - the main window (my hunter) tends to stay full speed - but when things get busy (ie running into the middle of an AV zerg) theres a lot of work for the cpu - my pally tends to fall behind as windows essentially puts it on hold - stopping the movement commands being sent to the server. I'm often turning around to go collect him.

Possible solutions; use 2 seperate computers, or upgrade the one I have. Neither are an option at the moment so I just make do. :)

Destro
08-08-2007, 08:44 AM
The class combination doesn't really matter- I dual a hunter and a palladin.

The pally is set to follow my hunter (i have the pally wow window minimized as I don't need to use it) and all the needed buttons are macro'd on the numpad. Most of it is done through using target=focus, and I have one to set my hunter to focus (but can easily be changed if some one wants to borrow him ^^) - then it's just different buttons for healing the hunter, the pet, or himself. Different blessings, auras, 2 different mounts etc. Cake :)

The formation stuff I wouldn't have said you need for a 2man as the non-main char will just step in behind your own.

With regards to the 'lag' issue you mentioned earlier - there's 2 possible sources. First, and least likely is your latency - if you're net connection can't handle both, one tends to get priority and it would make sense that it's the window you currently have active. Second, and most likely (as it's the problem I have at the moment) - my cpu can barely keep both instances of wow running at full speed - the main window (my hunter) tends to stay full speed - but when things get busy (ie running into the middle of an AV zerg) theres a lot of work for the cpu - my pally tends to fall behind as windows essentially puts it on hold - stopping the movement commands being sent to the server. I'm often turning around to go collect him.

Possible solutions; use 2 separate computers, or upgrade the one I have. Neither are an option at the moment so I just make do. :)


thanks

i fixed the running thing
just changed the code a little
i can run 2 WoW, have the internet up, listen to music, and be talking on AIM now and there was no lag. so im good now :D

also if i got a 10 day trial would you be able to continue it without buying the game?

keyclone
08-08-2007, 09:09 AM
i believe you would still have to get an authentication key from the retail box in order to upgrade from trial status to full.

don't forget to 'recruit a friend' for yourself which will give you a free month.

Destro
08-09-2007, 11:34 AM
im still trying to decide on what class or classes to be... iv been watching some boxing movies and i like most of the class combos....

i like the 2 mages because you could AoE grind like crazy

shammies because you can melee, cast, and heal...

locks because they just own

alot of people use priest... i don't really like them though

i don't see much melee boxing?
does it now work well or something?

i saw interesting combo
warrior, warlock, and rogue

they did really good too
i was amazed seeing that i haven't seen melee boxing before


still haven't thought of a good name yet

unit187
08-09-2007, 12:00 PM
melee is baaaad for multiboxing, you will have constant problems with facing targets. And also moving targets will be pain, that means you basically cant pvp with melee classes in your combo if it isnt ur main character.

Destro
08-09-2007, 12:13 PM
melee is baaaad for multiboxing, you will have constant problems with facing targets. And also moving targets will be pain, that means you basically cant pvp with melee classes in your combo if it isnt ur main character.

ok in the video the warrior was the main and the rogue was always right next to or inside the main...

Destro
08-09-2007, 10:10 PM
2 shammies or 2 mages????
not sure but thats what i have it down to now

also iv been looking at x-keys and realized they were pretty much the same thing as an G15 keyboard(which i have)

but i never took the time to figure out how the keys work....
so how do you program the keys?

i have no clue were to even start never done anything like it before.

unit187
08-10-2007, 04:26 AM
2 shammies or 2 mages????
not sure but thats what i have it down to now

also iv been looking at x-keys and realized they were pretty much the same thing as an G15 keyboard(which i have)

but i never took the time to figure out how the keys work....
so how do you program the keys?

i have no clue were to even start never done anything like it before.
uh, read documentation for your keyboard? oO

Destro
08-10-2007, 10:09 AM
2 shammies or 2 mages????
not sure but thats what i have it down to now

also iv been looking at x-keys and realized they were pretty much the same thing as an G15 keyboard(which i have)

but i never took the time to figure out how the keys work....
so how do you program the keys?

i have no clue were to even start never done anything like it before.
uh, read documentation for your keyboard? oO

if i could find it...
iv had this comp for a few years and the book is no were to be found... :(

seanwcom
08-11-2007, 09:11 PM
if i could find it...
iv had this comp for a few years and the book is no were to be found... :(

The Logitech website has manuals in their FAQ, as well as downloads for the LCD support, etc in the Support areas.

Here's a link to the FAQ page with the manual. (http://logitech-en-amr.custhelp.com/cgi-bin/logitech_en_amr.cfg/php/enduser/std_adp.php?p_faqid=5459&p_created=1159381552&p_sid=qkBHuWIi&p_accessibility=0&p_redirect=&p_lva=&p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX 3Jvd19jbnQ9MzQ4LDM0OCZwX3Byb2RzPSZwX2NhdHM9JnBfcHY 9JnBfY3Y9JnBfcGFnZT0yJnBfc2VhcmNoX3RleHQ9bWFudWFs&p_li=&p_topview=1)

Destro
08-13-2007, 05:04 PM
thanks :)

im having a little trouble with the walking again...

the one following slowly falls back....

im currently dueling 2 mages on the PTR

heres the code i have for running

[code:1]
#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
[/code:1]

Destro
08-14-2007, 02:27 PM
i know everyone has there own style and way to do things... but could i see how some people set up there macros... it would make things so much eiser for me if i could see how you do it first

thanks allot if anyone can :D

Atsuki
08-14-2007, 03:02 PM
I'm currently dual boxing two mages, and I am still writing new macros and scripts.

I am trying to make it so I can use any mage any time. So I have to plan the macros to do that.

It's quite easy once you get one working.

I'm also rewriting the AHK script I found here, because it doesn't behave exactly like I want it to.
I'll post a sample macro and the AHK script as soon as I'm done.

Destro
08-14-2007, 09:30 PM
well i meant more like 2 different classes but it might help anyways

thanks :)

Destro
08-14-2007, 11:30 PM
i got a few more questions

1. is there a way to disable the right click drag? i seem to keep messing up the way they run
2. the one following seems to fall back slowly... and sometimes wont turn as much...
3. also is there a way so that when your typing you don't get double letters (typing to type "hows it goin" and it comes up as "howwss it goin")

also don't forget that i would like to see a few macros for multi class boxing

thanks :D

Fog
08-15-2007, 12:39 AM
1. is there a way to disable the right click drag? i seem to keep messing up the way they run
2. the one following seems to fall back slowly... and sometimes wont turn as much...


Personally, I can't see why you'd want to use those keys to run. Just put one on follow instead?

I don't see what advantages it would give you to do it like you do, but of course, I could have missed something.

Atsuki
08-15-2007, 08:25 AM
You can try something I did:

[code:1];Ctrl-# to suspend script activity
#IfWinActive, World of Warcraft
^SC029::Suspend[/code:1]

When you press CTRL-# (the button next to 1) it will tell AHK to suspend the script, allowing you to type normally. Repress it to reactivate.

Destro
08-15-2007, 10:06 AM
1. is there a way to disable the right click drag? i seem to keep messing up the way they run
2. the one following seems to fall back slowly... and sometimes wont turn as much...


Personally, I can't see why you'd want to use those keys to run. Just put one on follow instead?

I don't see what advantages it would give you to do it like you do, but of course, I could have missed something.

i think i tried doing follow.... i dont think it worked though???

Fog
08-15-2007, 12:26 PM
1. is there a way to disable the right click drag? i seem to keep messing up the way they run
2. the one following seems to fall back slowly... and sometimes wont turn as much...


Personally, I can't see why you'd want to use those keys to run. Just put one on follow instead?

I don't see what advantages it would give you to do it like you do, but of course, I could have missed something.

i think i tried doing follow.... i dont think it worked though???

Works like a charms for me and most others :)

Destro
08-15-2007, 12:55 PM
works pretty good
not sure why it didn't work before

im pretty sure i have everything down now....

just need to make the final decision on class(es) names and realm


also it would still be nice to see a few macros

Fog
08-15-2007, 01:05 PM
/follow Mainchar
/assist Mainchar
/petattack
/cast Corruption

One I used for my warlock :)

Destro
08-15-2007, 01:26 PM
thanks

i would still like to see a few more

well i downloaded bartender 3 and its great
gonna help me out allot
you can chose any key you want for each button
i like it

also i don't know were this came from but...
how would a paladin and a shaman work?

im going to do 2 draenei

Destro
08-15-2007, 02:51 PM
so i forgot about something...

quests....

i know how to have the second character target the quest giver but how do i get him to talk and accept?
i think accept is like /script acceptquest() right?

EDIT:

is there a way to make the other character run up into melee range of the target?

Asrai
08-15-2007, 07:22 PM
so i forgot about something...

quests....

i know how to have the second character target the quest giver but how do i get him to talk and accept?
i think accept is like /script acceptquest() right?

EDIT:

is there a way to make the other character run up into melee range of the target?

I don't currently multi-box, as I am currently planning and researching. I can however answer this. To get quests, you basically have your main character take a quest, then share it with the secondary character... Once your main has shared the quest hit your "/script AcceptQuest();" macro from the secondary char. This will accept the shared quest.

As for the running up to melee range part, well I would assume in your keybindings you would have some unique movement keys for your secondary character. This would allow you to run him into melee range.

Destro
08-15-2007, 09:32 PM
thanks i forgot about sharing quests

i think i know how im gonna make the running work 2 now

Destro
08-15-2007, 10:43 PM
ok i think iv got everything to work!!!

thanks you alot everyone :D


im getting my second of copy of wow Friday
but wot be able to play till Saturday


so i still have 2 days to chose classes and world

is that wow class guide good in the mmo section of the forum?
i want to get a pro opinion on it before i use it to help decide :D

Destro
08-16-2007, 03:38 PM
sorry for posting 3 times in a row but i decided 1 or both are going to be a hunter
now i just have to chose a race

what would go good with hunter

warlock?
mage?
hunter?

Asrai
08-16-2007, 04:25 PM
sorry for posting 3 times in a row but i decided 1 or both are going to be a hunter
now i just have to chose a race

what would go good with hunter

warlock?
mage?
hunter?

I think the best answer to that would be to try yourself.

Roll the hunter and swap in a few other classes. You'll soon see what combo's work best for you. People have provided you with a lot of information in this thread, and it's mostly available elsewhere. I think testing this yourself would be the best route to find the answer to class combo's :)

Destro
08-16-2007, 05:45 PM
thank you all alot

ill be picking up my second copy tomorrow!

and once again thank you all you made this allot easier and faster for me than i could do by myself

ill probably post again after i lvl up some

Arbez
01-06-2008, 03:22 AM
Autohotkey is just fine. If you're wanting to run two or more accounts on the same machine you need nothing more than a good piece of code. I found several basic scripts and meshed them together, even added my own code with limited knowledge of XML.

I can press the middle mouse button on the hotbars to have the secondary toon cast the corresponding spell, Shift+Arrow keys to move the other toon from the main side, and it's got a checker to see which window is gonna be the one you're working from. Of course, there are also key presses to be sent to the other account, but you already seem to know how to do that.

I use a hunter and a priest, myself, I like the dynamics that these two classes can have and the gameplay style.

It takes some setting up, though. The key bindings should all be redone so that the alternate's macros fire when it receives the 'controlsend'.

On the hunter's side, the first bottom left action bar has a blank macro with a picture of a wolf (that's my pet). On the priest's side, there's the same picture but the with the macro : /target arbil.

2, the second, is for 'Target Main'.. /target arbez

3, the third is 'Target Self and Shield' since any time the priest would need to be selected would be when she is in danger and needs some help. I had toyed with making her fade but sometimes the fade is still on cooldown... So shield is best, just in case.. And the fade.

4 is for shield, 5,6,7,8,9, and 0 are all heals. The minus key is follow, and the equal sign is assist, or 'Focus on Main's Target'.
The next few spots on the hotbar are reserved for the hunter's melee abilities, and on the bottom right action bar I have all the priest's damage spells, keybound to 'qwertyuio'.

If I were attacking something, I could just Mid-Click the 'Focus' button and Mid-Click the spell I'd want her to cast. I could also throw in a sleep 3000 in AHK (wait 3 seconds) and then have her cast another damaging spell by sending another automated click, so it's be a one-button damage macro. I don't use this because it might be considered an exploit, and because I may actually need her to heal at any given time, so I like to keep her free for that.

I could also press the numbers that correspond with the abilities and spells, for instance pressing 1456 would put a shield on the pet, cast a renew, and a prayer of mending on the pet. I've got letter keys for the damaging spells. Pressing =qwe would put a Shadow Word: Pain on the hunter's target followed by a Mind Blast, then start casting a long slow Holy Fire so that the hunter can start burning his cooldowns and put some damage down range. After a while you get into a good rotation. Of course there is a global cooldown on the spells so you couldn't just mash the buttons very fast, you have to pace it out.

I had problems with the windows being chosen by AHK as the default windows, so I found a script that takes care of that problem:

;<<<BEGIN SCRIPT>>>

;SplashTextOn, 325, , Preparing to find your Main and Clone windows of WoW.
;Sleep, 1500
;SplashTextOff

;Grab unique window ID
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%

;<<<END SCRIPT>>>


Next in the script is the part where I learned how to make one follow the other by a key press, from only the hunters side. By this time I was mightily intrigued with what autohotkey could do..


;<<<BEGIN SCRIPT>>

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

;<<<END SCRIPT>>>

Next I found the code that allowed me to click on my screen and make the priest do her spells. This really blew me away! I couldn't sleep at night thinking about how awesome this was.

;<<<BEGIN SCRIPT>>>

; Middle Mouse Button
#IfWinActive, World of Warcraft
~MButton::
{

If MouseInRange(78,117,892,930)
ControlSend,, 1 , ahk_id %idClone%

else if MouseInRange(125,164,892,930)
ControlSend,, 2 , ahk_id %idClone%

else if MouseInRange(172,212,892,930)
ControlSend,, 3 , ahk_id %idClone%

else if MouseInRange(219,259,892,930)
ControlSend,, 4 , ahk_id %idClone%

else if MouseInRange(266,306,892,930)
ControlSend,, 5 , ahk_id %idClone%

else if MouseInRange(314,353,892,930)
ControlSend,, 6 , ahk_id %idClone%

else if MouseInRange(361,400,892,930)
ControlSend,, 7 , ahk_id %idClone%

else if MouseInRange(408,447,892,930)
ControlSend,, 8 , ahk_id %idClone%

else if MouseInRange(455,494,892,930)
ControlSend,, 9 , ahk_id %idClone%

else if MouseInRange(503,542,892,930)
ControlSend,, 0 , ahk_id %idClone%

else if MouseInRange(550,589,892,930)
ControlSend,, - , ahk_id %idClone%

else if MouseInRange(598,636,892,930)
ControlSend,, = , ahk_id %idClone%

else if MouseInRange(792,832,892,930)
ControlSend,, q , ahk_id %idClone%

else if MouseInRange(840,879,892,930)
ControlSend,, w , ahk_id %idClone%

else if MouseInRange(887,927,892,930)
ControlSend,, e , ahk_id %idClone%

else if MouseInRange(933,974,892,930)
ControlSend,, r , ahk_id %idClone%

else if MouseInRange(982,1021,892,930)
ControlSend,, t , ahk_id %idClone%

else if MouseInRange(1029,1069,892,930)
ControlSend,, y , ahk_id %idClone%

else if MouseInRange(1076,1116,892,930)
ControlSend,, u , ahk_id %idClone%

else if MouseInRange(1124,1163,892,930)
ControlSend,, i , ahk_id %idClone%

else if MouseInRange(1171,1210,892,930)
ControlSend,, o , ahk_id %idClone%

}

return

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

;<<<END SCRIPT>>>


Your numbers might be different. Inside AHK you'll go to FILE-> WINDOW SPY then look for >>>(Mouse Position)<<<, and it's going to give you two sets of numbers. The one where it says 'In Active Window' will be the one you want, but you must be sure that WoW is selected and is the main window (don't click in the AHK window that it pops up).

This script: "else if MouseInRange(1171,1210,892,930)" is the UP, DOWN, LEFT, and RIGHT coordinates of the box you want to test for. In other words, the mouse cursor needs to be in that square of screen for the correct key to be sent. You'll need to write down the numbers given for the upper left corner of the Action Bar Icon and the lower right corner of the Action Bar Icon.This might take some patience in your testing but once you get it right you will love this feature. I don't know if KeyClone has this, but either way I didn't want to pay for something if I could figure it, and possibly do it better, myself.

The script: "ControlSend,, 1 , ahk_id %idClone%" sends that keypress to the other account.


This still wasn't good enough for me, I wanted to remotely manipulate the other character using SHIFT+Arrow keys. The way I play, I cast a shield on the pet, round up mobs, get them in a group, cast misdirect on the pet and volley aoe, and that gives a bit of aggro from each mob onto the pet. At this point I used to switch over to the priest and make her run into the fray and blast her Holy Nova AOE. However once I added the following script all I had to do was press 'SHIFT+UP' to make her run in while I waited for volley to finish and cast multishot (or a series of aimed shot on one, Steady shot on another, and Multishot for the final misdirect charge). I know that's a bit more information than is needed but that's the way I do it. I easily take down two groups of Stratholme undead mobs that way. Well here's the script:

;<<<BEGIN SCRIPT>>>

#IfWinActive, World of Warcraft
+Right::
ControlSend,, Send {Right down} , ahk_id %idClone%
Sleep 230
ControlSend,, Send {Right up} , ahk_id %idClone%
return

#IfWinActive, World of Warcraft
+Left::
ControlSend,, Send {Left down} , ahk_id %idClone%
Sleep 230
ControlSend,, Send {Left up} , ahk_id %idClone%
return


#IfWinActive, World of Warcraft
+Up::
ControlSend,, Send {Up down} , ahk_id %idClone%
Sleep 2000
ControlSend,, Send {Up up} , ahk_id %idClone%
return

#IfWinActive, World of Warcraft
+Down::
ControlSend,, Send {Down down} , ahk_id %idClone%
Sleep 2000
ControlSend,, Send {Down up} , ahk_id %idClone%
return


#IfWinActive, World of Warcraft
+End::
ControlSend,, Send {Up down} , ahk_id %idClone%
Sleep 1000
ControlSend,, Send {Up up} , ahk_id %idClone%
ControlSend,, Send {Right down} , ahk_id %idClone%
Sleep 1000
ControlSend,, Send {Right up} , ahk_id %idClone%
return

;<<<END SCRIPT>>>

(I threw in 'Shift End' because I also have two druids, if both are in bear form, the second bear can run through and turn around 180 degrees and attack the rear of the mob we're fighting.)

Finally the key presses:



;<<<BEGIN SCRIPT>>>

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

;<<<END SCRIPT>>>

So that's it. Just piece these together (Copy and paste into notepad and save it as 'HawtKey.ahk' or whatever you wish to call it). You may want to only test certain portions of it at a time. You can leave out anything that starts with a semicolon, that's just remarks that the computer doesn't process.

You can modify this for three or more accounts if you wish but that's going to take some extra simple coding. You could even plot out the other action bars if you feel the need for other functions.

If you need any help you can email me directly at USMarineMP@gmail.com and I'll see what I can do to help. Make the subject header in the email say AHK so I won't delete it right away (I get tons of junk). Anyway, I hope this helps. You can always try out KeyClone but as for me I don't feel the need to, I got my code worked out and I love it. It was frustrating at first but progressively got easier as I went along. I think all you need is what I've put in this post but if you do feel the need for more input I'd be happy to give you my support, I am just an email away.

Arbez

elitegunslinger
01-07-2008, 07:46 PM
[code:1]killbroadcast = 0
WinGet, wowid, List, World of Warcraft

~Pause::
KeyWait, Pause, D
If(%killbroadcast% = 0)
{
killbroadcast = 1
}
else
{
killbroadcast = 0
WinGet, wowid, List, World of Warcraft
}
Return

~1::
KeyWait 1, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 1, ahk_id %target_window%
}
}
}
}
Return

~2::
KeyWait 2, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 2, ahk_id %target_window%
}
}
}
}
Return

~3::
KeyWait 3, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 3, ahk_id %target_window%
}
}
}
}
Return

~4::
KeyWait 4, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 4, ahk_id %target_window%
}
}
}
}
Return

~5::
KeyWait 5, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 5, ahk_id %target_window%
}
}
}
}
Return

~6::
KeyWait 6, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 6, ahk_id %target_window%
}
}
}
}
Return

~7::
KeyWait 7, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 7, ahk_id %target_window%
}
}
}
}
Return

~8::
KeyWait 8, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 8, ahk_id %target_window%
}
}
}
}
Return

~9::
KeyWait 9, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 9, ahk_id %target_window%
}
}
}
}
Return

~0::
KeyWait 0, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, 0, ahk_id %target_window%
}
}
}
}
Return

~-::
KeyWait -, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, -, ahk_id %target_window%
}
}
}
}
Return

~=::
KeyWait =, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, =, ahk_id %target_window%
}
}
}
}
Return

~F1::
KeyWait F1, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F1}, ahk_id %target_window%
}
}
}
}
Return

~F2::
KeyWait F2, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F2}, ahk_id %target_window%
}
}
}
}
Return

~F3::
KeyWait F3, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F3}, ahk_id %target_window%
}
}
}
}
Return

~F4::
KeyWait F4, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F4}, ahk_id %target_window%
}
}
}
}
Return

~F5::
KeyWait F5, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F5}, ahk_id %target_window%
}
}
}
}
Return

~F6::
KeyWait F6, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F6}, ahk_id %target_window%
}
}
}
}
Return

~F7::
KeyWait F7, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F7}, ahk_id %target_window%
}
}
}
}
Return

~F8::
KeyWait F8, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F8}, ahk_id %target_window%
}
}
}
}
Return

~F9::
KeyWait F9, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F9}, ahk_id %target_window%
}
}
}
}
Return

~F10::
KeyWait F10, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F10}, ahk_id %target_window%
}
}
}
}
Return

~F11::
KeyWait F11, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F11}, ahk_id %target_window%
}
}
}
}
Return

~F12::
KeyWait F12, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {F12}, ahk_id %target_window%
}
}
}
}
Return

;~a::
;KeyWait a, D
;WinGet, Active_Window, ID, A
;IfWinActive, World of Warcraft
;{
; If(%killbroadcast% = 0)
; {
; Loop, %wowid%
; {
; target_window := wowid%A_index%
; If (Active_Window <> target_window)
; {
; ControlSend,, a, ahk_id %target_window%
; }
; }
; }
;}
;Return

~b::
KeyWait b, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, b, ahk_id %target_window%
}
}
}
}
Return

~c::
KeyWait c, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, c, ahk_id %target_window%
}
}
}
}
Return

;~d::
;KeyWait d, D
;WinGet, Active_Window, ID, A
;IfWinActive, World of Warcraft
;{
; If(%killbroadcast% = 0)
; {
; Loop, %wowid%
; {
; target_window := wowid%A_index%
; If (Active_Window <> target_window)
; {
; ControlSend,, d, ahk_id %target_window%
; }
; }
; }
;}
;Return

;~e::
;KeyWait e, D
;WinGet, Active_Window, ID, A
;IfWinActive, World of Warcraft
;{
; If(%killbroadcast% = 0)
; {
; Loop, %wowid%
; {
; target_window := wowid%A_index%
; If (Active_Window <> target_window)
; {
; ControlSend,, e, ahk_id %target_window%
; }
; }
; }
;}
;Return

~f::
KeyWait f, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, f, ahk_id %target_window%
}
}
}
}
Return

~g::
KeyWait g, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, g, ahk_id %target_window%
}
}
}
}
Return

~h::
KeyWait h, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, h, ahk_id %target_window%
}
}
}
}
Return

~i::
KeyWait i, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, i, ahk_id %target_window%
}
}
}
}
Return

~j::
KeyWait j, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, j, ahk_id %target_window%
}
}
}
}
Return

~k::
KeyWait k, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, k, ahk_id %target_window%
}
}
}
}
Return

~l::
KeyWait l, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, l, ahk_id %target_window%
}
}
}
}
Return

~m::
KeyWait m, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, m, ahk_id %target_window%
}
}
}
}
Return

~n::
KeyWait n, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, n, ahk_id %target_window%
}
}
}
}
Return

~o::
KeyWait o, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, o, ahk_id %target_window%
}
}
}
}
Return

~p::
KeyWait p, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, p, ahk_id %target_window%
}
}
}
}
Return

;~q::
;KeyWait q, D
;WinGet, Active_Window, ID, A
;IfWinActive, World of Warcraft
;{
; If(%killbroadcast% = 0)
; {
; Loop, %wowid%
; {
; target_window := wowid%A_index%
; If (Active_Window <> target_window)
; {
; ControlSend,, q, ahk_id %target_window%
; }
; }
; }
;}
;Return

~r::
KeyWait r, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, r, ahk_id %target_window%
}
}
}
}
Return

;~s::
;KeyWait s, D
;WinGet, Active_Window, ID, A
;IfWinActive, World of Warcraft
;{
; If(%killbroadcast% = 0)
; {
; Loop, %wowid%
; {
; target_window := wowid%A_index%
; If (Active_Window <> target_window)
; {
; ControlSend,, s, ahk_id %target_window%
; }
; }
; }
;}
;Return

~t::
KeyWait t, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, t, ahk_id %target_window%
}
}
}
}
Return

~u::
KeyWait u, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, u, ahk_id %target_window%
}
}
}
}
Return

~v::
KeyWait v, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, v, ahk_id %target_window%
}
}
}
}
Return

;~w::
;KeyWait w, D
;WinGet, Active_Window, ID, A
;IfWinActive, World of Warcraft
;{
; If(%killbroadcast% = 0)
; {
; Loop, %wowid%
; {
; target_window := wowid%A_index%
; If (Active_Window <> target_window)
; {
; ControlSend,, w, ahk_id %target_window%
; }
; }
; }
;}
;Return

~x::
KeyWait x, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, x, ahk_id %target_window%
}
}
}
}
Return

~y::
KeyWait y, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, y, ahk_id %target_window%
}
}
}
}
Return

~z::
KeyWait z, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, z, ahk_id %target_window%
}
}
}
}
Return

~Space::
KeyWait Space, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {Space}, ahk_id %target_window%
}
}
}
}
Return

~/::
KeyWait /, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
killbroadcast=1
}
}
Return

~Enter::
KeyWait Enter, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% <> 0)
{
killbroadcast = 0
}
else
{
killbroadcast = 1
}
}
Return

~NumpadEnter::
KeyWait NumpadEnter, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% <> 0)
{
killbroadcast = 0
}
else
{
killbroadcast = 1
}
}
Return

~Backspace::
KeyWait Backspace, D
WinGet, Active_Window, ID, A
IfWinActive, World of Warcraft
{
If(%killbroadcast% = 0)
{
Loop, %wowid%
{
target_window := wowid%A_index%
If (Active_Window <> target_window)
{
ControlSend,, {Backspace}, ahk_id %target_window%
}
}
}
}
Return
[/code:1]

Enjoy, its most of the keys

thinus
01-07-2008, 08:05 PM
Enjoy, its most of the keys

If I understand your script correctly then the whole killbroadcast thing is to suspend AHK if you press the Pause button, correct?

You can quite easily do it by using AHKs "suspend" command which will eliminate all the confusing killbroadcast code in the script.

Also, why do you have the "KeyWait" commands in there?

[code:1]~1::
KeyWait 1, D
[/code:1]

The ~1:: section is only entered when the 1 key is pressed and then you do a KeyWait for the 1 key to be pushed down. Why????

elitegunslinger
01-07-2008, 10:31 PM
don't question it

Wilbur
01-08-2008, 06:08 AM
don't question it
Thats Hardly helpful. It does appear that there is no real reason for having the delay in there.

thinus
01-08-2008, 09:21 AM
don't question it

If people can't understand what you are doing in a script then they would be well advised not to run your script.

There are much more elegant and clean scripts available in the AutoHotKey sticky.

elitegunslinger
01-08-2008, 07:55 PM
don't question it

If people can't understand what you are doing in a script then they would be well advised not to run your script.

There are much more elegant and clean scripts available in the AutoHotKey sticky.

I was joking...

If there is another way to do it go ahead and modify my script I thought it was necessary to run properly.