Bonjour, j'avais du temps libre donc je vais vous expliquer une méthode que j'ai trouvé afin de trouver le monstre le plus proche du joueur.
Premièrement faut comprendre le principe de ce code. Il permet de trouver un monstre, par contre, la recherche débute en (0,0) , soit dans le coin haut gauche. Ce code n'est pas vraiment pratique car si un autre monstre se trouve devant notre personnage, celui ci ne pourra pas l'attaquer.
$monstre = PixelSearch(0,0,500,500,0x0000FF)
if not @error Then
MouseClick("left",$monstre[0], $monstre[1],1,30)
Else
MsgBox(4096,"Information","Le monstre n'est pas trouvé.")
EndIf
Donc pour commencer, faut trouver notre position.
$moi = PixelSearch(0,0,500,500,0xFF0000)
Si notre personnage est trouver, il faut récupérer sa position.
$moi = PixelSearch(0,0,500,500,0xFF0000)
if not @error Then
MouseMove($moi[0],$moi[1],30)
$position = MouseGetPos()
EndIf
Et on ajoute quelques variables qui serviron à augmenter la zone de recherche à partir de la position de notre joueur.
$moi = PixelSearch(0,0,500,500,0xFF0000)
if not @error Then
MouseMove($moi[0],$moi[1],30)
$position = MouseGetPos()
$trouver = 0
$ajout_px_x1 = 10
$ajout_px_x2 = 10
$ajout_px_y1 = 10
$ajout_px_y2 = 10
EndIf
Ensuite on créer une boucle de recherche en augmentant la zone de recherche si le monstre n'est pas trouver.
$moi = PixelSearch(0,0,500,500,0xFF0000)
if not @error Then
MouseMove($moi[0],$moi[1],30)
$position = MouseGetPos()
$trouver = 0
$ajout_px_x1 = 10
$ajout_px_x2 = 10
$ajout_px_y1 = 10
$ajout_px_y2 = 10
Do
$monstre = PixelSearch($position[0]-$ajout_px_x1, $position[1]-$ajout_px_y1, $position[0]+$ajout_px_x2, $position[1]+$ajout_px_y2, 0x0000FF)
if not @error Then
$trouver = 1
EndIf
$ajout_px_x1 = $ajout_px_x1 + 10
$ajout_px_x2 = $ajout_px_x2 + 10
$ajout_px_y1 = $ajout_px_y1 + 10
$ajout_px_y2 = $ajout_px_y2 + 10
Until $trouver = 1
EndIf
Afin de ne pas chercher à l'exétieur de l'écran et de prendre un pixel de votre fond d'écran comme monstre, il suffit de remettre la valeur des variables à 0 si elles sont plus grande que la résolution de votre écran de jeu. (Ici j'utilise 500 par 500)
$moi = PixelSearch(0,0,500,500,0xFF0000)
if not @error Then
MouseMove($moi[0],$moi[1],30)
$position = MouseGetPos()
$trouver = 0
$ajout_px_x1 = 10
$ajout_px_x2 = 10
$ajout_px_y1 = 10
$ajout_px_y2 = 10
Do
if $position[0]+$ajout_px_x1 > 500 Then
$ajout_px_x1 = 0
EndIf
if $position[1]+$ajout_px_x2 > 500 Then
$ajout_px_x2 = 0
EndIf
if $position[0]+$ajout_px_y1 > 500 Then
$ajout_px_y1= 0
EndIf
if $position[1]+$ajout_px_y2 > 500 Then
$ajout_px_y2 = 0
EndIf
$monstre = PixelSearch($position[0]-$ajout_px_x1, $position[1]-$ajout_px_y1, $position[0]+$ajout_px_x2, $position[1]+$ajout_px_y2, 0x0000FF)
if not @error Then
$trouver = 1
EndIf
$ajout_px_x1 = $ajout_px_x1 + 10
$ajout_px_x2 = $ajout_px_x2 + 10
$ajout_px_y1 = $ajout_px_y1 + 10
$ajout_px_y2 = $ajout_px_y2 + 10
Until $trouver = 1
EndIf
Cliquez pour révéler
Cliquez pour masquer
Vous pouvez gérer le corps à corps avec cette fonction.
$distance = Sqrt((($monstre[0] - $position[0])*($monstre[0] - $position[0])) + (($monstre[1] - $position[1])*($monstre[1] - $position[1]))) ;calcul de la distance entre le personnage et le monstre
MsgBox(4096,"Information","distance: "&$distance)
Après quelques test, un monstre coller sur mon personnage est environ à 30 pixels (dépend de votre grandeur d'écran de jeu). Donc;
if $distance < 30 Then
;corps à corps
EndIf
Voilà :P