Página 1 de 1

Ayuda mejorar: codigo

Publicado: 09 Jun 2011, 16:53
por Fraskix
Hola, es mi primer post en este foro, así que un saludo para todos!!

Estoy tratando de hacer un bot., para cierto juego online... la cuestión es que estoy muy verde en esto de la programación., y no consigo hacer que el Bot valla fino del todo.
Tratare de explicar en q consiste el Bot:

Se trata de ir recogiendo una seríe de items, que van apareciendo por el mapa, todo bien hasta hace poco tiempo...Me sigo explicando ...jejej,.. el bot que realice en sus origenes, hacia uso de la famosa.-
DLL ImageSearchDLL,. y funcionaba perfecto., hasta que hace poco han cambiado los items, Los nuevos items van cambiando de color cada poco, y ya no es viable el hacer uso de esta DLL.,

Lo que pretendo es lo siguente:

Buscar en una región , el pixel o los pixeles q esten en movimieto y obtener sus coordenadas.

Como soy un neofito en esto de Autoit, lo unico que se me ha ocurrido , es hacer uso de PixelChecksum ., El codigo que pego acontinuación funciona de aquella manera...es decir va bien pero no al 100%
Es lento, de vez en cuando falla y no detecta bien el pixel en movimiento...

Haber si me podeis ayudarme, o en su caso mejorar un poco el codigo :

Código: Seleccionar todo

Func _Busca1()
	Local $Pos = MouseGetPos()
	Local $Px  =$Pos [0]
	Local $Py  =$Pos [1]
	Const $vx = 160
	Const $vy = 160
	Const $x  = 80
	Const $y  = 80
	$checksum1 = PixelChecksum($Px-$vx,$Py-$vy,$Px,$Py)
	$checksum2 = PixelChecksum($Px,$Py-$vy,$Px+$vx,$Py)
	$checksum3 = PixelChecksum($Px-$vx,$Py,$Px,$Py+$vy)
	$checksum4 = PixelChecksum($Px,$Py,$Px+$vx,$Py+$vy)

		$var=0
		$valor=0
		
	if $control = 1 And _Cursor()=2 Then			
			Do 
					$valor = $valor +1
				if $valor >2 then 
					$var =1
		
					MouseMove($Px-$x,$Py-$y)
					_Busca2()
					ExitLoop
				EndIf
				
			Until $checksum1 = PixelChecksum($Px-$vx,$Py-$vy,$Px,$Py)
				
			if $var =0 then
			Do
					$valor = $valor +1
				if $valor >3 then 
					$var =1
			
					MouseMove($Px+$x,$Py-$y)
					_Busca2()
					ExitLoop
				EndIf
			
			Until $checksum2 = PixelChecksum($Px,$Py-$vy,$Px+$vx,$Py)
			EndIf	
				
			If $var =0 then
	
			Do
					$valor = $valor +1
				if $valor >4 then 
					$var =1
				
					MouseMove($Px-$x,$Py+$y)
					_Busca2()
					ExitLoop
				EndIf
				
			Until $checksum3 = PixelChecksum($Px-$vx,$Py,$Px,$Py+$vy)
			EndIf
			
			If $var =0 then
				
			Do
						
					$valor = $valor +1
				if $valor >5 then 
					$var =1
	
					MouseMove($Px+$x,$Py+$y)
					_Busca2()
					ExitLoop
				EndIf
			
			Until $checksum4 = PixelChecksum($Px,$Py,$Px+$vx,$Py+$vy)
			EndIf
		$contador = $contador + 1
	
	Else
	
		Sleep(100)
	
	$contador = $contador + 1	
	EndIf
		
	
EndFunc	
	
Func _Busca2()
	Local $Pos = MouseGetPos()
	Local $Px  =$Pos [0]
	Local $Py  =$Pos [1]
	Const $vx = 80
	Const $vy = 80
	Const $x  = 40
	Const $y  = 40
	$checksum1 = PixelChecksum($Px-$vx,$Py-$vy,$Px,$Py)
	$checksum2 = PixelChecksum($Px,$Py-$vy,$Px+$vx,$Py)
	$checksum3 = PixelChecksum($Px-$vx,$Py,$Px,$Py+$vy)
	$checksum4 = PixelChecksum($Px,$Py,$Px+$vx,$Py+$vy)

		$var=0
		$valor=0
		
	if $control = 1 And _Cursor()=2 Then		
			Do 
					$valor = $valor +1
				if $valor >2 then 
					$var =1
				
					MouseMove($Px-$x,$Py-$y)
					_Busca3()
					ExitLoop
				EndIf
				
			Until $checksum1 = PixelChecksum($Px-$vx,$Py-$vy,$Px,$Py)
				
			if $var =0 then
			Do
					$valor = $valor +1
				if $valor >3 then 
					$var =1
			
					MouseMove($Px+$x,$Py-$y)
					_Busca3()
					ExitLoop
				EndIf
			
			Until $checksum2 = PixelChecksum($Px,$Py-$vy,$Px+$vx,$Py)
			EndIf	
				
			If $var =0 then
	
			Do
					$valor = $valor +1
				if $valor >4 then 
					$var =1
				
					MouseMove($Px-$x,$Py+$y)
					_Busca3()
					ExitLoop
					
				EndIf
				
			Until $checksum3 = PixelChecksum($Px-$vx,$Py,$Px,$Py+$vy)
			EndIf
			
			If $var =0 then
				
			Do
						
					$valor = $valor +1
				if $valor >5 then 
					$var =1
			
					MouseMove($Px+$x,$Py+$y)
					_Busca3()
					ExitLoop
				EndIf
			
			Until $checksum4 = PixelChecksum($Px,$Py,$Px+$vx,$Py+$vy)
			EndIf
		
	Else
		
		Sleep(100)
		
		$contador = $contador + 1
	EndIf
		
