public void SendTCPWithSize(byte[] ToSend) { PacketOutStream St = new PacketOutStream(); St.WriteEncoded7Bit(ToSend.Length); St.Write(ToSend); SendTCP(St.ToArray()); }
public override void OnRead(RiftClient From) { if (CharacterMgr.Instance.GetCharactersCount(From.Acct.Id, From.Realm.RealmId) >= 6) { Log.Error("CharacterCreate", "Hack From : " + From.GetIp); From.Disconnect(); return; } LobbyCharacterCreateResponse Rp = new LobbyCharacterCreateResponse(); Character Exist = CharacterMgr.CharacterDB.SelectObject<Character>("Name='" + CharacterMgr.CharacterDB.Escape(Name) + "' AND RealmID=" + From.Realm.RealmId); if (Exist != null) { Rp.AddField(0, EPacketFieldType.Unsigned7BitEncoded, (long)6); } else { Rp.AddField(0, EPacketFieldType.Unsigned7BitEncoded, (long)0); PacketOutStream Stream = new PacketOutStream(); PacketProcessor.WritePacket(ref Stream, Custom, false, true, true); CustomData = Stream.ToArray(); string Data = UTF8ByteArrayToString(CustomData); Character Char = new Character(); Char.Name = Name; Char.AccountId = From.Acct.Id; Char.RealmId = From.Realm.RealmId; Char.Race = Field1; Char.Sex = Field2; Char.Class = Field13; Char.HairModelID = HairID; Char.Level = 1; Char.Data = Data; CharacterMgr.Instance.AddObject(Char); Character CharEntry = CharacterMgr.Instance.GetCharacter(CharacterMgr.CharacterDB.Escape(Name)); Character_StartItems[] StartItems = CharacterMgr.Instance.GetStartItems(Field1, Field2, Field13); foreach (Character_StartItems Item in StartItems) { Character_Item It = new Character_Item(); It.ItemID = Item.ItemID; It.Bag = 0; It.Equiped = 1; It.GUID = CharEntry.Id; CharacterMgr.Instance.AddObject(It); } } From.SendSerialized(Rp); }
public void SendSerialized(ISerializablePacket Packet) { PacketOutStream Out = PacketProcessor.WritePacket(Packet); byte[] ToSend = Out.ToArray(); SendTCP(ToSend); List <Cache_Info> Entries = CacheMgr.Instance.GetBinCache(Packet.Opcode, false); foreach (Cache_Info Entry in Entries) { SendCache(Entry.Type, (uint)Entry.CacheId); } }
public static bool WriteField(ref PacketOutStream Stream, ISerializableField Field, int FieldIndex, int FieldType) { if (FieldType == (int)EPacketFieldType.Invalid) { return(false); } PacketOutStream NewStream = new PacketOutStream(); long FieldResult; PacketOutStream.Encode2Parameters(out FieldResult, FieldType, FieldIndex); NewStream.WriteEncoded7Bit(FieldResult); if (Field == null || Field.Serialize(ref NewStream)) { Stream.Write(NewStream.ToArray()); } return(true); }
public static bool WritePacket(ref PacketOutStream Stream, ISerializablePacket Packet, bool WithSize = true, bool WithTerminator = true, bool WithOpcode = true) { if (Packet == null) { Log.Error("WritePacket", "Packet == null"); return(false); } Packet.ConvertToField(); PacketOutStream Data = new PacketOutStream(); if (WithOpcode) { Data.WriteEncoded7Bit(Packet.Opcode); } foreach (ISerializableField Field in Packet.GetFields().Values) { WriteField(ref Data, Field); } if (WithTerminator && Packet.Opcode != (int)Opcodes.ProtocolHandshakeCompression) { WriteField(ref Data, null, 0, (int)EPacketFieldType.Terminator); } if (WithSize) { Stream.WriteEncoded7Bit(Data.Length); } Stream.Write(Data.ToArray()); return(true); }
public static bool WritePacket(ref PacketOutStream Stream,ISerializablePacket Packet, bool WithSize = true , bool WithTerminator = true, bool WithOpcode = true) { if (Packet == null) { Log.Error("WritePacket", "Packet == null"); return false; } Packet.ConvertToField(); PacketOutStream Data = new PacketOutStream(); if (WithOpcode) Data.WriteEncoded7Bit(Packet.Opcode); foreach (ISerializableField Field in Packet.GetFields().Values) WriteField(ref Data, Field); if (WithTerminator && Packet.Opcode != (int)Opcodes.ProtocolHandshakeCompression) WriteField(ref Data, null, 0, (int)EPacketFieldType.Terminator); if (WithSize) Stream.WriteEncoded7Bit(Data.Length); Stream.Write(Data.ToArray()); return true; }
public static bool WriteField(ref PacketOutStream Stream, ISerializableField Field, int FieldIndex, int FieldType) { if (FieldType == (int)EPacketFieldType.Invalid) return false; PacketOutStream NewStream = new PacketOutStream(); long FieldResult; PacketOutStream.Encode2Parameters(out FieldResult, FieldType, FieldIndex); NewStream.WriteEncoded7Bit(FieldResult); if(Field == null || Field.Serialize(ref NewStream)) Stream.Write(NewStream.ToArray()); return true; }