public override void Deserialize(ref PacketInStream Data) { if (PacketType == EPacketFieldType.True) val = (bool)true; else val = (bool)false; }
public override void Deserialize(ref PacketInStream Data) { long ListData = Data.ReadEncoded7Bit(); int ListType; int ListCount; PacketInStream.Decode2Parameters(ListData, out ListType, out ListCount); List<ISerializableField> Fields = new List<ISerializableField>(); Log.Success("Packet", "------> List : " + ListType + "("+ListCount+")"); for (int i = 0; i < ListCount; ++i) { ISerializableField Field = PacketProcessor.GetFieldType((EPacketFieldType)ListType); if (Field != null) { Field.Deserialize(ref Data); Fields.Add(Field); } } val = Fields; }
public override void Deserialize(ref PacketInStream Data) { long Opcode = Data.ReadEncoded7Bit(); PacketHandlerDefinition Handler = PacketProcessor.GetPacketHandler(Opcode); ISerializablePacket Packet = Activator.CreateInstance(Handler.GetClass()) as ISerializablePacket; Packet.Opcode = Opcode; ISerializableField Field = null; Log.Debug("Packet", "----------------------> New " + Opcode.ToString("X8")); while ((Field = PacketProcessor.ReadField(ref Data)) != null) { Log.Success("Packet", "------> ++T : " + Field.PacketType); Packet.AddField(Field.Index, Field); } Log.Debug("Packet", "----------------------> End "); Packet.ApplyToFieldInfo(); val = Packet; }
public override void Deserialize(ref PacketInStream Data) { long DicData = Data.ReadEncoded7Bit(); int KeyType; int ValueType; int Count; PacketInStream.Decode3Parameters(DicData, out KeyType, out ValueType, out Count); Dictionary<ISerializableField, ISerializableField> Dic = new Dictionary<ISerializableField, ISerializableField>(); Log.Debug("DicBit", "KeyType="+KeyType+",ValueType="+ValueType+",Count="+Count); for (int i = 0; i < Count; ++i) { Log.Debug("DicBit", "Deserialise : Index=" + i + ",Type=" + KeyType); ISerializableField Key = PacketProcessor.ReadField(ref Data,i,KeyType); ISerializableField Value = PacketProcessor.ReadField(ref Data, i, ValueType); if (Key != null && Value != null) Dic.Add(Key, Value); } val = Dic; }
public abstract void Deserialize(ref PacketInStream Data);
public override void Deserialize(ref PacketInStream Data) { long Size = Data.ReadEncoded7Bit(); val = Data.Read((int)Size); }
public override void OnRead(RiftClient From) { Log.Success("CharacterListRequest", "Characters Requested For : " + From.GetIp); Character[] Chars = CharacterMgr.Instance.GetCharacters(From.Acct.Id, From.Realm.RealmId); LobbyCharacterListResponse Rp = new LobbyCharacterListResponse(); foreach (Character Char in Chars) { LobbyCharacterEntry Entry = new LobbyCharacterEntry(); Entry.AccountId = Char.AccountId; Entry.Email = From.Acct.Email; Entry.CharacterId = Char.Id; Entry.CharacterName = Char.Name; Entry.Field5 = new LobbyCharacterInfoBase(); if (Char.Sex > 1) Entry.Field5.AddField(2, EPacketFieldType.False , (bool)false); Entry.Field5.Race = Char.Race; Entry.Field5.AddField(15, EPacketFieldType.Unsigned7BitEncoded, (long)Char.Class); Entry.Field5.AddField(9, EPacketFieldType.Unsigned7BitEncoded, (long)Char.Level); Entry.Field5.Field6 = (uint)CharacterMgr.Instance.GetMaskForRaceSex(Char.Race, Char.Sex).Mask; byte[] CustomData = Shared.NetWork.Marshal.StringToUTF8ByteArray(Char.Data); PacketInStream CustomStream = new PacketInStream(CustomData,CustomData.Length); Entry.Field5.Custom = PacketProcessor.ReadPacket(ref CustomStream) as CharacterCustom; Items_Template[] Templates = CharacterMgr.Instance.GetEquipedItems(Char.Id); foreach (Items_Template Template in Templates) { Model_Info model = CharacterMgr.Instance.GetItemModel(Template.ModelEntry, Char.Race, Char.Sex); CharacterDesc Desc = new CharacterDesc(); Desc.AddField(4, EPacketFieldType.Raw4Bytes, (uint)model.Field_4); if (model.Field_5 != 0) Desc.AddField(5, EPacketFieldType.Raw4Bytes, model.Field_5); if (model.Field_6 != 0) Desc.AddField(6, EPacketFieldType.Raw4Bytes, model.Field_6); if (Template.Slot == 10) Desc.AddField(7, EPacketFieldType.Unsigned7BitEncoded, (long)model.Field_7); else Desc.AddField(7, EPacketFieldType.Raw4Bytes, (uint)model.Field_7); Desc.Field8 = new CharacterInfoCache(); Desc.Field8.CacheIdentifier = (uint)model.CacheID; Entry.Field5.Field7.Add((long)Template.Slot, Desc); } Model_Info HairEntry = CharacterMgr.Instance.GetModelForCacheID(Char.HairModelID); if (HairEntry != null) { CharacterDesc DescHair = new CharacterDesc(); DescHair.AddField(4, EPacketFieldType.Raw4Bytes, (uint)HairEntry.Field_4); DescHair.AddField(7, EPacketFieldType.Raw4Bytes, (uint)HairEntry.Field_7); DescHair.Field8 = new CharacterInfoCache(); DescHair.Field8.CacheIdentifier = (uint)HairEntry.CacheID; Entry.Field5.Field7.Add((long)46, DescHair); } Rp.Characters.Add(Entry); } From.SendSerialized(Rp); }
// 0x2AE = CHARACTER_DEFINITION ? protected void PrepareCharInfo(Character Char, ref ISerializablePacket pck) { pck.AddField(12, EPacketFieldType.ByteArray, Char.Name); Realm realm_data = CharacterMgr.Instance.GetRealm((byte)Char.RealmId); realm_data.GenerateName(); pck.AddField(54, EPacketFieldType.Unsigned7BitEncoded, realm_data.RiftId); byte[] CustomData = Shared.NetWork.Marshal.StringToUTF8ByteArray(Char.Data); PacketInStream CustomStream = new PacketInStream(CustomData, CustomData.Length); pck.AddField(56, EPacketFieldType.Packet, PacketProcessor.ReadPacket(ref CustomStream) as CharacterCustom); // Field 60 // Character Specializations }
public override void Deserialize(ref PacketInStream Data) { val = Data.ReadEncoded7Bit(); }
public static ISerializableField ReadField(ref PacketInStream Stream, int FieldIndex, int FieldType) { if (FieldType == (int)EPacketFieldType.Terminator) return null; if (!Enum.IsDefined(typeof(EPacketFieldType), FieldType)) { Log.Error("Field", "Not Defined : " + FieldType); return null; } ISerializableField Field = GetFieldType((EPacketFieldType)FieldType); if (Field == null) { Log.Error("PacketProcessor", "Unhandled Field : Type = " + FieldType); return null; } Log.Success("ReadField", "Index = " + FieldIndex + ",Type=" + FieldType); Field.Index = FieldIndex; Field.PacketType = (EPacketFieldType)FieldType; Field.Deserialize(ref Stream); return Field; }
public override void Deserialize(ref PacketInStream Data) { val = Data.Read(4); }
public override void OnRead(RiftClient From) { long CharacterId = From.Char.Id; { WorldTemplateUpdate Update = new WorldTemplateUpdate(); Update.GUID = CharacterId; Update.Field1 = new byte[] { 0xEB,0x04,0x4F,0x1F,0x02,0x5F,0x17,0x07,0x90,0x01,0x07,0xAE,0x05,0x9E,0x02,0x00,0x9F, 0x12,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDF,0x12,0x24, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD0, 0x05,0xD8,0x05,0x07,0xC1,0x1E,0x57,0xF5,0x05,0x07,0x07 }; From.SendSerialized(Update); } { ISerializablePacket Packet = new ISerializablePacket(); Packet.Opcode = 0x1973; From.SendSerialized(Packet); } { ISerializablePacket Packet = new ISerializablePacket(); Packet.Opcode = 0x1E7F; Packet.AddField(0, EPacketFieldType.False, false); Packet.AddField(1, EPacketFieldType.False, false); Packet.AddField(2, EPacketFieldType.False, false); Packet.AddField(3, EPacketFieldType.List, new List<ISerializablePacket>()); Packet.AddField(4, EPacketFieldType.Unsigned7BitEncoded, (long)3); Packet.AddField(5, EPacketFieldType.Unsigned7BitEncoded, (long)30); Packet.AddField(6, EPacketFieldType.False, false); Packet.AddField(7, EPacketFieldType.List, new List<long>()); Packet.AddField(8, EPacketFieldType.List, new List<long>()); From.SendSerialized(Packet); } { WorldChannelJoinned Channel = new WorldChannelJoinned(); Channel.ChannelName = "Niveau 1-9"; Channel.CharacterName = From.Char.Name; Channel.Field2 = 5; From.SendSerialized(Channel); } { WorldChannelJoinned Channel = new WorldChannelJoinned(); Channel.ChannelName = "Mathosia"; Channel.CharacterName = From.Char.Name; Channel.Field2 = 2; From.SendSerialized(Channel); } { WorldTemplateUpdate Update = new WorldTemplateUpdate(); Update.GUID = CharacterId; Update.Field1 = new byte[] { 0xEB,0x04,0x4F,0x1F,0x02,0x5F,0x17,0x07,0xE7,0x02,0xBB,0x99,0x01,0x4E,0xA0,0x1F,0x1A,0x02,0x07,0x56,0xA0,0x1F,0x1A,0x02,0x07,0x58,0xA0,0x1F,0x1A,0x02,0x07,0x5E,0xA0,0x1F,0x19,0x07,0x60,0xA0,0x1F,0x19,0x07,0x66,0xA0,0x1F,0x19,0x07,0x70,0xA0,0x1F,0x1A,0x02,0x07,0xEA,0xBA,0xC9,0x65,0xA0,0x1F,0x19,0x07,0xAC,0xBA,0xEE,0x78,0xA0,0x1F,0x1A,0x02,0x07,0xA0,0x8C,0x88,0x9C,0x01,0xA0,0x1F,0x19,0x07,0x90,0xD6,0xBA,0x88,0x02,0xA0,0x1F,0x1A,0x02,0x07,0xD8,0xD2,0x84,0xAA,0x02,0xA0,0x1F,0x1A,0x02,0x07,0x9E,0x83,0x90,0x87,0x03,0xA0,0x1F,0x1A,0x02,0x07,0x8C,0xE7,0xF5,0x8E,0x03,0xA0,0x1F,0x1A,0x02,0x07,0x86,0xDE,0x9D,0xE9,0x03,0xA0,0x1F,0x19,0x07,0xF6,0xD4,0xCE,0xF4,0x03,0xA0,0x1F,0x1A,0x02,0x07,0xE2,0xA8,0xF2,0x8A,0x04,0xA0,0x1F,0x1A,0x02,0x07,0xD2,0x92,0xCB,0xB3,0x05,0xA0,0x1F,0x19,0x07,0xE0,0xFD,0xF3,0x92,0x06,0xA0,0x1F,0x1A,0x02,0x07,0xE6,0xB7,0xF4,0x94,0x06,0xA0,0x1F,0x1A,0x02,0x07,0xAE,0xBA,0xFD,0xC6,0x06,0xA0,0x1F,0x1A,0x02,0x07,0xB6,0xA5,0xF2,0x8C,0x07,0xA0,0x1F,0x19,0x07,0xC2,0xE4,0xA7,0x9A,0x07,0xA0,0x1F,0x1A,0x02,0x07,0xDE,0x9A,0xE4,0xCA,0x07,0xA0,0x1F,0x19,0x07,0xEC,0xF9,0xF1,0xDF,0x07,0xA0,0x1F,0x1A,0x02,0x07,0xA4,0xDE,0xC0,0xB1,0x08,0xA0,0x1F,0x1A,0x02,0x07,0xE8,0xCE,0xFA,0x81,0x09,0xA0,0x1F,0x1A,0x02,0x07,0x94,0xB1,0xA8,0xBB,0x09,0xA0,0x1F,0x1A,0x02,0x07,0x8A,0x95,0x8E,0xC8,0x09,0xA0,0x1F,0x1A,0x02,0x07,0xD8,0xF7,0xF3,0xFD,0x09,0xA0,0x1F,0x1A,0x02,0x07,0xFA,0xF1,0xE0,0xBA,0x0A,0xA0,0x1F,0x1A,0x02,0x07,0xCE,0xDA,0xE7,0xEE,0x0B,0xA0,0x1F,0x19,0x07,0xF6,0xA2,0x94,0xC1,0x0C,0xA0,0x1F,0x1A,0x02,0x07,0xE2,0xD0,0xE6,0xD0,0x0C,0xA0,0x1F,0x1A,0x02,0x07,0x88,0xFD,0xC2,0xD6,0x0D,0xA0,0x1F,0x1A,0x02,0x07,0x8C,0xA8,0xAA,0xF8,0x0D,0xA0,0x1F,0x19,0x07,0x88,0xBF,0x82,0xFE,0x0E,0xA0,0x1F,0x1A,0x02,0x07,0xBA,0xC4,0xB6,0x90,0x0F,0xA0,0x1F,0x1A,0x02,0x07,0xE7,0x03,0xBB,0x05,0x0A,0xAF,0x02,0x01,0x07,0x90,0x01,0x07,0x94,0x05,0xE7,0x05,0xBB,0x21,0x02,0xBF,0x1B,0x24,0xDF,0x92,0xC3,0x45,0x2C,0xC8,0x23,0xCF,0x7D,0x3C,0x82,0x9B,0xBB,0x22,0x97,0x04,0x90,0x1C,0x04,0x9B,0xEC,0x3E,0x73,0x07,0x07,0x04,0xBF,0x1B,0x24,0xEB,0x36,0xDE,0x44,0x2C,0x33,0x45,0x7A,0x77,0x32,0x15,0x3C,0x82,0x9B,0xBB,0x22,0x97,0x04,0x90,0x1C,0x04,0x5F,0x2D,0x02,0x4F,0x07,0x07,0x0A,0xBF,0x1B,0x24,0x87,0xD4,0x3F,0x5B,0x3A,0x02,0x97,0x04,0x90,0x1C,0x04,0x1E,0x3B,0xD5,0x2D,0x07,0x07,0x0E,0xBF,0x1B,0x24,0x62,0x00,0xDB,0x11,0x3C,0x6F,0x69,0x28,0x59,0x97,0x04,0x90,0x1C,0x04,0x7F,0xC2,0xC0,0x7C,0x07,0x07,0x10,0xBF,0x1B,0x24,0x9A,0x41,0xDC,0x01,0x3C,0x6F,0x69,0x28,0x59,0x97,0x04,0x90,0x1C,0x04,0x5E,0x8B,0x6F,0x26,0x07,0x07,0x12,0xBF,0x1B,0x24,0x9E,0xFC,0x62,0x77,0x3C,0x82,0x9B,0xBB,0x22,0x97,0x04,0x90,0x1C,0x04,0xB7,0x94,0xB3,0x29,0x07,0x07,0x16,0xBF,0x1B,0x24,0x48,0xF1,0xD4,0x0D,0x32,0x14,0x3C,0x6F,0x69,0x28,0x59,0x97,0x04,0x90,0x1C,0x04,0x8A,0x09,0x42,0x17,0x07,0x07,0x2E,0xBF,0x1B,0x24,0xE6,0x82,0x84,0x33,0x3C,0xB3,0xCD,0x6F,0x6A,0x97,0x04,0x90,0x1C,0x04,0x53,0x58,0x26,0x30,0x07,0x07,0x9F,0x06,0x57,0xA9,0x0E,0x02,0x03,0x2A,0xE8,0x07,0x41,0x07,0xDF,0x06,0x57,0x94,0x0E,0x07,0xD7,0x07,0xC2,0x05,0x12,0x05,0xDF,0x05,0x93,0x07,0x06,0xC6,0x01,0x14,0x14,0x1A,0x14,0x12,0x00,0x14,0x14,0x14,0x14,0x14,0x02,0x16,0x1A,0x00,0x00,0x00,0x00,0x8C,0x02,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0xCC,0x0B,0xD0,0x0F,0xC8,0x01,0x14,0x04,0x00,0x00,0x14,0x00,0x00,0x00,0xC8,0x01,0xC8,0x01,0x00,0x00,0x06,0x00,0xC8,0x01,0x00,0x00,0x00,0x00,0x00,0xC8,0x01,0x00,0x00,0x00,0x14,0x00,0x14,0x00,0x00,0xD0,0x0F,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB4,0x01,0x00,0x00,0x00,0xC8,0x01,0xC8,0x01,0xC8,0x01,0xC8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0x01,0x00,0x00,0x00,0xDF,0x06,0x93,0x07,0x06,0xC6,0x01,0x14,0x14,0x1A,0x14,0x12,0x00,0x14,0x14,0x14,0x14,0x14,0x02,0x16,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0xCC,0x0B,0xD0,0x0F,0xC8,0x01,0x14,0x04,0x00,0x00,0x14,0x00,0x00,0x00,0xC8,0x01,0xC8,0x01,0x00,0x00,0x06,0x00,0xC8,0x01,0x00,0x00,0x00,0x00,0x00,0xC8,0x01,0x00,0x00,0x00,0x14,0x00,0x14,0x00,0x00,0xD0,0x0F,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB4,0x01,0x00,0x00,0x00,0xC8,0x01,0xC8,0x01,0xC8,0x01,0xC8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0x01,0x00,0x00,0x00,0x07,0xDA,0x01,0x0F,0xE4,0x01,0x82,0x86,0x19,0x66,0x07,0xAE,0x05,0x97,0x04,0xF4,0x05,0x0C,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x07,0x9F,0x1E,0x97,0x02,0xB6,0x0E,0x01,0xDF,0x01,0xD7,0x01,0x90,0x1C,0x07,0x90,0x1C,0x07,0x90,0x1C,0x07,0x07,0xB6,0x0E,0xDF,0x01,0xD7,0x01,0x90,0x1C,0x07,0x90,0x1C,0x07,0x90,0x1C,0x07,0x07,0xB6,0x0E,0xDF,0x01,0xD7,0x01,0x90,0x1C,0x07,0x90,0x1C,0x07,0x90,0x1C,0x07,0x07,0xB6,0x0E,0xDF,0x01,0xD7,0x01,0x90,0x1C,0x07,0x90,0x1C,0x07,0x90,0x1C,0x07,0x07,0x07,0xC1,0x1E,0x57,0xF5,0x05,0x0F,0x1F,0x0A,0x01,0x5F,0x0B,0x84,0x9A,0xCC,0xE1,0x0C,0x07,0x4F,0x1F,0x0A,0x01,0x5F,0x0B,0x1E,0x07,0x07,0x9F,0x07,0x2B,0x06,0x08,0x18,0x04,0x02,0x07 }; From.SendSerialized(Update); } { byte[] data = CharacterMgr.Instance.GetBuild(1); PacketInStream ps = new PacketInStream(data, data.Length); WorldEntityUpdate EntPck = (WorldEntityUpdate)PacketProcessor.ReadPacket(ref ps); //new WorldEntityUpdate(); EntPck.BuildChar(From.Char); From.SendSerialized(EntPck); } WorldServerMOTD Motd = new WorldServerMOTD(); Motd.Text = ConfigMgr.GetConfig<WorldConfig>().ServerMOTD; From.SendSerialized(Motd); }
public static ISerializablePacket ReadPacket(ref PacketInStream Stream) { try { ISerializableField Field = ReadField(ref Stream, 0, (int)EPacketFieldType.Packet); if (Field == null) return null; return Field.val as ISerializablePacket; } catch (Exception e) { Log.Error("ReadPacket", e.ToString()); return null; } }
public bool ReadPacket() { if (Received.Count <= 0) return false; if (!ReceiveCompress && !Crypted) { PacketInStream Packet = new PacketInStream(Received.ToArray(), Received.Count); long Size = Packet.ReadEncoded7Bit(); if (Size > Packet.Length) return false; Received.RemoveRange(0, (int)(Packet.Position+Size)); ISerializablePacket Pack = PacketProcessor.ReadPacket(ref Packet); if (Pack != null) { Pack.OnRead(this); List<Cache_Info> Entries = CacheMgr.Instance.GetBinCache(Pack.Opcode, true); foreach (Cache_Info Entry in Entries) SendCache(Entry.Type, (uint)Entry.CacheId); } return true; } if (Crypted) { byte[] Packet = Received.ToArray(); Received.Clear(); Decrypt(Packet); } if (ReceiveCompress) { int End = -1; while ((End = GetEndCompression(ref Decrypted)) >= 0) { byte[] ToUnCompress = new byte[End]; Buffer.BlockCopy(Decrypted.ToArray(), 0, ToUnCompress, 0, End); Decrypted.RemoveRange(0, End); byte[] Result = UnCompress(ToUnCompress); Log.Dump("Decrypted", Result, 0, Result.Length); PacketInStream Packet = new PacketInStream(Result, Result.Length); long Size = Packet.ReadEncoded7Bit(); if (Size > Packet.Length) { Log.Error("ReadPacket", "Size > Packet.Lenght,Size=" + Size + ",Lenght=" + Packet.Length); continue; } ISerializablePacket Pack = PacketProcessor.ReadPacket(ref Packet); if (Pack != null) { Pack.OnRead(this); List<Cache_Info> Entries = CacheMgr.Instance.GetBinCache(Pack.Opcode, true); foreach (Cache_Info Entry in Entries) SendCache(Entry.Type, (uint)Entry.CacheId); } } } return false; }
public static ISerializableField ReadField(ref PacketInStream Stream) { long FieldData = Stream.ReadEncoded7Bit(); if (FieldData < 0) return null; int FieldType; int FieldIndex; if (!PacketInStream.Decode2Parameters(FieldData, out FieldType, out FieldIndex)) return null; return ReadField(ref Stream, FieldIndex, FieldType); }