I didn't want to create a new thread for the same kind of program, so I figured that I would post my alternative take on a Facebook Farmville click script here.
All this program does is automate the clicking process, with variable speeds, columns, and rows, and has hotkeys to make it quicker. This script was really great before they nerfed the instant farm technique, but it's still a time saver for me to this day.
I guess I should also note that this is made to work with Farmville when it's fully zoomed out. Take it or leave it, I just felt like sharing.
;*** Farmville Bot
; v2009-07-30 - Now has a GUI, a target button, and optional avoidance of spawning square.
; v2009-07-31 - Added a Mouse Speed variable, made the GUI look better
; v2009-08-23 - Reworked the entire script to use hotkeys and a variable harvest area
; v2009-08-24 - Finished the rewrite, cleaned and compacted the code, added Help button
; Just some things to remember...
; When zoomed all the way out, the below are true...
; Moving across columns, x+25, y-12
; Moving down rows, x+25, y+12
;*** Design Goals
; 1. Create a better looking interface
; Includes
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
; Define a few (global) variables
$script_x = 0
$script_y = 0
$script_speed = 25
$script_size_columns = 4
$script_size_rows = 4
$script_running = 0
; Hotkeys
HotKeySet("{HOME}", "set_position")
HotKeySet("{INSERT}", "start_script")
HotKeySet("{DELETE}", "stop_script")
; Hotkey Functions
Func set_position()
$script_x = MouseGetPos(0)
$script_y = MouseGetPos(1)
GUICtrlSetData($label_coordinate_x, $script_x)
GUICtrlSetData($label_coordinate_y, $script_y)
EndFunc
Func start_script()
GUICtrlSetColor($graphic_background, "0x33FF33")
;~ GUICtrlSetBkColor($button_help, "0x33FF33")
$script_running = 1
EndFunc
Func stop_script()
GUICtrlSetColor($graphic_background, "0xF0F0F0")
;~ GUICtrlSetBkColor($button_help, "0xF0F0F0")
$script_running = 0
EndFunc
$window_main = GUICreate("Farmville Bot", 200, 165)
$graphic_background = GUICtrlCreateGraphic(0, 0, 200, 165)
GUICtrlSetState($graphic_background, $GUI_DISABLE)
GUICtrlCreateGroup("Coordinates", 5, 5, 75, 60)
GUICtrlCreateLabel("X:", 20, 25, 50)
GUICtrlCreateLabel("Y:", 20, 40, 50)
$label_coordinate_x = GUICtrlCreateLabel($script_x, 40, 25, 30)
$label_coordinate_y = GUICtrlCreateLabel($script_y, 40, 40, 30)
$button_help = GUICtrlCreateButton("Help", 15, 95, 75, 45)
GUICtrlCreateGroup("Size", 90, 5, 105, 61)
GUICtrlCreateLabel("Columns:", 98, 20)
$input_size_columns = GUICtrlCreateInput($script_size_columns, 145, 18, 40, 20)
$updown_size_columns = GUICtrlCreateUpdown($input_size_columns)
GUICtrlSetLimit($updown_size_columns, 20, 1)
GUICtrlCreateLabel("Rows:", 98, 42)
$input_size_rows = GUICtrlCreateInput($script_size_rows, 145, 40, 40, 20)
$updown_size_rows = GUICtrlCreateUpdown($input_size_rows)
GUICtrlSetLimit($updown_size_rows, 20, 1)
GUICtrlCreateGroup("Mouse Speed", 110, 75, 85, 85)
$input_speed = GUICtrlCreateInput($script_speed, 125, 95, 50, 20, $ES_CENTER)
$updown_speed = GUICtrlCreateUpdown($input_speed)
GUICtrlSetLimit($updown_speed, 50, 1)
$button_speed_1 = GUICtrlCreateButton("1", 115, 120, 25, 15)
$button_speed_5 = GUICtrlCreateButton("5", 140, 120, 25, 15)
$button_speed_10 = GUICtrlCreateButton("10", 165, 120, 25, 15)
$button_speed_15 = GUICtrlCreateButton("15", 115, 140, 25, 15)
$button_speed_25 = GUICtrlCreateButton("25", 140, 140, 25, 15)
$button_speed_50 = GUICtrlCreateButton("50", 165, 140, 25, 15)
$window_help = GUICreate("Help", 170, 65, -1, -1, -1, 0, $window_main)
GUICtrlCreateLabel("Home = Set starting coordinates", 10, 5)
GUICtrlCreateLabel("Insert = Start the script", 10, 25)
GUICtrlCreateLabel("Delete = Stop the script", 10, 45)
GUISetState(@SW_SHOW, $window_main)
While 1
If $script_running Then
; Seriously, why is this even necessary...?
$script_size_columns = GUICtrlRead($input_size_columns)
$script_size_rows = GUICtrlRead($input_size_rows)
farm()
EndIf
$script_speed = GUICtrlRead($input_speed)
$gui_msg = GUIGetMsg(1)
Select
Case $gui_msg[0] = $GUI_EVENT_CLOSE
If $gui_msg[1] = $window_main Then
ExitLoop
ElseIf $gui_msg[1] = $window_help Then
GUISetState(@SW_HIDE, $window_help)
EndIf
Case $gui_msg[0] = $button_help
GUISetState(@SW_SHOW, $window_help)
Case $gui_msg[0] = $button_speed_1
GUICtrlSetData($input_speed, "1")
Case $gui_msg[0] = $button_speed_5
GUICtrlSetData($input_speed, "5")
Case $gui_msg[0] = $button_speed_10
GUICtrlSetData($input_speed, "10")
Case $gui_msg[0] = $button_speed_15
GUICtrlSetData($input_speed, "15")
Case $gui_msg[0] = $button_speed_25
GUICtrlSetData($input_speed, "25")
Case $gui_msg[0] = $button_speed_50
GUICtrlSetData($input_speed, "50")
EndSelect
Sleep(25)
WEnd
Func farm()
; Some (local) variables
$current_x = $script_x
$current_y = $script_y
For $current_row = 1 To $script_size_rows Step 1
For $current_column = 1 To $script_size_columns Step 1
MouseClick("primary", $current_x, $current_y, 1, $script_speed)
$current_x = $current_x + 25
$current_y = $current_y - 12
If Not $script_running Then ExitLoop
Next
; Reset to beginning of row
$current_x = $current_x - (25 * $script_size_columns)
$current_y = $current_y - (-12 * $script_size_columns)
; Advance to the next row
$current_x = $current_x + 25
$current_y = $current_y + 12
If Not $script_running Then ExitLoop
Next
; Stop running now
stop_script()
EndFunc