[..] Problème avec PixelSearch
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] Problème avec PixelSearch
Bonjour a tous, alors j'ai encore un probleme avec mon PixelSearch lol. C'est le dernier promis topic sur cette fonction promis ^^.
Voila je lui demande de faire un PixelSearch dans la zone 170, 43, 1262, 679 Alors il fait sa recherche normalement sans aucun soucis sauf que il commence toujours sa recherche de 170, 43 jusqu'a 1262,679 . Et quand il trouve plusieurs pixels de la meme couleur, il prend celles qui sont les plus proche de 170, 43 . Comment faire pour qu'il prenne uniquement les plus proches de 1262, 679 ???
J'ai bien essayer de marquer 1262, 679, 170, 43 mais il ne trouve plus aucune pixel meme quand il y en a .
Si quelqu'un connais une commande pour faire cela ou une astuce cela m'aiderait beaucoup !
EDIT: Pendant que j'y suis je vais vous parlez d'un autre probleme, quelle est la commande permettant de quitter le script et de le redemarrer.
Par exemple, dans mon script je voudrait que au bout de 10 minutes, le programme se ferme et redemarre et cela de facon autonome.
Merci d'avance.
Voila je lui demande de faire un PixelSearch dans la zone 170, 43, 1262, 679 Alors il fait sa recherche normalement sans aucun soucis sauf que il commence toujours sa recherche de 170, 43 jusqu'a 1262,679 . Et quand il trouve plusieurs pixels de la meme couleur, il prend celles qui sont les plus proche de 170, 43 . Comment faire pour qu'il prenne uniquement les plus proches de 1262, 679 ???
J'ai bien essayer de marquer 1262, 679, 170, 43 mais il ne trouve plus aucune pixel meme quand il y en a .
Si quelqu'un connais une commande pour faire cela ou une astuce cela m'aiderait beaucoup !
EDIT: Pendant que j'y suis je vais vous parlez d'un autre probleme, quelle est la commande permettant de quitter le script et de le redemarrer.
Par exemple, dans mon script je voudrait que au bout de 10 minutes, le programme se ferme et redemarre et cela de facon autonome.
Merci d'avance.
- jbnh
- Niveau 11
- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [...]probleme PixelSearch
Pour ton deuxième problème il faut faire une boucle pour que le script tourne en permanence et que tu fasses une pause de 10 minutes.
Ce qui donnerait:
Pour le Pixelsearch, je sais pas trop.
Ce qui donnerait:
Code : Tout sélectionner
HotKeySet("{ESC}", "MyExit")
While 1
...........
Sleep(600000)
Wend
Func MyExit()
Exit
EndFunc
The search is performed left-to-right, top-to-bottom and the first match is returned.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
Re: [...]probleme PixelSearch
Si il est impossible de faire a l'envers avec la fonction pixelsearch, alors passe par un For qui va aller en diminuant, ca devrait faire l'affaire .
- Tlem
- Site Admin
- Messages : 11793
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Problème avec PixelSearch
Grrrrr , encore un problème avec PixelSearch.
Je vais proposer une solution, mais avant je vais essayer d'expliquer ma réflexion pour que d'autres utilisateurs puissent faire de même et essayer lorsqu'ils sont devant un problème, réfléchir à comment le résoudre ou le contourner.
D'abord partons de la demande de Xynablue.
Il souhaite retrouver un pixel dans un rectangle de coordonnées 170, 43, 1262, 679.
Jusque là pas de problème il y à la fonction PixelSearch. Seulement, cette fonction ne retourne que le premier pixel trouvé en commençant comme cela est indiqué dans la documentation en haut à gauche, de gauche vers la droite et en finissant en bas à droite.
Mais voilà Xynablue préfèrerait que la fonction démarre en bas à droite pour finir en haut à gauche.
Bon, je regarde la doc à la recherche de l'endroit ou je peut trouver cette fonction pour la modifier à ma convenance, et là je constate qu'il n'y à pas besoin d'include pour cette fonction.
J'en déduit donc que c'est une fonction interne et donc pas de modification possible.
Donc ... il faut trouver une autre solution car PixelSearch ne peut répondre à mon besoin en l'état.
Alors ... Comment faire ... Peut être en créant tout simplement une fonction qui cherche ce que je veut, comme je le veut et là ou je veut.
Pour cela j'ai deux solutions :
- Soit je décompose mon rectangle en petite partie (genre 5x5 pixels) et je fait une boucle pour chercher par carré de 5x5 pixels dans mon rectangle de coordonnées 170, 43, 1262, 679 avec la fonction PixelSearch le pixel que je recherche.
Évidemment je choisit à partir de ma boucle le sens à partir duquel je lance la recherche.
ou
- je 're-crée' une fonction similaire à PixelSearch mais qui va dans l'autre sens (ou celui que je veut).
Donc retour à la doc de PixelSearch et là je regarde dans la section Related les autres fonctions en relation ...
Mais .. Que vois-je ... il existe une fonction PixelGetColor.
Ben c'est cool je vais donc pouvoir me créer ma propre fonction de recherche de pixels !!!
Le principe en est tout bête : Je fait une boucle sur les coordonnées de mon rectangle.
A ce moment là il est possible de choisir dans quel sens on va effectuer la recherche (gauche<->droite, haut<->bas etc ...) et lorsque le/les pixels sont trouvé(s) on stocke les coordonnées dans une chaine ou un tableau.
Dans le cas d'une recherche de plusieurs pixels, il est préférable de stoker les coordonnées dans une chaine, pour pouvoir créer un tableau très rapidement à partir de la chaine (le re-dimensionnent et la manipulation de tableau prend énormément de temps machine).
Voilà, je pense avoir donné suffisamment d'informations pour que Xynablue crée sa propre fonction, et pour donner de l'inspiration aux autres.
PS : Jetez un oeil dans la doc sur la fonction For...To...Step...Next .
Vous y découvrirez comment faire une boucle inverse et même comment avoir des pas de différentes valeurs au lieu de systématiquement utiliser l'unité.

