static void HandlePMPacket(Client c, string recipient, string message, string subject, ushort id = default(ushort)) { if (!(IsValidName(recipient) && IsValidData(message) && IsValidData(subject))) { c.Disconnect(); return; } Client u = ClientFromUsername(recipient); if (u == null) return; PrivateMessage pm = null; if (id == default(ushort) && !privateMessages.Exists(x => x.Id == id)) { pm = new PrivateMessage(id = (ushort)_random.Next(ushort.MinValue, ushort.MaxValue), subject, c.Value.Username, DateTime.Now, message); privateMessages.Add(pm); byte[] confirm = Packer.Serialize((byte)ServerPacket.PMConfirm, id, u.Value.Username, message, subject, DateTime.Now); c.Send(confirm); } else { pm = privateMessages.Find(x => x.Id == id); pm.Message.Add(message); } byte[] data = Packer.Serialize((byte)ServerPacket.PM, id, c.Value.Username, u.Value.Username, message, subject, DateTime.Now); u.Send(data); }