public NetWrapOutgoingMessage CreateRPCPacket(params object[] objs) { NetWrapOutgoingMessage msg = new NetWrapOutgoingMessage(); List <byte> packet = new List <byte>(); packet.AddRange(RPCHeader); packet.Add(255); int count = 0; foreach (var obj in objs) { var stream = new MemoryStream(2048); RPCStream.AddCall(stream, obj); var array = stream.ToArray(); if (array.Length > 512) { packet.AddRange(BitConverter.GetBytes(-array.Length)); packet.AddRange(NetCompressByteArray.Wrap(array)); } else { packet.AddRange(BitConverter.GetBytes(array.Length)); packet.AddRange(array); } count++; } // set count to correct count (255 -> count) packet[4] = (byte)count; msg.Message = packet.ToArray(); msg.MessageCount = packet.Count; msg.MessageOffset = 0; return(msg); }