2.0 Type VarInt

Inscrit
22 Aout 2019
Messages
14
J'aime
2
#1
Bonjour,

J'ai une petite question concernant le type VarInt, en effet il se trouve que dans mon message il y a des bytes à 00, et j'aimerai savoir comment ils sont interprété lors de la lecture, voici un exemple :

8e6e000c00467ded0200468a011f00467c0a0046a203060046d201050046a001050046f10504004673030046d40102004

La structure est la suivante : GID ITEM | EFFECT LEN |EFFECT | UID ITEM | QUANTITEE
GID ITEM est un VarInt, on a (8e6e00)16 = (1000 1110 0110 1110 0000 0000)2
Là, le décode du VarInt fait qu'on s'arrête au deuxième byte, donc le "GID ITEM" est égal à (8e6e)16 (enfin il faut toujours décoder ce VarInt).
Le problème c'est que là il est un byte à 00 entre le "GID ITEM" et "EFFECT LEN" : On effet on a les deux bytes suivants : (000c)16 = (0000 0000 0000 1100)2
Sauf que là, vu que le bit de point fort du premier byte est à 0, on est censé arrêter la lecture du VarInt au premier byte, ce qui nous donnerait une longueur d'effet de 0 au lieu de 12 .. Donc que faut-il faire ? Ignorer les bytes à 00 ? Pourquoi sont-il présent dans ce cas ? C'est assez étrange :x

Merci de votre aide !
 
Dernière édition:
Inscrit
22 Aout 2019
Messages
14
J'aime
2
#2
J'ai donc supposé qu'on ne prenait pas en compte ces bytes à 0, j'arrive à lire tout mes messages avec ça, donc je pense que c'est ce qu'il fallait faire :)
 
Inscrit
1 Février 2017
Messages
12
J'aime
2
#3
J'ai eu un problème semblable avec les packets que le client envoie. J'avais des zéros devant, et ça ne respectait pas du tout les sources Dofus... Juste qu'à comprendre qu'il y avait quelque chose de mis en avant par le client. C'est un "instanceID", un ID qui est incrémenter à chaque fois avec le serveur. Il faut simplement faire un ReadUInt pour récupérer cette ID, et continuer le parsing. Si tu envoies ces packets sur les serveurs de Dofus, il faut savoir comment cette ID fonctionne, mais mon cas étant que de la lecture, on peut ignorer.
 
Haut Bas