Utilisation multiple de "Trouve Image"

Postez ici si vous avez des difficultés a comprendre une commande, ou a créer une macro.
Meyrime
Messages : 5
Enregistré le : 16 avr. 2018, 02:09

Utilisation multiple de "Trouve Image"

Message par Meyrime » 16 avr. 2018, 02:30

Bonjour, bonsoir!

Bon il est plus de 2h du matin mais passons..

Je suis un utilisateur de Nox (l'émulateur android) mais disons que les macros intégrés sont loin d'être "optimaux" et je suis donc revenu vers SM pour faire quelque chose de plus efficace quand je dois m'absenter du pc.

Je suis passé de macros super basiques à des choses plus "avancés" (comme le label/goto par exemple) et là entre en scène le "Trouve Image". Apprenant qu'il permet de trouver une image et de pouvoir réagir en conséquence, je me dis qu'il pourrait me permettre d'optimiser la vitesse de la macro. J'ai donc commencé à la créer mais arriver à mi-chemin, je me rend compte d'un détail gênant : tous les "Trouve Image" se calent sur la dernière image copiée, ce qui met bien évidemment la macro en l'air. Y'a t-il un moyen de contourner le problème? Voilà la macro en question (WIP) :

Final Fantasy Brave Exvius JP (je m'en sers pour apprendre sur super macro)
6 Variables : X, Y, A, B, R, S (Tous numériques)

Label "Start" <--- Label qui sera utilisée à la fin pour permettre une boucle infinie. Un rajout sera fait pour sortir de la boucle (plus d'énergie)
Trouve image C:\Program Files (x86)\Super macro\image4.bmp;1316;2;1892;1059;1383;361;1673;400;<X>;<Y>;1
Move Mouse <X>;<Y>;Direct;
Click Left click;
Pause 00:00:02 <--- Choix du stage

Trouve image C:\Program Files (x86)\Super macro\image5.bmp;1316;2;1890;1047;1544;898;1656;948;<A>;<B>;1
Move Mouse <A>;<B>;Direct;
Click Left click;
Pause 00:00:02 <--- Validation du stage (Visualisation des missions)

Move Mouse <X>;<Y>;Direct;
Click Left click;
Pause 00:00:02 <--- Choix du compagnon de voyage (même emplacement que le stage donc réutilisation de X et Y)

Move Mouse <A>;<B>;Direct;
Click Left click; <--- Validation du stage et début.

Label Loading 1
Trouve image C:\Program Files (x86)\Super macro\image6.bmp;1316;2;1883;1051;1471;994;1585;1033;<R>;<S>;1
Examine <R>;<;0;
Goto Loading 1 <--- Je fais une recherche inversée où je lui demande de tourner en boucle tant que l'image en question n'apparaît pas.
Move Mouse <R>;<S>;Direct;

Label Repeat
Click Left click; <--- Fin du WIP car découverte du problème du Trouve Image. Actuellement, on est dans le stage et je vais refaire une recherche inversée où je vais demander à la macro de cliquer toujours au même endroit (Repeat) jusqu'à ce que la prochaine image apparaisse.

Il va manquer la fin évidemment. Je vais donc demander à la macro de spam le click jusqu'à trouver l'image puis lui demander (à nouveau) de cliquer à un endroit (coordonnées A et B) jusqu'à revenir à la première image. Puis à ce moment là, lui demander de retrouver la première image et de boucler le tout.

Voilà, je pense avoir tout dit. J'espère avoir une réponse assez vite et surtout trouver la solution à mon problème!

Edit : Après avoir fini la v.alpha, j'ai fais quelques tests et ça semble fonctionner... parfois. Sans comprendre pourquoi, parfois la macro va trouver l'image, et parfois non, alors que ce que je demande de trouver est contrasté et devrait pas être si dur à trouver. Ca rajoute un problème supplémentaire maintenant que la macro ne démarre même plus.

Voilà la fin de la macro (manque la section pour sortir de la macro. Rajout de E et F en variable):

Label Repeat
Click Left click;
Trouve image C:\Program Files (x86)\Super macro\image7.bmp;1316;2;1882;1044;1488;305;1717;366;<C>;<D>;1
Examine <C>;<;0;
Goto Repeat <--- Cette partie répète le clic sur "Repeat" jusqu'à trouver une correspondance à l'image
Move Mouse <A>;<B>;Direct;

J'ai un temps de latence ici entre le moment où la macro sort du "repeat" et entre dans "end screen". Plusieurs secondes.

Label End Screen
Click Left click;
Trouve image C:\Program Files (x86)\Super macro\image1.bmp;1316;2;1890;1047;180;150;360;300;<E>;<F>;1
Examine <E>;<;0; <--- On est censé revenir au point de départ. Il manque encore une pause sinon la macro renchaine derrière trop vite et dérègle tout.
Goto End Screen

Goto Start

EDIT 2 : Après avoir tenté de refaire ma macro, c'est foutu, elle ne veut plus fonctionner. J'ai bien l'impression que les "Trouve Image" foutent la merde à cause de la présence de multiple d'entre elles. Ce qui m'embête bien parce que du coup, c'est toute ma macro qui part à la poubelle là. Je comprend même pas comment elle a pu fonctionner. Là, dès la première image, je pars en 0-0 dans le coin de l'écran. (PS, je veux pas utiliser de timer du tout. Les seuls timers présents sont là uniquement pour éviter que la macro fasse les choses beaucoup trop vite pour l'émulateur mais si y'a moyen de les retirer, je dis pas non.)

EDIT 3 : Bon, après avoir quasiment détruit mon pc sous la rage, j'ai remarqué dans le rapport que les mouvements de souris se mettaient en -1/-1 et je comprend pas pourquoi. Le trouve image trouve bien les coordonnées en 0/0 mais la souris se met pas à cet endroit... J'espère vraiment que vous pourrez m'aider parce que pour trouver des gens un poil compétents avec SM, faut racler les fonds de tiroirs.

Avatar du membre
Onissius
Messages : 744
Enregistré le : 11 avr. 2014, 22:47
Localisation : Lyon (France)
Contact :

Re: Utilisation multiple de "Trouve Image"

Message par Onissius » 16 avr. 2018, 09:39

Réponse En vrac :
  • Avant tout, mon avis sur les gacha game un pote à fait une vidéo à ce sujet, en avertissement des dangers que ça peut causer. Car je suppose que c'est se genre de jeux que tu veux automatiser ?
  • Une zone cliquable dans le jeu, avec et sans souris au dessus, je suppose que la couleur change ? Vois si c'est pas ça qui cause problème au trouvé images.
  • En début de macro, tu réinitialise pas tes variables ?
  • Un des truc que je fait parfois dans mes macros, j'utilise une variable <pause> et j'utilise des quant j'utilise des pause leur durée est de <Pause> secondes/milli-secondes.

    Exemple de code :
    Variable <Pause>;150;Numerique;
    Pause <Pause>
    Timer <Pause>;
  • Il est possible de rendre SM portable et pour rendre ta macro portable aussi, édite en texte ta macro et passe les chemin en relatif.
  • Parfois prendre du recule, ça aide.
  • Pour le trouve image, normalement, oui ça t’amène en 0,0. Vois si un recalcul de position ne résoudrais pas l'affaire.
J'ai découvert SM en 99, rapidement Adam m'a promu admin.
Posez vos questions aussi clairement que possible, sans fautes qui piquent les yeux et relisez vous.
Vérifiez sur mon DISCORD si je suis en ligne.

Meyrime
Messages : 5
Enregistré le : 16 avr. 2018, 02:09

Re: Utilisation multiple de "Trouve Image"

Message par Meyrime » 16 avr. 2018, 11:54

Ouh un copain à Krayn~ La classe. Je suis au courant, je suis un vétéran du jeu depuis deux ans donc j'arrive à me restreindre un minimum.

Quand tu tape sur une zone cliquable oui. Il s'agit ici d'une automatisation de grind d'expérience.

J'ignorais qu'on pouvait reset les variables. Après tout, c'est littéralement ma première macro (qui se résume pas à du mass clicking à un endroit fixe). Je suis actuellement en train de la refaire intégralement. Cette fois, uniquement deux variables, ça devrait faciliter la tâche. J'ai quasi fini mais y'a juste un point qui me chiffonne c'est pourquoi la souris part en 0 alors que je lui demande de trouver une image et d'attendre s'il l'a trouve pas. Autrement, elle est complète, mais sûrement loin d'être optimale..

Label Start
Commentaire Début de la boucle, choix du stage.
Variable <A>;0;Numerique;
Variable <B>;0;Numerique;
Pause 00:00:03
Trouve image C:\Program Files (x86)\Super macro\image1.bmp;1314;5;1888;1050;1386;362;1673;392;<A>;<B>;1
Move Mouse <A>;<B>;Direct;
Click Left click;
Pause 00:00:02

Commentaire END out

Trouve image C:\Program Files (x86)\Super macro\image13.bmp;1314;5;1880;1046;1362;383;1842;722;<A>;<B>;1
Examine <A>;>;0;
Quitter
Goto Mission

Commentaire Validation des missions

Label Mission
Trouve image C:\Program Files (x86)\Super macro\image2.bmp;1314;5;1920;1080;1551;902;1650;947;<A>;<B>;1
Move Mouse <A>;<B>;Direct;
Click Left click;
Pause 00:00:02

Commentaire Choix du partenaire

Move Mouse 1589;380;Direct;ImgRef0;
Click Left click;
Pause 00:00:02

Commentaire Mission Start

Trouve image C:\Program Files (x86)\Super macro\image3.bmp;1314;5;1894;1049;1524;905;1670;945;<A>;<B>;1
Move Mouse <A>;<B>;Direct;
Click Left click;

Commentaire Loading

Label Loading
Trouve image C:\Program Files (x86)\Super macro\image4.bmp;1314;5;1892;1055;1470;991;1584;1031;<A>;<B>;1
Examine <A>;<;0;
Goto Loading
Goto Repeat

Commentaire Spam Repeat

Label Repeat
Trouve image C:\Program Files (x86)\Super macro\image8.bmp;1314;5;1889;1055;1472;993;1584;1032;<A>;<B>;1
Move Mouse <A>;<B>;Direct;
Click Left click;
Trouve image C:\Program Files (x86)\Super macro\image5.bmp;1314;5;1893;1054;1554;910;1649;950;<A>;<B>;1
Examine <A>;<;0;
Goto Repeat
Goto Result Screen

Commentaire Result Screen <-- C'est ici que la souris repars en zero avant de revenir

Label Result Screen
Trouve image C:\Program Files (x86)\Super macro\image12.bmp;1314;5;1880;1045;1476;425;1538;456;<A>;<B>;1
Move Mouse <A>;<B>;Direct;
Click Left click;
Trouve image C:\Program Files (x86)\Super macro\image10.bmp;1314;5;1893;1054;1554;910;1649;950;<A>;<B>;1
Examine <A>;<;0;
Goto Result Screen
Click Left click;
Move Mouse 1598;924;Direct;;
Boucle 4
Click Left click;
Pause 00:00:01
Boucle [FIN]
Label Wait
Trouve image C:\Program Files (x86)\Super macro\image7.bmp;1314;5;1886;1049;1383;360;1671;396;<A>;<B>;1
Examine <A>;<;0;
Goto Wait
Goto Start

Avatar du membre
Onissius
Messages : 744
Enregistré le : 11 avr. 2014, 22:47
Localisation : Lyon (France)
Contact :

Re: Utilisation multiple de "Trouve Image"

Message par Onissius » 16 avr. 2018, 14:11

Recherche 8 et 12, pas de examine ou de pause après ?
J'ai découvert SM en 99, rapidement Adam m'a promu admin.
Posez vos questions aussi clairement que possible, sans fautes qui piquent les yeux et relisez vous.
Vérifiez sur mon DISCORD si je suis en ligne.

Meyrime
Messages : 5
Enregistré le : 16 avr. 2018, 02:09

Re: Utilisation multiple de "Trouve Image"

Message par Meyrime » 16 avr. 2018, 19:34

De quelle partie parle-tu car je ne sais pas ce qu'est les recherches 8 et 12 je t'avoue.

Edit : Et la macro est foutue à nouveau parce que le premier mouvement de souris me renvoie en -1/-1. Super. Je commence à croire que SM sert pas à grand chose s'il sait pas gérer plusieurs trouve images. Ou simplement si le logiciel est même pas capable d'agir de la même manière à chaque fois. Je fais des tests, ça fonctionne, je réessaye 4h plus tard, le logiciel m'envoie me faire chier. J'ai déjà pas le moral parce que j'ai passé la nuit à faire un truc qui finalement fonctionne pas du tout pour avoir le même problème à nouveau plus tard. Je suis à pas grand chose de laisser tomber, de virer SM et d'arrêter de rester poli parce que franchement, ça me gave d'une force ahurissante. Est-ce que SM est (putain de) capable d'utiliser plusieurs Trouve image ou bien je suis bon pour jeter ce truc à la benne et oublier les macros?

Voilà ce que donne le rapport pour le départ.

Label Start
Commentaire Début de la boucle, choix du stage.
Variable <A>;0;Numerique; <A>=0
Variable <B>;0;Numerique; <B>=0
Pause 00:00:03
Trouve image C:\Program Files (x86)\Super macro\image1.bmp;1314;5;1888;1050;1386;362;1673;392;<A>;<B>;1 <A>=0 <B>=0
Move Mouse <A>;<B>;Direct; <A>=-1 <B>=-1
Click Left click;
Pause 00:00:02

Avatar du membre
Onissius
Messages : 744
Enregistré le : 11 avr. 2014, 22:47
Localisation : Lyon (France)
Contact :

Re: Utilisation multiple de "Trouve Image"

Message par Onissius » 16 avr. 2018, 20:17

Recherche de l'image 8 :
Trouve image C:\Program Files (x86)\Super macro\image8.bmp;1314;5;1889;1055;1472;993;1584;1032;<A>;<B>;1

Recherche de l'image 12 :
Trouve image C:\Program Files (x86)\Super macro\image12.bmp;1314;5;1880;1045;1476;425;1538;456;<A>;<B>;1

et c'est quoi cette commande : "Move Mouse <A>;<B>;Direct; <A>=-1 <B>=-1" ?

Et SM ne gère pas les valeur négative pour les abscisse ou ordonnées.
J'ai découvert SM en 99, rapidement Adam m'a promu admin.
Posez vos questions aussi clairement que possible, sans fautes qui piquent les yeux et relisez vous.
Vérifiez sur mon DISCORD si je suis en ligne.

Meyrime
Messages : 5
Enregistré le : 16 avr. 2018, 02:09

Re: Utilisation multiple de "Trouve Image"

Message par Meyrime » 16 avr. 2018, 20:43

C'est le premier "Move Mouse". Normalement, je ne devrais pas avoir -1/-1 mais les coordonnées stockées par le Trouve Image juste avant.

Avatar du membre
Feitan
Site Admin
Messages : 301
Enregistré le : 11 avr. 2014, 15:15

Re: Utilisation multiple de "Trouve Image"

Message par Feitan » 17 avr. 2018, 19:45

Salut,

Quand le Trouve Image affiche la valeur -1 c'est que la valeur n'est pas trouvée.
Une des solutions serait de ne pas utiliser directement <A><B> dans ton Move Mouse mais de copier les valeurs de <A> et de <B> dans des variables <A1> et <B1> par exemple, seulement si <A> et <B> sont différents de -1.

Ensuite le Trouve image demande une image strictement identique, c'est le problème oui. Si Trouve Image est trop sensible essaye de réduire la zone à étudier ou de choisir uniquement quelques pixels clés avec Pixel Color (lui aussi étant extrèmement sensible mais puisque tu ne recherche qu'un seul pixel ça devrait être moins grave).
Une autre solution assez simple est d'utiliser Pixel Color mais d'être un peu plus souple sur les résultats.

Je m'explique, tu vas prendre la valeur, grâce à Pixel Color, d'un pixel de ton image. Le résultat sera en valeur RGB : 153,0,153 car il est violet.
Tu récupères les valeur <R>, <G> et <B>. Et tu regardes si la couleur du pixel de ta nouvelle image est compris entre 137 < <R> < 169, 0, 137 < <B> < 169.
Ici j'ai pris une marge de 10% mais c'est à toi de voir quelles paramètres sont les plus intéressants.

Tiens nous au courant de ton avancée.

Meyrime
Messages : 5
Enregistré le : 16 avr. 2018, 02:09

Re: Utilisation multiple de "Trouve Image"

Message par Meyrime » 18 avr. 2018, 13:10

Pourtant, l'image cherchée reste constamment la même, il ne devrait pas y avoir cette erreur puisque j'ai déjà réussi à faire tourner la macro. Après oui, j'ai pensé à, plutôt que de demander d'aller directement sur les coordonnées, de mettre un examiner et que si la réponse est positive, alors aller à tel endroit "manuellement" (puisque quand je met des coordonnées numériques, ça fonctionne mais ça risque de pas fonctionner). Et je suis pas comment copier des valeurs dans d'autres variables. A moins que quand on crée les variables A1 et B1, on leur donne une valeur alphanumérique et on met A et B?

La zone de recherche se limite à l'émulateur, ce qui ne prend qu'environ 1/3 de l'écran. Donc la recherche est assez petite. Pour le Pixel Color, je suis pas certain qu'il serait d'une grande utilité puisqu'il n'y a rien qui permet de VRAIMENT distinguer la zone dans laquelle je cherche à cliquer.

Actuellement j'ai laissé tomber SM après le double échec, pour ne pas remuer le couteau dans la plaie. J'y retournerais dessus d'ici un jour ou deux, une fois que j'aurais bien mis tout ça de côté pour repartir un peu plus frais. Sinon je risque de criser d'avantage. Mais j'avoue que le trouve image qui trouve pas la valeur, ça m'énerve un peu.

Avatar du membre
Feitan
Site Admin
Messages : 301
Enregistré le : 11 avr. 2014, 15:15

Re: Utilisation multiple de "Trouve Image"

Message par Feitan » 18 avr. 2018, 19:13

Oui tu peux utiliser un Examine pour savoir si <A> et <B> sont différents de -1, ça m'est un peu sorti de la tête en vrai mais ça évite la copie de variable.

Pour copier la variable il suffit tout simple de faire un Calcul ou un Calcul évolue.

<A> = <B> + 6
<A> = "Le résultat est " + <B> + " cm."

Par exemple.

Pour les soucis de Trouve Image, quelques petites remarques à force d'expérimentation :

- Trouve Image ne fonctionne pas d'un PC à l'autre
- Les paramètres de luminosité/contraste peuvent entrer en compte. Attention donc à l'utilisation de l'utilisation de f.lux par exemple, et je pense même que les paramètres de luminosité des écrans suffit à mettre Trouve Image en l'air.
- Fermer une fenêtre et la ré-ouvrir peut suffire à faire bugger Trouve Image.

Trouve Image est loin d'être idéal, et, pour l'instant, il peut être plus utile de partir sur des solutions alternatives pour faire une recherche sur image.

Répondre