# Forum > World of Warcraft > World of Warcraft Bots and Programs >  [AutoHotKey] 'Turbofire' Script

## Backwardpawn

Author: Backwardpawn, although it's a pretty simple script I'm sure someones made it before.
Name: 'Turbofire' AutoHotKey Script
Date: 07/14/2009

Description:
Replicate the old school 'Turbofire' controllers except with your keyboard.
Basically it sends keystrokes repeatedly to wow while holding down that key.
Some basic editing of the script will be needed depending what keys you want to have repeated.

Steps:
*1.* Download and install AutoHotKey.
*2.* Download 'Turbofire.ahk' listed at the bottom of this post.
*3.* Right-click and edit 'Turbofire.ahk' and you'll see


```
#ifWinActive World of Warcraft  ; Only run if window 'World of Warcraft' is active
{
	$E::  ; If e is pressed
	$^E:: ; If e+control is pressed
	$+E:: ; If e+shift is pressed
	$!E:: ; If e+alt is pressed
		Loop ; If any of the above is true then loop below
    			{
				if not GetKeyState("E", "P") ; If E is not pressed then break the loop
					break
				if GetKeyState("LCtrl", "P") ; If left control is pressed then send control+e
					Send ^e
				else if GetKeyState("LShift", "P") ; If left shift is pressed then send shift+e
					Send +e
				else if GetKeyState("LAlt", "P") ; If left alt is pressed then send alt+e
					Send !e
				else
					Send e ; If e is pressed with no other modifiers send e
				sleep 135 ; Time in milliseconds between key repeats
			 }
		return
}
```

The script provided makes it so when you hold down e it sends it repeatedly every 135ms instead.
It checks to see if you have any of the modifiers on the left side of your keyboard pressed and also sends them when held down.

To add or edit any more keys just copy everything in and including the outer most brackets, then add a new line and paste.
Replace all the keys in this pasted portion with the new key you want added.
You'll notice all the spots that need replacing in blue font above.

For example, if we wanted to add R to the script we'd now have


```
#ifWinActive World of Warcraft  ; Only run if window 'World of Warcraft' is active
{
	$e::  ; If e is pressed
	$^e:: ; If e+control is pressed
	$+e:: ; If e+shift is pressed
	$!e:: ; If e+alt is pressed
		Loop ; If any of the above is true then loop below
    			{
				if not GetKeyState("e", "P") ; If e is not pressed then break the loop
					break
				if GetKeyState("LCtrl", "P") ; If left control is pressed then send control+e
					Send ^e
				else if GetKeyState("LShift", "P") ; If left shift is pressed then send shift+e
					Send +e
				else if GetKeyState("LAlt", "P") ; If left alt is pressed then send alt+e
					Send !e
				else
					Send e ; If e is pressed with no other modifiers send e
				sleep 135 ; Time in milliseconds between key repeats
			 }
		return
}
{
	$r::
	$^r::
	$+r::
	$!r::
		Loop
    			{
				if not GetKeyState("r", "P")
					break
				if GetKeyState("LCtrl", "P")
					Send ^r
				else if GetKeyState("LShift", "P")
					Send +r
				else if GetKeyState("LAlt", "P")
					Send !r
				else
					Send r
				sleep 135
			 }
		return
}
```

*4.* Save the script if you made any changes.
*5.* Start the script by double clicking it in your file manager.
*6.* Start up WoW and you should be good to go.

Notes:
This script can make typing a bit of a pain while in wow sometimes.
I've messed with the sleep portion myself until i found something that was comfortable
that allowed me to type with no repeats based on how fast I'm able to type.
I suggest playing with the number until you find something that feels good to you.

This may or may not be bannable. It's been discussed and there's been a
few different replies from GM's on the matter, some saying it is and it isn't.
Personally I don't feel it should be seeing how it doesn't fully automate anything.
I've been using this for almost a year now and have been fine.

Uses:
The main reason I use this is to reduce strain on my wrists and fingers from the constant spamming of buttons.
A few people in my family have carpel tunnel and I'd like to prevent that with myself if possible. It also helps your keyboard from breaking down from all the abuse.

The modifier checks in the script are there for a purpose, and that's for your macro's that check for modifiers.
My main is a mage and the following two macros really show the strength of this script.



```
FFB_PB (Set to E)
/cast [mod:shift] Pyroblast
/cast Frostfire Bolt

Sc_PB (Set to R)
/cast [mod:shift] Pyroblast
/cast Scorch
```

With these types of macros and an addon like Quartz it makes using my Hot Streak procs rather easy. 
Just hold down shift towards the end of either cast for a second and it'll que up that instant pyroblast. No need to lift up off of e or r anymore.

Virus Scan: virusscan.png

Download: turbofire.ahk

----------


## sh00k

The same can be done with

