Ayuda mejorar: codigo
Publicado: 09 Jun 2011, 16:53
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 :
Un Saludo
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