I don't know what they did, but the latest version of AutoHotkey (1.1.2878) fixed a problem where you couldn't send certain key strokes to BF2 - thanks guys.
So here is a pack of "Throw" functions.
- ThrowClaymoreOnly() - Optimized to throw a single Claymore and then switch back to main weapon
- ThrowMedicBag() - Throws a single Medic Bag and switches back to main weapon (doesn't work for other kits - but is fast)
- ThrowSupplyOrMedicBagC4() - Optimized for throwing Supply Bags, but can throw Medic and a C4 as well
- ThrowATMineOrSupplyMedicBagC4() - Optimized for throwing AT mines, but can also throw C4, Supply and Medic bags as well
- ThrowC4() - Optimized to throw a single C4 and then switch to main weapon
- ThrowC4andSwitchToDetinator() - Optimized to throw 1x C4 and then switch to Detinator
- Throw2xC4andSwitchToDetinator() - Optimized to throw 2x C4 and then Switch to the Detinator
- Throw3xC4andSwitchToDetinator() - Optimized to throw 3x C4 and then Swtich to the Detinator
- Throw2xC4andExplode() - Optimized to throw 2x C4 and then immediately explode (you will be killed)
- ThrowC4andExplode() - Optimized to throw 1x C4 and immediately explode (you will be killed)
- Throw3xC4andExplode() - Optimized to throw 3x C4 and immediately explode (you will be killed)
- ThrowAny() - This is the catch all function if you change kits often. The delays have been slowed to work with all kits - not a good idea to use with SpecOps kit though
By default I mapped these functions to press the '5' key and 'Shift + 5'; however while sprinting you need to depress the Shift key briefly. The keymap is for 'Shift+5' allows the function to run, but you must depress the Shift key briefly (I tried using
{LShift Up} and
BlockInput, on and stuff, but I didn't get it to work).
You'll need to goto the bottom of this script and uncomment the function you wish to use. Currently pressing '5' or 'Shift+5' does nothing until you uncomment (remove the ';') in the script below:
Code:
;
; AutoHotkey Version: 1.1.2878+
; Language: English
; Platform: Win9x/NT
;
;
; Only run this script when bf2.exe is running in the foreground
;
#SingleInstance force
#InstallKeybdHook
#InstallMouseHook
SetTimer, KeepRunning
return
KeepRunning:
; Get the process name of the active window (i.e. Notepad.exe)
WinGet, szProcessName, ProcessName, A
if szProcessName = bf2.exe
{
Suspend, off
}
else
{
Suspend, on
}
return
;
; Disable the Window's keys so they don't switch to desktop while in-game
;
$LWin:: ; Left Windows Button
$RWin:: ; Right Windows Button
; Do nothing
return
$^CapsLock::
ExitApp
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Pressing Ctrl+V while BF2 is active
;
$^v::
Sleep 200
SetKeyDelay, 40
Send, {Space}%clipboard%
SetKeyDelay, 0
return
ThrowClaymoreOnly()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 950
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Send, {3 down}
Sleep 40
Send, {3 up}
}
ThrowMedicBag()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 100
MouseClick, Left, , , , , D
sleep 400
MouseClick, Left, , , , , U
Send, {3 down}
Sleep 40
Send, {3 up}
}
ThrowSupplyOrMedicBagC4()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 600
MouseClick, Left, , , , , D
sleep 400
MouseClick, Left, , , , , U
Send, {3 down}
Sleep 40
Send, {3 up}
}
ThrowATMineOrSupplyMedicBagC4()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 999
MouseClick, Left, , , , , D
sleep 500
MouseClick, Left, , , , , U
Send, {3 down}
Sleep 40
Send, {3 up}
}
ThrowC4()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 400
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Send, {3 down}
Sleep 40
Send, {3 up}
}
ThrowC4andSwitchToDetinator()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 500
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Sleep 700
MouseClick, right, , , , , D
sleep 100
MouseClick, right, , , , , U
}
Throw2xC4andSwitchToDetinator()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 500
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Sleep 700
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
sleep 700
MouseClick, right, , , , , D
sleep 100
MouseClick, right, , , , , U
}
Throw3xC4andSwitchToDetinator()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 500
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Sleep 700
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Sleep 700
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
sleep 700
MouseClick, right, , , , , D
sleep 100
MouseClick, right, , , , , U
}
Throw2xC4andExplode()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 500
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Sleep 700
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
sleep 700
MouseClick, right, , , , , D
sleep 100
MouseClick, right, , , , , U
Sleep 200
MouseClick, left, , , , , D
sleep 100
MouseClick, left, , , , , U
}
ThrowC4andExplode()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 500
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Sleep 700
MouseClick, right, , , , , D
sleep 100
MouseClick, right, , , , , U
Sleep 200
MouseClick, left, , , , , D
sleep 100
MouseClick, left, , , , , U
}
Throw3xC4andExplode()
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 500
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Sleep 700
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
Sleep 700
MouseClick, Left, , , , , D
sleep 100
MouseClick, Left, , , , , U
sleep 700
MouseClick, right, , , , , D
sleep 100
MouseClick, right, , , , , U
Sleep 200
MouseClick, left, , , , , D
sleep 100
MouseClick, left, , , , , U
}
ThrowAny() ; Slow
{
Send, {5 down}
Sleep 60
Send, {5 up}
Sleep 1000
MouseClick, Left, , , , , D
sleep 500
MouseClick, Left, , , , , U
Send, {3 down}
Sleep 40
Send, {3 up}
}
;
; Remove Comment ';' to do that function
;
$5::
$+5:: ; Shift + 5 (must depress Shift briefly - can't use kit while sprinting)
;ThrowClaymoreOnly()
;ThrowMedicBag()
;ThrowSupplyOrMedicBagC4()
;ThrowATMineOrSupplyMedicBagC4()
;ThrowC4()
;ThrowC4andSwitchToDetinator()
;Throw2xC4andSwitchToDetinator()
;Throw3xC4andSwitchToDetinator()
;Throw2xC4andExplode()
;ThrowC4andExplode()
;Throw3xC4andExplode()
;ThrowAny() ; Slow
return