Fixed. Thank you!
//packet length = 96
PacketBuilder.AppendHeader(ptr, buffer.Length, 1009);
*((uint*) (ptr + 4)) = player.uid;
*((uint*) (ptr + 8)) = 0;
*((ItemAction*) (ptr + 12)) = 46;
*((uint*) (ptr + 16)) = (uint)Environment.TickCount;
*((uint*)(ptr + 20)) = 0;
*((byte*)(ptr + 20)) = 0;
*((uint*)(ptr + 24)) = 0;
*((uint*)(ptr + 32)) = packet.Gear1;
*((uint*)(ptr + 36)) = packet.Gear2;
*((uint*)(ptr + 40)) = packet.Gear3;
*((uint*)(ptr + 44)) = packet.Gear4;
*((uint*)(ptr + 48)) = packet.Gear5;
*((uint*)(ptr + 52)) = packet.Gear6;
*((uint*)(ptr + 56)) = packet.Gear7;
*((uint*)(ptr + 60)) = packet.Gear8;
*((uint*)(ptr + 64)) = packet.Gear9;
*((uint*)(ptr + 68)) = packet.Gear15;
*((uint*)(ptr + 72)) = packet.Gear16;
*((uint*)(ptr + 76)) = packet.Gear17;
*((uint*)(ptr + 80)) = packet.Gear18;
*((uint*)(ptr + 84)) = packet.Gear19;
using (ServerSocket.Packet packet = new ServerSocket.Packet(92, true))
{
packet.WriteUshort(84, 0);
packet.WriteUshort(1009, 2);
packet.WriteUint((byte)(aleternante ? 1 : 0), 8);
packet.WriteUint(46, 12);
IItem[] fitems = new IItem[19];
foreach (IItem aitem in AllItems)
fitems[aitem.Position] = aitem;
byte position = 32;
for (byte x = 1; x < fitems.Length; x++)
{
if (fitems[x] != null)
packet.WriteUint(fitems[x].UID, (ushort)(position));
position += 4;
}
client.Enqueue(packet.ToArray());
}