All pastes #490479 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-05-16 01:03 UTC
rendered paste body
func SellItems()
	dim $ItemsArray[6][2]
	$ItemsArray[0][0] = 0 
	$ItemsArray[1][0] = 0
	$ItemsArray[2][0] = 0
	$ItemsArray[3][0] = 0
	$ItemsArray[4][0] = 0
	$ItemsArray[5][0] = 0
	local $InvLeft = 505, $InvTop = 228, $invRight = 745, $InvBottom = 392 ;the square to scan for items
	local $numPixelsFound = 0, $ConsecutiveLines = 0, $ItemsArrayIndex = 0
	for $y = $InvTop to $InvBottom ;scan top to bottom...
		for $x = $InvLeft to $invRight ;... left to right
			if PixelGetColor( $x, $y ) == $ItemColor_White then $numPixelsFound += 1 ;get the total pixels per lines
		Next
		if $numPixelsFound < 2 then 
			;this line is empty
			;_log( $y & ' is empty' )
			if $ConsecutiveLines > 3 then 
				;this means we found an item and are at the end of it
				_log( 'Item end found, Start =  ' &  $y - $ConsecutiveLines & ' End = ' & ($y - 1) & ' Size = ' & $ConsecutiveLines )			
				_log( 'Item code = ' & SpecificChecksum( $InvLeft, $y - $ConsecutiveLines, $invRight, $y - 1, $ItemColor_White ) )
				$ItemsArray[$ItemsArrayIndex][0] = $y - $ConsecutiveLines
				$ItemsArray[$ItemsArrayIndex][1] = $y - 1
				$ItemsArrayIndex +=1 ;increase the index
			EndIf
			$ConsecutiveLines = 0
		Else
			;this line contains white pixels
			_log( $y & ' contains white pixels. Total pixels found: ' & $numPixelsFound )
			$ConsecutiveLines += 1
		EndIf
		$numPixelsFound = 0
	Next
	local $LastItem = 5
	for $i = 0 to 5
		if $ItemsArray[$i][0] == 0 then 
			$LastItem = $i 
			ExitLoop
		EndIf
	Next
	dim $SellItems[6]
	$SellItems[0] = false 
	$SellItems[1] = false 
	$SellItems[2] = false 
	$SellItems[3] = false 
	$SellItems[4] = false 
	$SellItems[5] = false
	local $continueloop
	for $i = 0 to $LastItem ;-1
		$continueloop = true
		Switch( $i )
			case 1
				for $x = $InvLeft to $invRight ;... left to right
					if PixelGetColor( $x, $InvTop -1 ) == $ItemColor_White Then
						$SellItems[0] = False
						$continueloop = false
					EndIf 
				Next				
			case 5
				for $x = $InvLeft to $invRight ;... left to right
					if PixelGetColor( $x, $InvBottom + 1 ) == $ItemColor_White then 
						$SellItems[5] = false 
						$continueloop = false
					EndIf
				Next
		EndSwitch
		if not $ContinueLoop then ContinueLoop
		if $i > 5 then ExitLoop
			_log( 'Selling item #' & $i & ' to true' )
		$SellItems[$i] = true
		$ItemCode = SpecificChecksum( $InvLeft,$ItemsArray[$i][0],$invRight,$ItemsArray[$i][1], $ItemColor_White )
		_log($ItemCode)
		for $a = 0 to UBound( $KeepItems ) - 1
			if $ItemCode == $KeepItems[$a] then 
				_log( 'Item is in keep items list. current item: ' & $ItemCode & ' List item: ' & $KeepItems[$a] )
				$SellItems[$i] = false 
				ExitLoop
			EndIf
		Next
	Next
	for $i = 0 to 5
		if $SellItems[$i] == true then 
			if $ItemsArray[$i][0] < $InvTop then ContinueLoop ;this is a GAY bug, sometime i click out of inv (I think y = 0) must investigate, this is a temp fix
			_log( 'Selling item #' & $i )
			;todo sell item 
			MouseClick( 'left', $InvLeft + 50, $ItemsArray[$i][0] + 4 ) 
			Sleep( Random( 1000, 2000 ) )
			MouseClick( 'left',799,597 ) 
			Sleep( Random( 1000, 2000 ) )
			return true
		Else
			_log( 'Dosent selling item #' & $i )
		EndIf
	Next
	return False
	;if return false it means no item is sold, so scrool or if at end exit, return true will ONLY sell 1 item.

EndFunc
func SpecificChecksum($left, $top, $right, $bottom, $color)
	local $LastFound, $ConsecutiveFails = 0, $TotalColors = 0

	local $sum2[255];array of bytes
	local $sum = 0, $index = 1, $byteIndex = 0,$started = false
	for $x5 = $right to $left step -3
		for $y5 = $Bottom to $Top - 14 step -3
			if PixelGetColor( $x5, $y5 ) == $color then
				$sum += $index
				$started = true
			EndIf
			if not $started then ContinueLoop
			$index = $index *2
			if $index > 4294967295 then 
				;add the byte into the array
				$sum2[$byteIndex] =  Hex( $sum ) 
				$sum = 0
				$byteIndex += 1
				$index = 1
			EndIf
		Next
	Next
	;built the string off the bytes
	$bytestring = ''
	for $i =  $byteIndex to 0 step -1
		$bytestring &=  Hex( $sum2[$i]  )
	Next
	$bytestring = StringReplace( $bytestring, '0','')
	return $bytestring
EndFunc