Salut,
J'ai un problème le code est commenté avec l'erreur, je tente d'afficher les personnages qui entre la map avec le message GameRolePlayShowActorMessage, et quand j'arrive a la deserialization de EntityLook
Merci d'avance
J'ai un problème le code est commenté avec l'erreur, je tente d'afficher les personnages qui entre la map avec le message GameRolePlayShowActorMessage, et quand j'arrive a la deserialization de EntityLook
C#:
class EntityLook
{
public const uint Id = 55;
public uint bonesId;
public uint[] skins;
public int[] indexedColors;
public int[] scales;
public SubEntity[] subentities;
public virtual uint TypeId
{
get
{
return 55;
}
}
public EntityLook()
{
}
public EntityLook(uint bonesId, uint[] skins, int[] indexedColors, int[] scales, SubEntity[] subentities)
{
this.bonesId = bonesId;
this.skins = skins;
this.indexedColors = indexedColors;
this.scales = scales;
this.subentities = subentities;
}
public virtual void Serialize(IDataWriter writer)
{
writer.WriteVarShort((short)this.bonesId);
writer.WriteShort((short)this.skins.Length);
for (uint i = 0; i < this.skins.Length; i++)
{
writer.WriteVarShort((short)this.skins[i]);
}
writer.WriteShort((short)this.indexedColors.Length);
for (uint j = 0; j < this.indexedColors.Length; j++)
{
writer.WriteInt(this.indexedColors[j]);
}
writer.WriteShort((short)this.scales.Length);
for (uint k = 0; k < this.scales.Length; k++)
{
writer.WriteVarShort((short)this.scales[k]);
}
writer.WriteShort((short)this.subentities.Length);
for (uint l = 0; l < this.subentities.Length; l++)
{
SubEntity subEntity = this.subentities[l];
subEntity.Serialize(writer);
}
}
public virtual void Deserialize(IDataReader reader)
{
this.bonesId = reader.ReadVarUhShort();
uint num = reader.ReadUShort();
this.skins = new uint[num];
for (uint i = 0; i < num; i++)
{
//C'est ici que je reçois l'erreur, sa lit plusieurs fois mais apres sa cause l'erreur et sa me sort soit Too much Data (dans ReadVarShort) ou Impossible de lire au-delà de la fin du flux (dans ReadByte) Regarde en bas j'ai les méthodes concerné
this.skins[i] = reader.ReadVarUhShort();
}
num = reader.ReadUShort();
this.indexedColors = new int[num];
for (uint j = 0; j < num; j++)
{
this.indexedColors[j] = reader.ReadInt();
}
num = reader.ReadUShort();
this.scales = new int[num];
for (uint k = 0; k < num; k++)
{
this.scales[k] = reader.ReadVarShort();
}
num = reader.ReadUShort();
this.subentities = new SubEntity[num];
for (uint l = 0; l < num; l++)
{
this.subentities[l] = new SubEntity();
this.subentities[l].Deserialize(reader);
}
}
}
LES METHODES AUQUEL JE RECOIT ERREUR ILS SONT DANS MON BIGENDIANREADER :
public byte ReadByte()
{//ERREUR: Impossible de lire au-delà de la fin du flux
return this.m_reader.ReadByte();
}
public short ReadVarShort()
{//ERREUR: Too much Data
int num = 0;
int i = 0;
while (i < 16)
{
int num2 = (int)this.ReadByte();
bool flag = (num2 & 128) == 128;
bool flag2 = i > 0;
if (flag2)
{
num += (num2 & 127) << i;
}
else
{
num += (num2 & 127);
}
i += 7;
bool flag3 = !flag;
if (flag3)
{
bool flag4 = num > 32767;
if (flag4)
{
num -= 65536;
}
return (short)num;
}
}
throw new Exception("Too much data");
}
//Laquelle j'appelle dans EntityLook
public uint ReadVarUhShort()
{
return (uint)this.ReadVarShort();
}
Dernière édition: