Algo World Path Finder HELP

Inscrit
1 Octobre 2021
Messages
7
Reactions
3
#1
Hello,

J'ai commencé hier à travailler sur un bot déplacement mais je me heurte déjà à quelques souci. C'est mon premier bot haha.

Donc, j'essaie de lire les données du fichier worldgraph.bin tel que c'est fait dans com.ankamagames.dofus.modules.utils.pathfinding.world.WorldGraph avec python, code "quick and dirty" ci-dessous :
Code:
import os
import struct

path = '/mnt/d/Dofus2'
graph_path = os.path.join(path, "content", "maps", "worldgraph.bin")

f = open(graph_path, 'rb')
print("edges_count= "+str(struct.unpack('>i', f.read(4))))
print("from_map_id="+str(struct.unpack('>d', f.read(8))))
print("from_zone_id="+str(struct.unpack('>i', f.read(4))))
print("to_map_id="+str(struct.unpack('>d', f.read(8))))
print("to_zone_id="+str(struct.unpack('>i', f.read(4))))
print("transition_count="+str(struct.unpack('>i', f.read(4))))
print("transition_type="+str(struct.unpack('>b', f.read(1))))
print("transition_direction="+str(struct.unpack('>b', f.read(1))))
print("transition_skillid="+str(struct.unpack('>i', f.read(4))))
Donc j'arrive bien à lire les int, les double et les bytes mais je ne sais pas trop comment traduire cette ligne AS3 en python : "data.readUTFBytes(data.readInt())".

Je voudrais aussi confirmer une chose avec vous, c'est bien le fichier MapPositions.d2o qui permet de faire la conversion map_id <-> coordonnées map en jeu ?

J'anticipe aussi le développement de mon projet et je voudrais savoir si c'est possible de récupérer les id_map ayant un zaap.

Merci de m'avoir lu :D
 
Dernière édition:
Inscrit
28 Avril 2020
Messages
6
Reactions
7
#2
Salut,

Concernant "data.readUTFBytes(data.readInt())", tu devrais t'en sortir avec "struct.unpack('>i', f.read(4)).decode("utf-8")".
Pour faire la relation entre mapid et position, c'est bien MapPositions.d2o.
Concernant les zaaps, tu dois pouvoir trouver ca dans Waypoints.d2o.

Tchu.
 
Inscrit
1 Octobre 2021
Messages
7
Reactions
3
#3
Salut,

Concernant "data.readUTFBytes(data.readInt())", tu devrais t'en sortir avec "struct.unpack('>i', f.read(4)).decode("utf-8")".
Pour faire la relation entre mapid et position, c'est bien MapPositions.d2o.
Concernant les zaaps, tu dois pouvoir trouver ca dans Waypoints.d2o.

Tchu.
Merci pour ta réponse.

Concernant le "data.readUTFBytes(data.readInt())", j'ai plutot l'impression qu'il faut lire un string dont la taille est lû depuis les données aussi, genre quelque chose de ce genre :

Code:
str_length = int(struct.unpack('>i', f.read(4))[0])

struct.unpack('>s', f.read(str_length )).decode("utf-8")
J'ai test ça mais le str_length est toujours à None :/
 
Haut Bas