Jump to content

PixelCheckSum


Recommended Posts

Hi all,

Im a bit of a noobist scripting - but I've been having a bit of a problem lately of getting disconnected while running my fishbot on WoW. I've been thinking that the PixelCheckSum would be the way to go - if the color of that area changes, it means the character has been disconnected.

;***************************************************************************************************

*****
; See if the mana bar still exists

; Get initial checksum
$checksum = PixelChecksum(100,80,110,80)

; Check the region every 30000 ms to make sure character hasn't been logged off
While $checksum = PixelChecksum(100,80,110,80)
  Sleep(30000)
WEnd

login()
;***************************************************************************************************

***
func login()
Send("{ENTER}")
Send("UserName")
Send("{TAB}")
Send("Password")
Send("{ENTER}")
sleep(10000)
Send("{ENTER}")
sleep(20000)

endfunc

I've been having a bit of trouble incorporating the PixelCheckSum into the script though.. any help?

; <AUT2EXE VERSION: 3.1.0.4>

; ----------------------------------------------------------------------------
; <AUT2EXE INCLUDE-START: C:\Documents and Settings\Home\My Documents\fishing.au3>
; ----------------------------------------------------------------------------

; ****************************************************************************************************

****
; FishBOT by Foobie - adapted from Pantless Krab's example

; Globals
$title = "WoW FishBOT"
$win_title = "World of Warcraft"

$top_border_height = 23
$left_border_width = 4

$screen_width = 1024    
$screen_height = 768

$time_to_wait = 30050
dim $start_time

; ****************************************************************************************************

****
; Hot Keys
HotKeySet("{PAUSE}", "request_end")

; ****************************************************************************************************

****
if not WinExists($win_title, "") then
msg($win_title & " window must be open.")
Exit
endif

WinActivate($win_title, "")
WinSetOnTop($win_title, "", 0)
Sleep(500)

check_window()

$win_pos = WinGetPos($win_title, "")
$win_x = $win_pos[0] + $left_border_width
$win_y = $win_pos[1] + $top_border_height

$top = $win_y + (.25 * $screen_height)
$bottom = $top + (.35 * $screen_height) - 1
$left = $win_x + (.15 * $screen_width)
$right = $left + $screen_width - (.15 * 2.0 * $screen_width) - 1

; Show a visual confirmation by making the mouse draw the area on the screen
; that will be used to scan for the bobber.
MouseMove($left, $top, 2)
MouseMove($right, $top, 2)
MouseMove($right, $bottom, 2)
MouseMove($left, $bottom, 2)


cast_pole()
find_float()

; ****************************************************************************************************

****
func find_float()
$color_dark_purple = 0x463B4D
$color_dark_blue = 0x283A64
$color_red = 0xA72C0B
$color_stormwind_daylight_blue = 0x2B3254
$color_stormwind_daylight_red = 0x6B1F0C
$color_beige = 0xBB9B3D
$color_night_blue = 0x0B1931

; this is the color used to pixelsearch for the bobber. change the color to a good color
; on the bobber that is prominent on the screen
$color_to_use = $color_red

; this is the search tolerance. In areas where the bobber colors really stand out, you can
; use a fairly high threshold. In areas where the bobber colors are fairly muted in with
; the background, you will have to lower the values considerably.
$bobber_search_tolerance = 30

; it's better to use lower values here in favor of accurate searching. This will take more
; time for it to detect the bobber, but usually the splash doesn't occur until at least 30%
; of the time has run out, and by that time, it should have detected the bobber (assuming the
; color values and tolerance are correct).
$bobber_search_step = 2

; Search for float. In certain lighting, the part of the float may look more purple than
; blue. In this case, using $color_red tends to work the best with a tolerance of 20.
while 1
if TimerDiff($start_time) >= $time_to_wait then
cast_pole()
endif

$pos = PixelSearch($left, $top, $right, $bottom, $color_to_use, $bobber_search_tolerance, $bobber_search_step)
if @error then
SetError(0)
else
MouseMove($pos[0], $pos[1], 2)
find_splash($pos[0], $pos[1] )
endif
Sleep(10)
wend
endfunc

; ****************************************************************************************************

****
func find_splash($float_x, $float_y)
$search_left = $float_x - 32
$search_right = $search_left + 52
$search_top = $float_y - 32
$search_bottom = $search_top + 64

; Usually you do not have to modify the search color for the splash, as the pixels
; have a very distinctive, bright color.
$splash_color = 0xF6F6F6

; Sometimes 30 tolerance works well, sometimes 20 is better in lit areas to avoid catching highlights
; in other things.
$splash_tolerance = 24

; The search step can be pretty small here (1 to 3) without worries because the search area is
; so small once it has been narrowed down - speed isn't much of an issue.
$splash_search_step = 2

; Search for splash
while TimerDiff($start_time) < $time_to_wait
$pos = PixelSearch($search_left, $search_top, $search_right, $search_bottom, $splash_color, $splash_tolerance, $splash_search_step)
if @error then
SetError(0)
else
; Click on the splash
Send("{SHIFTDOWN}")
Sleep(100)
MouseClick("right", $pos[0], $pos[1], 1, 2)
Sleep(100)
Send("{SHIFTUP}")

Sleep(5000)

ExitLoop
endif
Sleep(10)
wend

; Cast pole and start all over again.
cast_pole()
endfunc

; ****************************************************************************************************

****
func cast_pole()
$start_time = TimerInit()
Send("1")
Sleep(3000)
endfunc

; ****************************************************************************************************

****
func check_window()
$dimensions = WinGetClientSize($win_title, "")
if $dimensions[0] <> $screen_width or $dimensions[1] <> $screen_height then
msg("Idiot! Wrong window size. You must use " & $screen_width & "x" & $screen_height & " resolution in full screen mode.")
Exit
endif
endfunc

; ****************************************************************************************************

****
func msg($text)
MsgBox(0, $title, $text)
endfunc

; ****************************************************************************************************

****
func msg_array($title, $array, $num_elements)
dim $text
$text = $array[0]

for $j = 1 to $num_elements - 1
$text = $text & ", " & $array[$j]
next

MsgBox(0, $title, $text)
endfunc


; ****************************************************************************************************

****
func request_end()
$MB_YESNO = 4
$MB_YES = 6

if MsgBox($MB_YESNO, $title, "End script?") == $MB_YES then
Exit
endif
endfunc

; ****************************************************************************************************

****
func drain_timer()
Msg("Restart")
$start_time = $start_time - $time_to_wait
endfunc

; ****************************************************************************************************

****
Link to comment
Share on other sites

  • 3 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...