Bonjour,
J'ai repris le D2p Reader qui fait partie à l'origine du projet EuuBot.Relay en essayant de l'améliorer.
L'objectif est aussi de proposer une version du MapManager détachée du projet de base que l'on puisse ré-utiliser et qui fonctionne. En effet, les sources que l'on peut trouver sur le forum contiennent des erreurs ou ne fonctionnent pas (pour celles que j'ai testées du moins).
Liste non-exhaustive des changements :
- Remplacement du reader de base (Reader.cs) par celui de bouh2 (BigEndianReader.cs)
- Suppression de la méthode ConvertMapReaderToMap(MapInformation.Map maps) dans MapManager.cs (inutile)
- Correction de la plupart des classes d'éléments du jeu (Map, CellData, Layer, etc.) : ajout de plein de variables/propriétés manquantes (les infos étaient lues mais pas sauvegardées dans des variables)
- Renommage de la quasi-totalité des noms de méthodes/variables/propriétés afin de respecter les conventions de nommage et de leur donner un nom cohérent
- Suppression de la méthode InitializePosition(uint id) (inutile) à la place j'ai mis le code dans InitializeMap(byte[] encryptionKey) :
_relativeId = _reader.ReadUInt();
_position = new WorldPoint(_relativeId);
Simplification énorme de la préparation de la clé de déchiffrage. Énormément de code pour... rien. Peut-être que c'était comme ça dans le client Dofus mais j'ai remplacé ~ 40 lignes par... 1 ligne.
- Suppression de la méthode InitializeBuffer(string string_1)
- Suppression de la méthode ReturnEncode(string Strings, bool arg2 = false)
- Suppression de la méthode ReturnString(byte[] arg1, bool arg2 = false)
- On passe de :
this.InitializeMap(this.InitializeBuffer(Convert.ToString(this.ReturnEncode("649ae451ca33ec53bbcbcc33becf15f4", false))));
à :
_encryptionKey = Encoding.UTF8.GetBytes(DefaultEncryptionKeyString);
InitializeMap(_encryptionKey);
Voilà pour les modifications principales.
Ce MapManager fonctionne parfaitement avec la version 2.11 du jeu.
Je vous mets en pièce jointe une archive contenant :
- Le projet DLL avec les sources modifiées
- La DLL compilée (version 2.0 du Framework)
Mot de passe de l'archive : cadernis.fr
En espérant que ça voit soit utile :P .
Si vous avez des remarques/questions n'hésitez pas.