Bonjour à tous !
Je suis actuellement en train de dev un serveur D2 (pour le fun) et je rencontre un problème assez frustrant.
J'utilise la méthode du RawDataMessage j'ai donc dû patcher l'invoker à plusieurs endroit, et n'étant pas du tout un expert en 'patchage' j'ai peur d'avoir pété un truc.
Voici l'écran que j'obtient après l'envoi du CharacterListMessage (c'est censé être l'écran de création de perso) :
J'ai pensé au début que j'avais mal envoyé le message ou qu'il fallait en envoyer d'autres mais après analyse par rapport à l'officiel je n'ai pas l'impression que ce soit ça.
Le plus troublant c'est qu'aucune erreur n’apparaît dans les logs du client.
Voici la liste des échange entre le client et le serveur de jeu:
Et les modifications apportées au client (2.48.14):
Je vais continuer à investiguer de mon côté, si quelqu'un a une idée je suis preneur.
Merci !
Je suis actuellement en train de dev un serveur D2 (pour le fun) et je rencontre un problème assez frustrant.
J'utilise la méthode du RawDataMessage j'ai donc dû patcher l'invoker à plusieurs endroit, et n'étant pas du tout un expert en 'patchage' j'ai peur d'avoir pété un truc.
Voici l'écran que j'obtient après l'envoi du CharacterListMessage (c'est censé être l'écran de création de perso) :
J'ai pensé au début que j'avais mal envoyé le message ou qu'il fallait en envoyer d'autres mais après analyse par rapport à l'officiel je n'ai pas l'impression que ce soit ça.
Le plus troublant c'est qu'aucune erreur n’apparaît dans les logs du client.
Voici la liste des échange entre le client et le serveur de jeu:
- Server 1: ProtocolRequired
- Server 101: HelloGame
- Client 110: AuthenticationTicket
- Server 111: AuthenticationTicketAccepted
- Client 150: CharactersListRequest
- Server 151: CharacterList
C#:
protected override void serializeData(ICustomDataWriter writer)
{
writer.WriteUInt(RequiredVersion);
writer.WriteUInt(CurrentVersion);
}
C#:
protected override void serializeData(ICustomDataWriter writer)
{
}
C#:
protected override bool deserializeData(ICustomDataReader reader)
{
Lang = reader.ReadUTF();
Ticket = reader.ReadUTF();
// Pour une raison obscure, je reçois le ticket comme ça: "53,54,75,107..." -> parsing obligatoire
Ticket = string.Join("", Ticket.Split(',').Select(n => (char)byte.Parse(n)));
return true;
}
C#:
protected override void serializeData(ICustomDataWriter writer)
{
}
C#:
protected override bool deserializeData(ICustomDataReader reader)
{
return true;
}
C#:
protected override void serializeData(ICustomDataWriter writer)
{
writer.WriteShort(0); // Character count
writer.WriteBool(false); // Has startup actions (?)
}
Et les modifications apportées au client (2.48.14):
Je vais continuer à investiguer de mon côté, si quelqu'un a une idée je suis preneur.
Merci !