Je vais proposer une solution, mais avant je vais essayer d'expliquer ma réflexion pour que d'autres utilisateurs puissent faire de même et essayer lorsqu'ils sont devant un problème, réfléchir à comment le résoudre ou le contourner.
D'abord partons de la demande de Xynablue.
Il souhaite retrouver un pixel dans un rectangle de coordonnées 170, 43, 1262, 679.
Jusque là pas de problème il y à la fonction PixelSearch. Seulement, cette fonction ne retourne que le premier pixel trouvé en commençant comme cela est indiqué dans la documentation en haut à gauche, de gauche vers la droite et en finissant en bas à droite.
Mais voilà Xynablue préfèrerait que la fonction démarre en bas à droite pour finir en haut à gauche.
Bon, je regarde la doc à la recherche de l'endroit ou je peut trouver cette fonction pour la modifier à ma convenance, et là je constate qu'il n'y à pas besoin d'include pour cette fonction.

J'en déduit donc que c'est une fonction interne et donc pas de modification possible.

Donc ... il faut trouver une autre solution car PixelSearch ne peut répondre à mon besoin en l'état.
Alors ... Comment faire ... Peut être en créant tout simplement une fonction qui cherche ce que je veut, comme je le veut et là ou je veut.


Pour cela j'ai deux solutions :
- Soit je décompose mon rectangle en petite partie (genre 5x5 pixels) et je fait une boucle pour chercher par carré de 5x5 pixels dans mon rectangle de coordonnées 170, 43, 1262, 679 avec la fonction PixelSearch le pixel que je recherche.
Évidemment je choisit à partir de ma boucle le sens à partir duquel je lance la recherche.
ou
- je 're-crée' une fonction similaire à PixelSearch mais qui va dans l'autre sens (ou celui que je veut).
Donc retour à la doc de PixelSearch et là je regarde dans la section Related les autres fonctions en relation ...
Mais .. Que vois-je ... il existe une fonction PixelGetColor.

Ben c'est cool je vais donc pouvoir me créer ma propre fonction de recherche de pixels !!!
Le principe en est tout bête : Je fait une boucle sur les coordonnées de mon rectangle.
A ce moment là il est possible de choisir dans quel sens on va effectuer la recherche (gauche<->droite, haut<->bas etc ...) et lorsque le/les pixels sont trouvé(s) on stocke les coordonnées dans une chaine ou un tableau.
Dans le cas d'une recherche de plusieurs pixels, il est préférable de stoker les coordonnées dans une chaine, pour pouvoir créer un tableau très rapidement à partir de la chaine (le re-dimensionnent et la manipulation de tableau prend énormément de temps machine).
Voilà, je pense avoir donné suffisamment d'informations pour que Xynablue crée sa propre fonction, et pour donner de l'inspiration aux autres.

PS : Jetez un oeil dans la doc sur la fonction For...To...Step...Next .
Vous y découvrirez comment faire une boucle inverse et même comment avoir des pas de différentes valeurs au lieu de systématiquement utiliser l'unité.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Problème avec PixelSearch
C'est ce que je voulais lui dire en indiquant mon "for", mais qu'est ce que tu es arrivé a mieux lui expliquer que moi ! 

- Tlem
- Site Admin
- Messages : 11793
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Problème avec PixelSearch
C'est ça le rôle du modérateur.timmalos a écrit :mais qu'est ce que tu es arrivé a mieux lui expliquer que moi !

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Problème avec PixelSearch
Salut !!
Et si l'on connait la couleur d'un deuxième pixel de la zone ne pourrait on pas mettre une condition pour trouver le bon pixel ??
Je m'explique : Dans la zone 170, 43 imaginons qu'il y ai plusieurs pixels bleu et dans la zone 1262, 679 il y a un pixel bleu et un pixel vert (qui n'est pas dans la zone 170, 43 ). Ne pourrait'on pas dire que si on trouve un pixel vert dans la zone 1262, 67 alors le pixel bleu a trouver est celui de cette zone ???
Et si l'on connait la couleur d'un deuxième pixel de la zone ne pourrait on pas mettre une condition pour trouver le bon pixel ??
Je m'explique : Dans la zone 170, 43 imaginons qu'il y ai plusieurs pixels bleu et dans la zone 1262, 679 il y a un pixel bleu et un pixel vert (qui n'est pas dans la zone 170, 43 ). Ne pourrait'on pas dire que si on trouve un pixel vert dans la zone 1262, 67 alors le pixel bleu a trouver est celui de cette zone ???
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Problème avec PixelSearch
Le problème, c'est que 1262, 67 n'est pas une zone mais les coordonnées d'un pixel. Donc comment définir une "zone" ?Oxygene31 a écrit :Ne pourrait'on pas dire que si on trouve un pixel vert dans la zone 1262, 67 alors le pixel bleu a trouver est celui de cette zone ???
Si vous voulez trouver le pixel bleu le plus proche du pixel vert du rectangle 170, 43 x 1262, 679, commencez par chercher tous les pixels verts par une fonction que vous aurez créé facilement avec un For...Next.
Ensuite, il faut créer une deuxième fonction qui fait la recherche des pixels bleus en s'éloignant progressivement des pixels verts trouvés :
► Afficher le texte