void cProtocol146::SendPickupSpawn(const cPickup & a_Pickup) { ASSERT(!a_Pickup.GetItem().IsEmpty()); cCSLock Lock(m_CSPacket); // Send a SPAWN_OBJECT packet for the base entity: WriteByte(PACKET_SPAWN_OBJECT); WriteInt (a_Pickup.GetUniqueID()); WriteByte(0x02); WriteInt ((int)(a_Pickup.GetPosX() * 32)); WriteInt ((int)(a_Pickup.GetPosY() * 32)); WriteInt ((int)(a_Pickup.GetPosZ() * 32)); WriteInt (1); WriteShort((short)(a_Pickup.GetSpeed().x * 32)); WriteShort((short)(a_Pickup.GetSpeed().y * 32)); WriteShort((short)(a_Pickup.GetSpeed().z * 32)); WriteByte(0); WriteByte(0); // Send a ENTITY_METADATA packet with the slot info: WriteByte(PACKET_ENTITY_METADATA); WriteInt(a_Pickup.GetUniqueID()); WriteByte(0xaa); // a slot value at index 10 WriteItem(a_Pickup.GetItem()); WriteByte(0x7f); // End of metadata Flush(); }
void cProtocol132::SendCollectPickup(const cPickup & a_Pickup, const cPlayer & a_Player) { cCSLock Lock(m_CSPacket); WriteByte(PACKET_COLLECT_PICKUP); WriteInt (a_Pickup.GetUniqueID()); WriteInt (a_Player.GetUniqueID()); Flush(); // Also send the "pop" sound effect with a somewhat random pitch (fast-random using EntityID ;) SendSoundEffect( "random.pop", (int)(a_Pickup.GetPosX() * 8), (int)(a_Pickup.GetPosY() * 8), (int)(a_Pickup.GetPosZ() * 8), 0.5, (float)(0.75 + ((float)((a_Pickup.GetUniqueID() * 23) % 32)) / 64) ); }