public override byte[] GenerateSpawnBlob() { PacketWriter writer = new PacketWriter(); writer.WriteStruct(Header); writer.WritePosition(Position); writer.Write((UInt16)0); writer.WriteFixedLengthASCII(Name, 0x20); writer.Write(0); // Padding? writer.Write(new byte[0xC]); // Unknown, usually zero writer.Write((UInt16)0); writer.Write((UInt16)0); writer.Write((UInt32)0); writer.Write((UInt32)0); writer.Write((UInt32)1101004800); // Always this writer.Write((UInt32)0); writer.Write((UInt32)0); writer.Write((UInt32)0); writer.Write((UInt32)1); writer.WriteMagic(1, 0x9FCD, 0xE7); writer.Write((UInt32)0); return writer.ToArray(); }
private void DoShipList(Socket socket) { var writer = new PacketWriter(); var entries = new List<ShipEntry>(); for (var i = 1; i < 11; i++) { var entry = new ShipEntry { order = (ushort)i, number = (uint)i, status = ShipStatus.Online, name = String.Format("Ship{0:0#}", i), ip = PolarisApp.BindAddress.GetAddressBytes() }; entries.Add(entry); } writer.WriteStruct(new PacketHeader(Marshal.SizeOf(typeof(ShipEntry)) * entries.Count + 12, 0x11, 0x3D, 0x4, 0x0)); writer.WriteMagic((uint)entries.Count, 0xE418, 81); foreach (var entry in entries) writer.WriteStruct(entry); writer.Write((Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds); writer.Write(1); socket.Send(writer.ToArray()); socket.Close(); }