Que pensez-vous de demander à mon personnage sa pos dans le chat? (%pos%) Je trouverais personnellement le comportement clairement suspicieux si je voyais cela. Je fais déjà de la modification d'image (OpenCV) pour ne pas demander à Tesseract de deviner des choses trop compliquées, mais ça ne fonctionne pas à tous les coups. En sniffant les données, cela pourrait marcher plus facilement?
C'est hilarant de lire ça. Comme quoi les memes idées viennent a tout le monde haha. A une époque je faisais effectivement ça. Je %pos% dans le chat et je le faisais copiercoller la position après avoir /clear le chat. Comme ça il sait ou il est précisément. Cependant je te conseille vraiment très fortement de tyryhard l'interprétation de paquets. Tu en tirereas bien plus d'efficacité. Par "peur" au début on se lance pas mais depuis que je sais interpréter des paquets et que j'ai codé un truc qui permet somehow de lire des paquets, tu obtiens tout mieux, et plus vite. C'est tout benef. Avec les paquets tu peux track ta position en permanence , et c'est bien mieux .
J'ai aimé la partie de stockage de donnée en local (cf. valchimiiste). J'ai essayé de tout stocker, mais je n'ai pas (encore) trouvé comment. Je pensais tout stocker dans un
nested dictionary et cela dans un Json (pourquoi? je ne sais pas…). Le format du fichier est-il important?
Je stocke tout en txt et ça va INSANEMENT vite. Exemple simple : ma base de données d'indices fait a peu pres 38 000 lignes. Chaque ligne est un tuple avec ( "nomIndice", x, y). Il faut au programme < 1s pour tout charger. L'extension n'a ( pour moi ) aucune importance si tu n'utilises pas de lib qui bosse avec des fichiers spécifiques.
Pour la partie détection du perso et du monstre grâce aux 'pixels discriminants de mon perso' (cf. valchimiiste). Je comprend l'idée, valchimiiste. Mais je me pose la question des outils… Est-ce que c'est une méthode à la 'bourrin'? Si tu as le temps, et l'envi de poster un article qui t'as donné l'idée? Ou une aide? Un indice? Pour l'anecdote, j'ai longtemps cherché à trouvé une méthode me permettant de détecter un objet partiellement caché, et ce jusqu'à utiliser du ML (j'adore ça, le ML). Mais manque de datas (I guess), mes apprentissages ne marchaient pas aussi bien que je le souhaitais.
Alors. Je peux essayer de détailler un peu. En gros ce que j'ai fais, c'est que j'ai d'abord manuellement screenshot, dans un combat, en mode tactique, toutes les directions de mon personnage et toutes les directions de l'ennemi. J'ai donc eu 8 fichiers image. 4 de l'ennemi et 4 du mien. Ensuite j'ai screenshot juste une partie du terrain en prenant bien soin de faire en sorte d'y voir des obstacles, des endroits vides qui puissent servir de témoin.
Ensuite j'ai fais un soft qui met dans un set tous les pixels de chacune des images. Ca évite d'avoir plusieurs fois la meme couleur de pixels.
Je me retrouve donc avec 3 Set() de tous les différents pixels qui composent mon perso, l'ennemi, et des cases vides. Sauf que comme j'ai pas fais de découpage des persos ou de l'ennemi, j'ai aussi dans leurs sets, les pixels des cases sur lesquels ils sont posés ou de l'environnement.
Arrive donc la dernière partie ou j'élimine des sets Perso et Ennemi, tous les pixels en commun avec le set de pixel témoin ou j'avais screenshot un endroit vide du terrain. J'obtiens donc 2 sets de pixels dont les pixels sont caractéristiques et spécifiques, du perso et de l'ennemi. Ensuite en combat, je fais une analyse de 40x40 sur chaque case du terrain et je compte les pixels en commun avec l'un ou l'autre , perso ou ennemi. A la fin de la boucle, l'endroit qui a le plus de pixels communs avec le pixelSet du perso est ...la case ou est mon perso et pareil pour l'ennemi
.. En espérant que ce soit clair miantenant
". Je n'ai pas compris ce que sont ces /clear et /travel. Peut-être ai-je loupé quelque chose. N'hésitez pas à me dire que oui, si c'est le cas (mais gentiment, hein?!).
En gros j'utilisais la dd autopilotée. "/travel 2 3 " permet par exemple de faire un voyage autopilot vers (2,3). Je screenshotais le chat en boucle a la recherche du "Vous etes arrivé a destination". Donc je "/clear" pour clean le chat des messages précédents, puis je "/travel x y" . Quand je suis arrivé il analyse le "Vous etes arrivé a destination" et sais donc qu'on est arrivé. A l'époque .. avec les paquets tout ça est devenu obstolète..
, ce que tu veux dire par "cutoffs de détection". J'imagine que c'est en rapport avec la détection par Computer Vision. Une précision?
En gros ca c'est a "tatons". j'ai codé une fonction IsImgOnScreen() qui renvoie le % de vraissemblance que ce que je cherche soit présent. Mais quand la chose est effectivement la on n'est pas a 100%.. Il renvoie 94 ou 96 en fonction de la qualité du découpage et du screenshot. Choisir les bons cutoffs c'est faire en sorte que cette fonction ne me dise pas que l'image est la alors que non, ou qu'elle me dise que l'image n'est pas la alors que oui .
Pour les indices, j'ai juste codé un scraper ( qui a du bouclé jcrois pendant 2-3h au total ) qui fait en boucle des requetes sur toutes les maps, et toutes les directions possibles, avec un petit timeout, et qui stockait ça dans un set() ( pour éviter les redondances ) et ensuite jlai fais l'écrire dans un fichier texte. L'avantage colossal d'avoir sa propre BDD c'est de pouvoir ajouter les indices qui manquent par exemple