Je up mon topic car je m'étais arrêté d'analyser les paquets 1 ou 2 jours aprés la création du topic pour jouer pendant la fin de vacances, et que je pense que le sujet est à peu près le même.
Enfin bref, je viens de m'y remettre, et après avoir trouvé comment envoyer des messages dans le chat(avec WPE Pro), j'ai décidé de me lancer dans l'analyse du paquet pour se déplacer.
Je vous partage ce que je pense comprendre :
Voila un paquet pour me déplacer de une case vers la droite :
Paquet
Cliquez pour révéler
Cliquez pour masquer
0e d9 3a 00 02 10 cc 10 da 09 2c 07 05 52 97 ea
e3 9d 84 ad bb 8f be 92 2e 28 d3 3f d8 ad 2b 8a
dd ca c9 70 1f d8 2e a7 7b d7 4a c4 e2 5a 61 c1
77 9b 73 22 32 a4 20 1c 74 e9 f8 ad 57
0e d9 : id 950
Taille sur 1 octet : 3a = 59
Je vais dans les sources
public function deserializeAs_GameMapMovementRequestMessage(param1:ICustomDataInput) : void
{
var _loc4_:uint = 0;
var _loc2_:uint = param1.readUnsignedShort();
var _loc3_:uint = 0;
while(_loc3_ < _loc2_)
{
_loc4_ = param1.readShort();
if(_loc4_ < 0)
{
throw new Error("Forbidden value (" + _loc4_ + ") on elements of keyMovements.");
}
this.keyMovements.push(_loc4_);
_loc3_++;
}
this.mapId = param1.readInt();
if(this.mapId < 0)
{
throw new Error("Forbidden value (" + this.mapId + ") on element of GameMapMovementRequestMessage.mapId.");
}
}
var _loc2_:uint = param1.readUnsignedShort();
Sur 2 octets
00 02 = 2
while(_loc3_ < _loc2_)
{
_loc4_ = param1.readShort();
if(_loc4_ < 0)
{
throw new Error("Forbidden value (" + _loc4_ + ") on elements of keyMovements.");
}
this.keyMovements.push(_loc4_);
_loc3_++;
}
_loc4_ = param1.readShort();
2 octets
_loc2_ = 2, la boucle se fera donc deux fois
On lit donc 10 CC cet 10 DA
Je pense que 10 est l'id d'un mouvement vers la droite (même si en général c'est 11 je ne sais pas pourquoi, peut-être que c'est dû à ma position géographique, à certains moment je n'avais pas l'id du mouvement mais l'id-1), j'ai alors trouvé :
Droite : 11
Gauche : 51
Haut : 71
Bas : 31
Diagonale haut droite : 01
Diagonale haut gauche : 61
Diagonale bas droite: 21
Diagonale bas gauche: 41
CC et DA sont les id des cellules ou je me trouve il me semble.
this.mapId = param1.readInt();
On lit un int, 4 octets
09 2c 07 05 = 153 880 325 C'est l'id de la map
Voila ce que j'ai trouvé, mais maintenant, je me retrouve face à un problème que je n'arrive pas à expliquer :
J'ai renvoyé le paquet au serveur en ayant la même position géographique mais mon perso ne bouge pas, et parfois je me fais même kick du serveur peu après l'envoi du paquet.
Je me demande alors si c'est dû à toute la partie chiffrée qui ne me servait à rien pour les messages publics, ou si il y a un autre élément que je ne vois pas.