EndFunc		

Func _Busca3()
	Local $Pos = MouseGetPos()
	Local $Px  =$Pos [0]
	Local $Py  =$Pos [1]
	Const $vx = 50
	Const $vy = 50
	Const $x  = 25
	Const $y  = 25
	$checksum1 = PixelChecksum($Px-$vx,$Py-$vy,$Px,$Py)
	$checksum2 = PixelChecksum($Px,$Py-$vy,$Px+$vx,$Py)
	$checksum3 = PixelChecksum($Px-$vx,$Py,$Px,$Py+$vy)
	$checksum4 = PixelChecksum($Px,$Py,$Px+$vx,$Py+$vy)


		$var=0
		$valor=0
		$color=0
		$coord=0
		$p =0	

	if $control = 1 And _Cursor()=2 Then
			Do 
				
					$valor = $valor +1
				if $valor >2 then 
					$var =1
					
					MouseMove($Px-$x,$Py-$y)
					_Chorras($Px-$vx,$Py-$vy)
					ExitLoop
				EndIf
				
			Until $checksum1 = PixelChecksum($Px-$vx,$Py-$vy,$Px,$Py)
				

			if $var =0 then
			Do
				
					$valor = $valor +1
				if $valor >3 then 
					$var =1
			
					MouseMove($Px+$x,$Py-$y)
					_Chorras($Px,$Py-$vy)
					ExitLoop
				EndIf
			
			Until $checksum2 = PixelChecksum($Px,$Py-$vy,$Px+$vx,$Py)
			EndIf	
				
			If $var =0 then
	
			Do
				
					$valor = $valor +1
				if $valor >4 then 
					$var =1
					
					MouseMove($Px-$x,$Py+$y)
					_Chorras($Px-$vx,$Py)
					ExitLoop
					
				EndIf
				
			Until $checksum3 = PixelChecksum($Px-$vx,$Py,$Px,$Py+$vy)
			EndIf
			
			If $var =0 then
				
			Do
				
					$valor = $valor +1
				if $valor >5 then 
					$var =1
					
					MouseMove($Px+$x,$Py+$y)
					_Chorras($Px,$Py)
					
					ExitLoop
				EndIf
			
			Until $checksum4 = PixelChecksum($Px,$Py,$Px+$vx,$Py+$vy)
			EndIf
	
	Else
		
		Sleep(100)
		
		$contador = $contador + 1
	EndIf	
	

	EndFunc	;_Busca3
	

Func _Chorras($cxx,$cyy,$control=1)
	
			;Sleep (000)
	
 	$Pos = MouseGetPos()
		
		;$cxx = $Pos[0]-50
		;$cyy = $Pos[1]-50
		$cx =0
		$cy =0
if $control = 1 And _Cursor()=2 Then	
		
	for $r = 0 To 40 Step 20
			
		$cy = $cyy +$r
			
		for $i = 0 to 45 step 15
				
				$cx = $cxx +$i
			 			
				$checksum = PixelChecksum($cx,$cy,$cx,$cy,1,0,1)
			;MouseMove($cx,$cy)
				$o =0			
				Do
					
				$o= $o +1
					if $o =3 and  _Cursor()=2 Then
						Sleep(50)
						MouseClick("left",$cx,$cy,1)
						$control=0
						$contador =0
						;_glitziesuchen()
						Sleep(3000)
						ExitLoop
					ElseIf $o = 3 then
					;_contador()	
					$contador = $contador + 1
					ExitLoop	
					EndIf
					
				Until $checksum = PixelChecksum($cx,$cy,$cx,$cy,1,0,1) 
				
					
				if $o =3 Then ExitLoop
					MouseMove($cx,$cy)
		
		Next
	
	if $o =3 Then	ExitLoop	
	Next
    
Else
		
		Sleep(100)
	$contador = $contador + 1
EndIf	
		
	EndFunc ;Fun _Chorras

Un Saludo