GRotation: http://www.mmowned.com/forums/bots-p...ight=grotation

You can also toggle it on and off whenever, eliminating the problem you have while typing in wow.

----------


## Backwardpawn

Ah well, I tried :/

If nothing else, a little scripting lesson for someone. ><

Looking through that post though it seems like a lot of people were having problems getting it to work in some cases cause of vb. Plus he's not supporting it anymore, so I suppose people still having trouble might find some use out of this.

----------


## CrazyCactuaR

> Ah well, I tried :/
> 
> If nothing else, a little scripting lesson for someone. ><
> 
> Looking through that post though it seems like a lot of people were having problems getting it to work in some cases cause of vb. Plus he's not supporting it anymore, so I suppose people still having trouble might find some use out of this.


their were some confusion over ocx files to load up at first but that was soon figured out. Problem is not alot of people know to make macro's for each key so you gotta guide them through every step, which most people who asked for help never actually responded.

gR3 aint dead as such, last version is 3.1.somat just not had time to redo that page (plus didnt think anyone used it really).

I love the concept of what you've made though its pretty ingenius  :Smile: 

edit: decided to redo my frontpage thanks for giving me the effort dude.

----------


## snigelmannen

Ok i like this as a prot warr i gotta spam revenge/hs for long periods and this helps when i cant press my keys when my injured hand hurts, tho i need to be able to choose what key i want to have turbo on.

Backwardpawn + rep thanks for sharing, got the keys i want scripted now.

If anyone could show me an example of function calling from a button click please tell me  :Smile:  pm me for more info

----------


## snigelmannen

This might be "legal", you may not use automation or a program that presses keys without your control but as long as you are in control of the keypresses its legal, turbo mode is availible on some gaming gear so i dont know if this is against the eula, legal blizz shit.

----------


## Backwardpawn

Thanks snigelmannen,  :Smile: 

I'll probably be adding the ability to toggle this script on and off soon with a key like GrazC's program, always thought of adding that but it wasn't big deal to me. I'll work on it later tonight.

----------


## CrazyCactuaR

```
PressKey := ! PressKey
Loop 
{
   	If ! PressKey 
	{
		Break
	}
	Send 1
	Sleep 100
} 
Return
#MaxThreadsPerHotkey 1
```

That should help you out it's what i originally made before writing mine in vb, once pressed it'll loop 1 until pressed again to stop.

----------


## snigelmannen

Lets show what i meant  :Smile: 
So if someone knows how to call hotkey square thingy from the button id appreciate it if you would tell me  :Smile:

----------


## Mr.Zunz

> Lets show what i meant 
> So if someone knows how to call hotkey square thingy from the button id appreciate it if you would tell me


So you want people to press the button and then it begins to spam that "D" key?

----------


## snigelmannen

No it activates that key as the turbokey, i think you missunderstood the script  :Smile:  now you gotta make 



```
    {
    $r::
    $^r::
    $+r::
    $!r::
        Loop
                {
                if not GetKeyState("r", "P")
                    break
                if GetKeyState("LCtrl", "P")
                    Send ^r
                else if GetKeyState("LShift", "P")
                    Send +r
                else if GetKeyState("LAlt", "P")
                    Send !r
                else
                    Send r
                sleep 135
             }
        return
}
```

 where you change R to the key you want.

----------


## dominikid07

thanks for scrpit i have been looking for something like this

----------


## snigelmannen

to pause/suspend the script add at the top of the script


```
^F1::Suspend
```

this will make the script inactive when you press ctrl + F1

----------


## snigelmannen

```
^F1::Suspend ; ctrl + F1
```



```
+F1::Suspend ; Shift + F1
```



```
!F1::Suspend ; Alt + F1
```

----------


## hamncheese

Hi ! 

im sorry for bumping for an old thread, already tried to look everywhere i can think of, but cant find any answer
here's what i have in mind 

im looking for a script to send a Loop to several WoW window
for example i want to send keypress 1 to 5 WoW window


the [AutoHotKey] 'Turbofire' Script
made by Backwardpawn
can only be used to 1 Window
i already tried to modify the script a bit, and failed

ive tried another similar script, a simpler one, and still failed
heres the script ive found from 


```
http://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-general/wow-ui-macros-talent-specs/277779-automatic-1-button-press-spam.html
```



```
#IfWinActive, World of Warcraft
Loop  
{
    ControlSend,,-,World of Warcraft
    sleep 100
}
return

Capslock::
Suspend
Pause,,1
return
```


the idea is to make a Turbo / Spamm script to multiple window

would anyone be kind enough to show me the way on how to do this ?

thank you for reading and asnwering my questions  :Smile: 
ps: my apologies for my lousy english

----------


## mhollier117

is there a way to make it spam all keys, with scroll lock (or whatever you want to set it as) as an on/off toggle for the spam

----------

