Bonjour, j'essaye de reconvertir l'émulateur Past de Skeezr en 2.40.
Je précise que j'utilise le client officiel avec le DofusInvoker patché de Nightwolf93.
Jusqu'à maintenant, j'ai pas eu trop de soucis : La base étant déjà faite, j'ai eu à faire quelque modifications par-ci par là.
Le problème que j'ai actuellement, c'est que le client ne répond partiellement pas aux messages envoyés par le serveur.
Je précise partiellement car ProtocolRequiredMessage et HelloConnectMessage sont bien envoyés et reçus par le client toutefois, imaginons que la version du client n'est pas bonne, le serveur envoie IdentificationFailedForBadVersionMessage. Le client ne répond pas à ce message, il reste figé sur la connexion avec une popup comme quoi le serveur met trop de temps à répondre. Pareil si les logs sont incorrects, si l'utilisateur est banni ou tout autre packet. Je précise également que les id des packets sont à jour.
Loading Image
Je constate des lignes dans les logs tels que :
« [MessageReceiver] Unknown packet received (ID 0, length 0) »
« [MessageReceiver] Unknown packet received (ID 6467, length 0) »
Je pense qu'il y a un problème à ce niveau là.
using Past.Protocol.IO;
namespace Past.Protocol
{
public abstract class NetworkMessage
{
readonly byte BIT_RIGHT_SHIFT_LEN_PACKET_ID = 2;
public abstract uint Id { get; }
public abstract void Serialize(IDataWriter writer);
public abstract void Deserialize(IDataReader reader);
public void Pack(BigEndianWriter writer)
{
Serialize(writer);
WritePacket(writer);
}
public void Unpack(BigEndianReader reader)
{
Deserialize(reader);
}
public void WritePacket(IDataWriter output)
{
byte[] data = output.Data;
output.Clear();
uint typeLen = ComputeTypeLen((uint)data.Length);
output.WriteShort((short)SubComputeStaticHeader(Id, typeLen));
switch (typeLen)
{
case 0:
return;
case 1:
output.WriteByte((byte)data.Length);
break;
case 2:
output.WriteShort((short)data.Length);
break;
case 3:
output.WriteByte((byte)(data.Length >> 16 & 255));
output.WriteShort((short)(data.Length & 65535));
break;
}
output.WriteBytes(data);
}
public uint ComputeTypeLen(uint len)
{
if (len > 65535)
{
return 3;
}
if (len > 255)
{
return 2;
}
if (len > 0)
{
return 1;
}
return 0;
}
public uint SubComputeStaticHeader(uint msgId, uint typeLen)
{
return msgId << BIT_RIGHT_SHIFT_LEN_PACKET_ID | typeLen;
}
public override string ToString()
{
return base.GetType().Name;
}
}
}
Merci pour votre aide