Bot fonctionnant avec le changement d'etat du curseur

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Status
Not open for further replies.

Selautoit

Nouveau membre
Jan 5, 2012
4
0
301
Bonsoir, je suis nouveau sur ce site et je programme en autoit. Pour en venir au sujet de mon post, mon projet est de faire un bot qui ne fonctionnerait pas grace a la recherche de pixel mais par rapport au changement d'etat du curseur, mais seul je n'arrive pas a trouvé de solution donc si quelqu'un a une idée qu'elle n'hesite pas. Merci d'avance ;)
 

Bit-X

V
Jan 11, 2012
703
1
924
Dans un livre
Discord
kolibry#8414
Tu vas dans la mauvaise direction pour créer un bot. Le curseur en jeu n'a rien à voir avec celui de Windows.

Tu peut utiliser le changement de curseur mais en utilisant les pixels ^^, et ... cette technique existe déjà, je l'utilise dans mes bots.
 

Selautoit

Nouveau membre
Jan 5, 2012
4
0
301
Tu peut utiliser le changement de curseur mais en utilisant les pixels ^^, et ... cette technique existe déjà, je l'utilise dans mes bots.

Ah et comment tu t'y prend parce que la je ne vois pas trop, tu utilise des fonction deja existante ou tu les as créé toi meme? Parce que actuellement j'utilisais la recherche pixel mais celle-ci fonctionne moins bien que dans la 1.29 je trouve donc j'ai eu cette idée mais j'ai pas reussi a mettre le doigt sur un moyen de faire ca :/
J'ai essayé de mettre en place la reconnaissance de l'apparition de l'image lorsqu'on survole un groupe de monstre, mais pour le moment rien du tout.. et j'ai mis des mouvement de souris pour qu'il cherche mais bon je pense que je m'y prend mal.. si tu pouvais me mettre sur la voie ce serait d'un grand secous our moi ^^'
 
Last edited:

Bit-X

V
Jan 11, 2012
703
1
924
Dans un livre
Discord
kolibry#8414
Voila un petit quelque chose qui devrai t'aider.
C'est une fonction utilisant une dll qui sert à rechercher une image .bmp (24 bit)sur une zone définie de l'écran.

Tu trouvera le tout téléchargeable en pièce jointe.
Cheat-gam3 : La r

Le principe est simple, tu utilise cette fonction avec des images que tu fait en utilisant 'Paint' et la touche Imp. Ecran.

0. Tu inclus le fichier .au3 en haut de ton script
1. Tu fait un ScreenShot.
2. Tu le Colle dans Paint.
3. Tu sélectionne le morceau que tu veu mettre en recherche (il doit être le plus petit possible, quelques pixels)
4. Tu créer un nouveau fichier et y colle la sélection.
5. Tu enregistre la petite image au format BMP (24Bit , pas un autre) dans le dossier de ton script.
6. Tu peu maintenant utiliser cette image avec la fonction suivante:
PHP:
ChercheBmpZone("Le_nom_de_l'image",1,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance)

Détails sur la fonction:
$x1 = point haut gauche du rectangle de recherche
$y1 = point haut droite du rectangle de recherche
$right = point bas droite du rectangle de recherche
$bottom = point bas gauche du rectangle de recherche
ByRef $x = Mettre une variable de retour (déclaré) pour la coordonnée X
ByRef $y = Mettre une variable de retour (déclaré) pour la coordonnée Y
$tolerance = 0 à 255 . (tolérence pour la variation légère des couleurs) 0 étant très rapide 255 un peu lent.

Exemple:
PHP:
$result88 = ChercheBmpZone(@ScriptDir&"\monImage.bmp",1,0,0,800,600,$xpos,$ypos,5)
If $result88= 1 Then
	MouseClick('left',$xpos,$ypos,1)
EndIf
 

Attachments

  • Acolyte_Bit-x_BmpSearch.zip
    41.8 KB · Views: 8

Selautoit

Nouveau membre
Jan 5, 2012
4
0
301
Bonsoir, donc je fais un petit retour, pour le moment j'ai rencontré un petit probleme et je me demande si j'ai bien fait de faire ça donc je m'explique : lorsque je compilais le script il me disait que la fonction _ChercheBmpZone($findImage,$resultPosition,0,0,@DesktopWidth,@DesktopHeight,$x,$y,$tolerance) n'etait pas declarée, j'ai donc supprimé le "_" devant la fonction maintenant il la reconnait donc pour le moment j'ai pas encore essayé cette fonction mais je me creuse la tête pour qu'il prenne en compte cette fonction en meme temps que le deplacement de la souris. Donc voila je te remercie et je buche la dessus, sinon je serais obligé de faire par rapport a l'image de ce que je recherche et plus au changement de l'image du curseur ^^' Un grand merci :)

---------- Message ajouté à 21h11 ---------- Le message précédent était à 19h43 ----------

Bon bah... pas moyen de lui faire trouver l'image, j'ai reduis les images a chercher a quelques pixels (4-8), je ne sais pas ce qui cloche.. je te met mon programme car je ne vois pas d'erreurs, j'espere que tu pourras me guider :)

PHP:
#include-once

Func ChercheBmp($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance)
   return ChercheBmpZone($findImage,$resultPosition,0,0,@DesktopWidth,@DesktopHeight,$x,$y,$tolerance)
EndFunc

