Ola les confinés,
Je cale depuis une bonne grosse semaine sur un résultat étrange de mon déchiffrage des mapdata.
Jusqu'ici j'ai bien avancé sur mon bot, il sait farmer, gère les combats et déplacements... le tout via une association sniffing des paquets & injection via l'api win32 de clicks/keys qui lui permet de fonctionner en arrière plan.
Cependant, en parcourant les maps de dofus, je me rends compte que la détection des soleils est très inconstante: tantôt ils sont tous détectés, tantôt qu'un seul voire aucun !!
Voici un exemple de la map [-8,-22]:
data déchiffrée de chaque cell_id où se trouve un soleil
HhGaeqgaaa -> cell_id 21
Hhqaeqgaaa -> cell_id 218 >Seul soleil détecté!<
HhGaeaaaaa -> cell_id 230
HhGaeqgaaa -> cell_id 456
La fonction qui permet d'extraire l'id du soleil ou d'une ressource est la suivante, traduit du code vb.net de M4xou et implémentée en python:
def uncompress_cell(self, cell_d):
"""
Compute and return the item or sun id regarding the given cell data
"""
j = 0
cd = []
ZKARRAY = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"
while j < len(cell_d):
cd.append(ZKARRAY.index(cell_d[j])) #hashcode
j += 1
layerObject2Num = ((cd[0]&2)<<12) + ((cd[7]&1)<<12) + (cd[8]<<6) + cd[9]
map_changer = ((cd[2]&56) >> 3)
if map_changer == 2:
return 'sun'
else:
return layerObject2Num
On voit donc grâce à la ligne 13 du code, que la 3e lettre du data de la cellule doit être systématiquement 'q', pour être converti en 16 bitshifté en la valeur 2. La lettre 'G' donne 32 bitshifté en valeur 4...
De là, qu'une seule déduction possible : l'erreur provient lors du déchiffrage de mapdata. Mais quelle erreur pourrait être silencieuse au point de ne tronquer que partiellement la 3e lettre et laisser tout le reste intact ? ça me semble hallucinant, pas une seule ressource ne manque à la détection, que ce soit minerais bois ou même du blé. J'ai déjà vérifié en redécompilant quelques maps depuis le dossier du jeu et le mapdata est identique à celui produit par mon script de décompilation/extraction au format txt.
Quelqu'un aurait-il fait face au même soucis ou aurait une piste de réflexion a me soumettre ?
Merci d'avance,
Des bisous.