Salut,
Comment tu connais l'ID du paquet ? Déjà ça à l'air d'être du D2 (tu ne le précises pas) ensuite tu n'as pas l'air du tout de maîtriser la façon de lire les paquets ... Voir le tuto https://cadernis.com/d/115-comprendre-le-protocole-de-dofus
Sur D2 aucun texte brute n'est disponible il faut d'abord lire le header qui est sur 2 bytes. Ici tu as 4545 qui correspond à "10001010100101"
Il faut faire un >> 2 et un & 3 ce qui donne comme résultat:
"00100010101001" = ID 4433
"00000000000001" = Taille 1
Ton paquet à une taille lisible en 1 seul byte, le byte suivant est "03", ton paquet 4433 est : "45450364b919" le reste est un nouveau paquet.
Quand on regardes les sources de D2 fichier "com.ankamagames.dofus.network.messages.game.basic.BasicAckMessage"
Il contient ceci:
public function deserializeAs_BasicAckMessage(input:ICustomDataInput) : void {
this._seqFunc(input);
this._lastPacketIdFunc(input);
}
private function _seqFunc(input:ICustomDataInput) : void {
this.seq = input.readVarUhInt();
if(this.seq < 0) {
throw new Error("Forbidden value (" + this.seq + ") on element of BasicAckMessage.seq.");
}
}
private function _lastPacketIdFunc(input:ICustomDataInput) : void {
this.lastPacketId = input.readVarUhShort();
if(this.lastPacketId < 0) {
throw new Error("Forbidden value (" + this.lastPacketId + ") on element of BasicAckMessage.lastPacketId.");
}
}
Ton paquet contient alors 1 readVarUhInt et 1 readVarUhShort (les trucs chiants de D2 un Uh n'est pas fixe en nombre de bytes ..).
Donc déjà ton paquet 4433 contient que 3 bytes qui sont 2 chiffres.
À partir de là on peut vite voir les paquets sans même les traduire:
4545 03 64b919 (4433 BasicAckMessage)
8805 18 0006011f012c013a014701550171000042671aec2024a000 (8705 GameMapMovementMessage)
16a4 (1449 BasicNoOperationMessage)
Dans ton extrait il y à alors 3 messages. Le premier contient 3 bytes, le deuxième 24 et le dernier 0.
Pour le fun ton GameMapMovementMessage:
public function deserializeAs_GameMapMovementMessage(input:ICustomDataInput) : void {
var _val1:* = 0;
var _keyMovementsLen:uint = uint(input.readUnsignedShort());
for(var _i1:Number = 0; _i1 < _keyMovementsLen; _i1++) {
_val1 = uint(input.readShort());
this.keyMovements.push(_val1);
}
this.forcedDirection = input.readShort();
this.actorId = input.readDouble();
}
_keyMovementsLen = 00 06 (6)
il y à donc 6 cases entre le premier et derniers mouvement voici les cellId:
01 1f (287)
01 2c (300)
01 3a (314)
01 47 (327)
01 55 (341)
01 71 (369)
forcedDirection = 00 00 (0)
actorId = 42 67 1a ec 20 24 a0 00 (4784822730558317000)
Je penses sincèrement que tu n'as pas chercher avant d'écrire, je prends du temps pour te montrer tes erreurs, j'espères que cela te seras utiles.