Plants vs. Zombies Hotkeys
Plants vs. Zombies can be great, but the lack of hotkeys can be very annoying. The following AutoIt script will make the top number keys correspond to the 10 seed slots. You can also view this code over at Pastie.
; Set our co-ordinates relative to the active window
AutoItSetOption("MouseCoordMode", 0)
$registered = false
Dim $keys[10][2]
While 1
If WinActive("Plants vs. Zombies") Then
RegisterKeys()
Else
UnregisterKeys()
EndIf
Sleep(100)
WEnd
; This function selects the plant associated with the hotkey and moves
; the mouse back into the existing position.
Func SelectPlant()
If WinActive("Plants vs. Zombies") Then
$slot = @HotKeyPressed
$slot -= 1;
If $slot == -1 Then
$slot = 9
EndIf
$currentPosition = MouseGetPos()
MouseClick("primary", $keys[$slot][0], $keys[$slot][1], 1, 0)
MouseMove($currentPosition[0], $currentPosition[1], 0)
EndIf
EndFunc
Func RegisterKeys()
If NOT $registered Then
$i = 0
$x = 114
$y = 70
While $i < 10
; Add the plant position to the array
$keys[$i][0] = $x
$keys[$i][1] = $y
; Register the hotkey for this number
HotKeySet($i, "SelectPlant")
; Increase the X value to be the next button
$x += 52
$i += 1
WEnd
$registered = true
EndIf
EndFunc
Func UnregisterKeys()
If $registered Then
$i = 0
While $i < 10
HotKeySet($i);
$i += 1;
WEnd
$registered = false
EndIf
EndFunc