Déjà félicitation pour ton projet, je me suis aussi amusé a commencé un projet python du genre pour voir si c'était réalisable et j'ai utilisé par ailleurs a peu près les même méthode que toi.
Niveau libs je suis directement partis sur du :
- OpenCv (là pour améliorer les résultat je traite un peu l'image a la volé)
- PyAutoit (bon là pour écrire du text simplement "{Enter} mon text " dans un control_send, et control_click pour les cliques
- Tesseract (j'ai test easyocr mais la libs pose soucis sous windows)
Pour les combats je suis en revanche bien plus bloqué que toi, déjà rien que pour modéliser la map sour forme matriciel je trouve cela compliqué même si actuellement j'ai une solution pour cela j'ai besoin de connaitre le nombre de losange par ligne/collonne chose que je ne connais pas car dans certain cas cela change là j'aurais aimer savoir comment obtenir ce genre d'info par moi même mais je suis paumé. Si tu as des liens Valchiimiste expliquant un peut comment comment faire pour comprendre les protocoles dofus ou faut regarder dans les fichiers du jeu pour avoir les infos etc... franchement je serais bien preneur. Mon objectif c'est pas de faire un bot 100% socket mais juste de récupérer des infos via la lecture des paquets et fichiers du jeu pour faire mon petit bot clique en mode bot hybride.
Pour la bdd des indices franchement j'y avais pas pensé je pense que je vais faire comme toi et la récupérer c'est pas bien compliqué a faire et ça permettrais d'être un peu plus tranquille de ce point de vue là.
Edit :
J'ai récupérer la petite bdd des indices et corréler avec le nom des indices pour la mettre en json déjà, bon c'est assez long. D'un côté c'est pratique vu que cela permet de s'affranchir du site genre si dans le futur il ferme, et d'un autre ça prend mine de rien un temps relativement long même si j'ai utilisé uniquement des requêtes http plutôt que selenium.
Pour les maps dofus j'explore les pistes des fichiers d2o, d2p, d2i :
2.0 - Bot Chasses au Trésor et maps bloquantes | Cadernis - Communauté de passionnés en informatique
Vu qu'un des commentaires semblent expliqué que les infos se trouve dans les fichiers d2p mais là ça va me prendre un certain moment je pense parce que j'aimerais réussir a comprendre la logique en regardant le code de dofus pour pouvoir mettre a jour ma solution dans le futur. Si j'arrive a une solution, je serais curieux de savoir comment tu t'y es pris valchiimiste a ce sujet si tu as moyen d'expliqué en mp ou discord vocal comment ça marche en attendant je vais continuer d'explorer le forum en quête de piste
et pour rebondir sur cv.matchTemplate() je pense pas que ça fonctionne en niveau de gris c'est l'exemple de la doc :
OpenCV: Template Matching
img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
template = cv.imread('mario_coin.png',0)
mais ça marcherais aussi avec
img_gray = cv.imread('mario.png', cv.IMREAD_UNCHANGED)
template = cv.imread('mario_coin.png', cv.IMREAD_UNCHANGED)
il me semble qu'il faut que les data a comparé soit juste dans le même format pour opencv et dans la doc j'ai l'impression que les 2 sont convertis en niveau de gris pour que le process aille plus vite par la suite