Func ChercheBmpZone($findImage, $resultPosition,$x1, $y1, $right,$bottom, ByRef $x, ByRef $y, $tolerance)
	if $tolerance>0 then $findImage = "*" & $tolerance & " " & $findImage
	$result = DllCall("BitxBMP.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"str",$findImage)
    if $result[0]="0" then return 0
		$array = StringSplit($result[0],"|")
		If IsArray($array) Then
			$x=Int(Number($array[2]))
			$y=Int(Number($array[3]))
			if $resultPosition=1 then
				$x=$x + Int(Number($array[4])/2)
				$y=$y + Int(Number($array[5])/2)
			endif
		return 1
	EndIf
EndFunc

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$GUI1 = GUICreate("GUI1", 250, 150, -1, -1) ; Création de la GUI1
$Lb1 = GUICtrlCreateLabel("Tofu", 85, 10, 120, 24) ; Création du label1
$b1 = GUICtrlCreateButton("Va chercher medor", 55, 45)
GUISetState(@SW_SHOW)
Global $A[4] = [ 181, 23, 895, 521]
Global $bip = 0
Global $c[4] = [511, 579, 546, 589]
Global $move = 0
Global $B[4] = [ 177, 894, 518, 521]
Global $xpos
Global $ypos

While 1
	$nmsg = GUIGetMsg()
	Switch $nmsg
		Case $gui_event_close
			Exit
		Case $b1
			search()
	EndSwitch
WEnd

Func search()
	GUISetState(@SW_HIDE, $GUI1)
	While 1
		$result = ChercheBmpZone("tofu",1,$B[0],$B[1],$B[2],$B[3] , $xpos, $ypos, 0)
		If $result= 1 Then
			MouseClick('left',$xpos,$ypos,1)
		EndIf
		battle()
		$result = ChercheBmpZone("tofu3",1,$B[0],$B[1],$B[2],$B[3] , $xpos, $ypos, 0)
		If $result= 1 Then
			MouseClick('left',$xpos,$ypos,1)
		EndIf
		battle()
		Sleep(300)
	WEnd
EndFunc


Func battle()
	$aim = PixelSearch( $c[0], $c[1], $c[2], $c[3], 0xDB4302)
	if not @error Then
		Combat()
		Return 1
	EndIf
EndFunc

Func Combat()
	While 1
		MouseClick("", 531, 586)
		Sleep(2000)
		If $bip < 1 Then
		MouseClick("", 491, 528)
		MouseClick("", 481, 541)
		Local $bip = 2
		EndIf
		MouseClick("", 697, 538)
		$combatc = PixelSearch( $A[0], $A[1], $A[2], $A[3], 0x0000FF)
		If Not @error Then
			MouseClick("left", $combatc[0], $combatc[1])
			MouseClick("", 697, 538)
		EndIf
		$combatc = PixelSearch( $A[0], $A[1], $A[2], $A[3], 0x0000FF)
		If Not @error Then
			MouseClick("left", $combatc[0], $combatc[1])
			MouseClick("", 697, 538)
		EndIf
		$combatc = PixelSearch( $A[0], $A[1], $A[2], $A[3], 0x0000FF)
		If Not @error Then
			MouseClick("left", $combatc[0], $combatc[1])
			MouseClick("", 697, 538)
		EndIf
		$combatc = PixelSearch( $A[0], $A[1], $A[2], $A[3], 0x0000FF)
		If Not @error Then
			MouseClick("left", $combatc[0], $combatc[1])
			Sleep(3000)
		EndIf

		If $move < 1 Then
		MouseClick("", 401, 379)
		$move = 1
		EndIf

		If $move < 2 Then
		MouseClick("", 471, 344)
		$move = 2
		EndIf

		$combatc = PixelSearch( $A[0], $A[1], $A[2], $A[3], 0x0000FF)
		If @error Then
		Return
		EndIf
	WEnd
EndFunc
 
Last edited:

Bit-X

V
Jan 11, 2012
703
1
924
Dans un livre
Discord
kolibry#8414
Je pense que c'est le nom de tes images (dans le script) qui ne sont pas bon. Tu n'a pas mis l'extension des fichier (.bmp)
 

Selautoit

Nouveau membre
Jan 5, 2012
4
0
301
J'essai ca de suite

---------- Message ajouté à 21h42 ---------- Le message précédent était à 21h38 ----------

Humm non ce n'est pas ca le probleme, il se pourrait que l'erreur soit dans mes screens, comment fais tu toi ? Tu utilise haute qualité? Basse? Transparent ou non?
 

Bit-X

V
Jan 11, 2012
703
1
924
Dans un livre
Discord
kolibry#8414
Tu ne peu pas chercher les choses evidente et revenir après?

Je cite :
Code:
Global $B[4] = [ 177, 894, 518, 521]

Tu recherche des image dans un cadre inexistant. Car le point sensé être le plus haut est en 894 et le point le plus bas en 521 ... C'est pas trop logique.

essaie plutôt : 117,50,894,600
 

Drtox

Nouveau membre
Jan 24, 2013
1
0
201
Salut,

Je Re-Up se sujet car j'aurais besoins d'information concernant cette fonction "_chercherBmp" Est ce qu'on peut l'inclure directement genre :"#include <searchbmp>

ou faut il reprendre ligne par ligne ? Peut tu me mettre un exemple de script utilisant cette fonction plus concretement stp ?

Mon idée étant de faire un bot avec la recherche d'image BMP, mon bot actuel cherche les pixel mais c'est pas assez précis.

Merci de vos réponse,
 
Status
Not open for further replies.