C/C++ [C++] CharacterID

Gohu

Membre Actif
Inscrit
16 Novembre 2013
Messages
222
Reactions
2
#1
Bonjour a tous,

J'ai un probleme lorque je déserialize le paquet n°151 (CharactersListMessage) voici ma classe:

Code:
void CharactersListMessage::deserialize(MessageReader &reader)
{
    bool onSenFou = reader.readBool();
    unsigned short characterCount = reader.readUShort();

    for (int i = 0; i < characterCount; i++)     {

        CharacterBaseInformations infos;

        unsigned short onSenFou2 = reader.readUShort();
        infos.id = reader.readInt();
        infos.level = reader.readUByte();
        infos.name = reader.readUTF();
        deserialize_AsEntityLook(reader);
        infos.breed = reader.readByte();
        infos.sex = reader.readBool();
        infos.hasStartupActions = onSenFou;

        m_CharacterListInfos<<infos;
    }
}

int CharactersListMessage::getId() const
{
    return CHARACTERSLISTMESSAGE;
}

void CharactersListMessage::deserialize_AsEntityLook(MessageReader &reader)
{
    uint loc10 = 0;
    uint loc11 = 0;
    uint loc12 = 0;
    uint bonesId = reader.readShort();

    uint loc2 = reader.readUShort();
    for (int i = 0; i < loc2; i++)
        loc10 = reader.readShort();

    uint loc4 = reader.readUShort();
    for (int i = 0; i < loc4; i++)
        loc11 = reader.readInt();

    uint loc6 = reader.readUShort();
    for (int i = 0; i < loc6; i++)
        loc12 = reader.readUShort();

    uint loc8 = reader.readUShort();
    for (int i = 0; i < loc8; i++)  {
        char bindingPointCategory = reader.readByte();
        char bindingPointIndex = reader.readByte();
    }


}

QList<CharacterBaseInformations> CharactersListMessage::getCharacterListInfos() const
{
    return m_CharacterListInfos;
}

Les infos que j'ai la possiblité de verifier sont correctes (le sexe, le nom, le level etc..)
Mais l'id est érroné car quand j'envoie le paquet 152, je me fait honteusement rejeter par le serveur :(

Apres avoir sniffer, je me suis rendu compte que ceci etait le message du VRAI paquet: 0057D33D (uniquement le message, ici le header est exclus) alors que moi j'envoie ceci 0056D33D. Or le paquet 152 est uniquement composé de l'id du personnage, c'est donc ma classe de déserialization du paquet 151 qui merde...

Si vous pouviez m'aider a trouver d'ou vient mon erreur dans ma classe,
Merci d'avance

EDIT: j'ai changé par hasard le redInt() en readUInt() et ca marche! En revanche c'est extremement bizare car dans le sources c'est bien un readInt qui est fait donc je suis un peu perdu....
 
Haut Bas