Utilisation multiple de "Trouve Image"
Posté : 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.
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.