Salut à toutes et à tous !
Je suis actuellement en train de m'amuser à décompiler les fichiers d2o. (Si jamais ça intéresse, le taf actuel est dispo ici : https://github.com/telokis/dtojson)
En parsant, par exemple, le fichier RideFood.d2o, je génère un json comme celui-ci :
{
"indexes": {
"1": 55,
"2": 67,
"3": 7,
"4": 19,
"5": 31,
"6": 43,
"7": 79,
"9": 91
},
"classes": {
"1": {
"_class": "com.ankamagames.dofus.datacenter.mounts.RideFood",
"_fields": [
{
"name": "gid",
"type": "INT"
},
{
"name": "typeId",
"type": "INT"
}
]
}
}
}
(Je précise que je suis 100% auteur du parseur, je me suis basé sur le fichier GameDataFileAccessor.as que j'ai extrait de l'invoker. J'ai déduit les mots "indexes", "classes" et "fields" du code)
J'ai deux questions auxquelles vous pourrez peut-être répondre :
- Que sont les index que je récupère ? Ma théorie est que ça indique les offsets auxquels sont les "vraies" données dans le fichier. Mais du coup à quoi correspond la clé du dictionnaire ? Un simple identifiant ?
- Pourquoi est-ce que la définition de la classe est stockée dans le fichier d2o alors qu'elle est présente dans le code source. (En l'occurrence la classe com.ankamagames.dofus.datacenter.mounts.RideFood contient justement un gid et un typeID. (Ils sont UINT au lieu de INT mais je pense que c'est une erreur bénigne de la part d'Ankama)
En me lançant là-dedans, je m'attendais "juste" à trouver les différentes données du jeu, je suis surpris de voir que ce n'est pas aussi direct qu'il me semblait.
J'espère que vous pourrez éclairer ma chandelle !
Merci d'avance.