All pastes #437370 Raw Edit

omg guildwars pickit

public text v1 · immutable
·published 2007-04-13 00:18 UTC
rendered paste body
;X: 250	Y: 92 X: 755	Y: 161
;X: 11	Y: 165   X: 791	Y: 669	
;X: 801	Y: 521   X: 1010	

;set coorsd relative to client window
Opt ( "CaretCoordMode" , 2 )
opt ( "MouseCoordMode" , 2 )
opt ( "PixelCoordMode" , 2 )
WinActivate( 'Guild Wars' )
Sleep( 1000 )


;configs
global $ScanStep = 30 ;scan each x pixels on each consecutive scans
global $ScanIncrement = 1 ;the increment to add to the starting value of scanning area each time the scan loop

;consts
global const $StartX1 = 250, $StartX2 = 11, $StartX3 = 801, _
		$StartY1 = 52, $StartY2 = 125, $StartY3 = 481, _
		$EndX1 = 755, $EndX2 = 791, $EndX3 = 1010, _
		$EndY1 = 121, $EndY2 = 629, $EndY3 = 627
global const $ItemColor_White = 16777215, $ItemColor_Blue = 0x99EEFF ;item colors definition

scan()

func Scan()
	local $foundX=0, $foundY=0
	for $i = 0 to $ScanStep step $ScanIncrement ;loop scanning to try to find an item faster so we scan big area only at once
		;first box
		for $x = ($StartX1 + $i) to $EndX1 step $ScanStep
			for $y = ($StartY1 + $i) to $EndY1 step $ScanStep
				if PixelIsItem( $x, $y ) then 
					;MouseMove( $x, $y )
					$foundX = $x
					$foundY = $y
					ExitLoop 3
					;MsgBox(0,'', $x & ' ' & $y )
					;return True
				EndIf
			Next
		Next
		;2nd box
		for $x = ($StartX2 +$i) to $EndX2  step $ScanStep
			for $y = ($StartY2 + $i) to $EndY2 step $ScanStep
				if PixelIsItem( $x, $y ) then 
					;MouseMove( $x, $y )
					$foundX = $x
					$foundY = $y
					ExitLoop 3
					;MsgBox(0,'', $x & ' ' & $y )
					;return True
				EndIf
			Next
		Next
		;3rd box
		for $x = ($StartX3 +$i) to $EndX3 step $ScanStep
			for $y = ($StartY3 + $i) to $EndY3 step $ScanStep
				if PixelIsItem( $x, $y ) then 
					;MouseMove( $x, $y )
					$foundX = $x
					$foundY = $y
					ExitLoop 3
					;MsgBox(0,'', $x & ' ' & $y )
					;return True
				EndIf
			Next
		Next		
	Next
	for $x = $foundX to $foundX + 15
		if PixelGetColor( $x, $foundY ) <> $ItemColor_White then
			;MsgBox(0,'', PixelGetColor( $x, $foundY ) )
			ExitLoop
		EndIf
	Next
	if $foundX > 0 then 
		MouseMove( $foundX, $foundY )
	EndIf
	;7231281
EndFunc

func tempscan( $x, $y)
	$Item_XMax = 100 ; maximum x size of an item name (used to search)
	$Item_YMax = 20 ; same as above
	$PixelsMatched = 0
	$Item_MinimumPixel = 10
	local $ItemFound[3]
	for $iX = $x - $Item_XMax / 2 to $x + $Item_XMax / 2
					for $iY = $y - $Item_YMax / 2 to $y +$Item_YMax / 2
						$currPixel = PixelGetColor( $iX , $iY )
						if  $currPixel ==  $ItemColor_White or  $currPixel == $ItemColor_Blue  Then
						$PixelsMatched += 1
						if $PixelsMatched == $Item_MinimumPixel Then
							$ItemFound[0] = true 
							$ItemFound[1] = $x
							$ItemFound[2] = $y 
							return true
						EndIf
					EndIf
					Next
				Next
				return False
				
EndFunc

func PixelIsItem( $x, $y )
	$Color = PixelGetColor( $x, $y )
	local $fooColor = 0
	Switch $Color
		case $ItemColor_White
			;MsgBox(0,'','FOUND')
			$fooColor = $ItemColor_White
		Case $ItemColor_Blue
			;MsgBox(0,'','FOUND')
			$fooColor = $ItemColor_Blue
		case Else
			return False
	EndSwitch
	if $fooColor == 0 then return false 
	;if ($x > 16) and ($x < 53) then
	;	if ($y > 644) and ($y < 685) Then
	;		return False ;we found the dialog box hahaha
	;	EndIf
	;EndIf
	;MsgBox(0,'', $x & ' ' & $y )
	if tempscan($x, $y) then 
		return true
	Else
		MsgBox(0,'','did not find any item')
	EndIf
EndFunc

func GetItemCode( $x, $y )
	;find the left side of the item
	local $Left, $Top, $Right, $Bottom
	local $LastLeft, $LastTop, $LastRight, $LastBottom
EndFunc