public GMItemPacket( Item item ) : base( 0x1A ) { this.EnsureCapacity( 20 ); // 14 base length // +2 - Amount // +2 - Hue // +1 - Flags uint serial = (uint)item.Serial.Value; int itemID = 0x1183; int amount = item.Amount; Point3D loc = item.Location; int x = loc.X; int y = loc.Y; int hue = item.Hue; int flags = item.GetPacketFlags(); int direction = (int)item.Direction; if ( amount != 0 ) serial |= 0x80000000; else serial &= 0x7FFFFFFF; m_Stream.Write( (uint) serial ); m_Stream.Write( (short) (itemID & 0x7FFF) ); if ( amount != 0 ) m_Stream.Write( (short) amount ); x &= 0x7FFF; if ( direction != 0 ) x |= 0x8000; m_Stream.Write( (short) x ); y &= 0x3FFF; if ( hue != 0 ) y |= 0x8000; if ( flags != 0 ) y |= 0x4000; m_Stream.Write( (short) y ); if ( direction != 0 ) m_Stream.Write( (byte) direction ); m_Stream.Write( (sbyte) loc.Z ); if ( hue != 0 ) m_Stream.Write( (ushort) hue ); if ( flags != 0 ) m_Stream.Write( (byte) flags ); }
public OldEtherealResidueWorldItem( Item item ) : base( 0x1A ) { this.EnsureCapacity( 20 ); uint serial = (uint)item.Serial.Value; int itemID = 0x0F8F & 0x3FFF; //grave dust int amount = item.Amount; Point3D loc = item.Location; int x = loc.X; int y = loc.Y; int hue = item.Hue == 0 ? 1151 : item.Hue; //pretty close in hue int flags = item.GetPacketFlags(); int direction = (int)item.Direction; if ( amount != 0 ) serial |= 0x80000000; else serial &= 0x7FFFFFFF; m_Stream.Write( (uint) serial ); if ( item is BaseMulti ) m_Stream.Write( (short) (itemID | 0x4000) ); else m_Stream.Write( (short) itemID ); if ( amount != 0 ) m_Stream.Write( (short) amount ); x &= 0x7FFF; if ( direction != 0 ) x |= 0x8000; m_Stream.Write( (short) x ); y &= 0x3FFF; if ( hue != 0 ) y |= 0x8000; if ( flags != 0 ) y |= 0x4000; m_Stream.Write( (short) y ); if ( direction != 0 ) m_Stream.Write( (byte) direction ); m_Stream.Write( (sbyte) loc.Z ); if ( hue != 0 ) m_Stream.Write( (ushort) hue ); if ( flags != 0 ) m_Stream.Write( (byte) flags ); }
public WorldItem( Item item ) : base(0x1A) { this.EnsureCapacity( 20 ); // 14 base length // +2 - Amount // +2 - Hue // +1 - Flags uint serial = (uint)item.Serial.Value; int itemID = item.ItemID & 0x3FFF; int amount = item.Amount; Point3D loc = item.Location; int x = loc.m_X; int y = loc.m_Y; int hue = item.Hue; int flags = item.GetPacketFlags(); int direction = (int)item.Direction; if ( amount != 0 ) { serial |= 0x80000000; } else { serial &= 0x7FFFFFFF; } m_Stream.Write( (uint) serial ); if ( item is BaseMulti ) m_Stream.Write( (short) (itemID | 0x4000) ); else m_Stream.Write( (short) itemID ); if ( amount != 0 ) { m_Stream.Write( (short) amount ); } x &= 0x7FFF; if ( direction != 0 ) { x |= 0x8000; } m_Stream.Write( (short) x ); y &= 0x3FFF; if ( hue != 0 ) { y |= 0x8000; } if ( flags != 0 ) { y |= 0x4000; } m_Stream.Write( (short) y ); if ( direction != 0 ) m_Stream.Write( (byte) direction ); m_Stream.Write( (sbyte) loc.m_Z ); if ( hue != 0 ) m_Stream.Write( (ushort) hue ); if ( flags != 0 ) m_Stream.Write( (byte) flags ); }
public WorldItemSA( Item item ) : base(0xF3, 24) { m_Stream.Write( (short) 0x1 ); int itemID = item.ItemID; if ( item is BaseMulti ) { m_Stream.Write( (byte) 0x02 ); m_Stream.Write( (int) item.Serial ); itemID &= 0x3FFF; m_Stream.Write( (short) itemID ); m_Stream.Write( (byte) 0 ); /*} else if ( ) { m_Stream.Write( (byte) 0x01 ); m_Stream.Write( (int) item.Serial ); m_Stream.Write( (short) itemID ); m_Stream.Write( (byte) item.Direction );*/ } else { m_Stream.Write( (byte) 0x00 ); m_Stream.Write( (int) item.Serial ); itemID &= 0x7FFF; m_Stream.Write( (short) itemID ); m_Stream.Write( (byte) 0 ); } int amount = item.Amount; m_Stream.Write( (short) amount ); m_Stream.Write( (short) amount ); Point3D loc = item.Location; int x = loc.m_X & 0x7FFF; int y = loc.m_Y & 0x3FFF; m_Stream.Write( (short) x ); m_Stream.Write( (short) y ); m_Stream.Write( (sbyte) loc.m_Z ); m_Stream.Write( (byte) item.Light ); m_Stream.Write( (short) item.Hue ); m_Stream.Write( (byte) item.GetPacketFlags() ); }
public WorldItem( Item item ) : base(0xF3, 26) { int itemId = item.ItemID; m_Stream.Write( (short) 1 ); m_Stream.Write( (byte) item.GraphicData ); m_Stream.Write( (uint) item.Serial.Value ); m_Stream.Write( (short) itemId ); m_Stream.Write( (byte) item.Direction ); m_Stream.Write( (short) item.Amount ); m_Stream.Write( (short) item.Amount ); Point3D loc = item.Location; m_Stream.Write( (short) loc.X ); m_Stream.Write( (short) loc.Y ); m_Stream.Write( (sbyte) loc.Z ); m_Stream.Write( (byte) item.Light ); m_Stream.Write( (ushort) item.Hue ); m_Stream.Write( (byte) item.GetPacketFlags() ); m_Stream.Write( (short) 0x0 ); // 0 for new item, 1 for update }