コード例 #1
0
        public static void SendChestItem(TSPlayer player, int chestIndex, IList<ItemData> items)
        {
            const int TerrariaPacketHeaderSize = 3;
              const int ChestItemPacketSizeNoHeader = 8;
              const short PacketSize = TerrariaPacketHeaderSize + ChestItemPacketSizeNoHeader;

              using (MemoryStream packetData = new MemoryStream(new byte[PacketSize])) {
            BinaryWriter writer = new BinaryWriter(packetData);

            // Header
            writer.Write(PacketSize); // Packet size
            writer.Write((byte)PacketTypes.ChestItem);

            writer.Write((short)chestIndex);

            // Re-write item data for each item and send the packet
            for (int i = 0; i < items.Count; i++) {
              ItemData item = items[i];

              writer.Write((byte)i);
              writer.Write((short)item.StackSize);
              writer.Write((byte)item.Prefix);
              writer.Write((short)item.Type);

              player.SendRawData(packetData.ToArray());

              // Rewind to write the item data of another item
              packetData.Position -= ChestItemPacketSizeNoHeader;
            }
              }
        }