public void SendTaxiMenu(ref WS_PlayerData.CharacterObject objCharacter, ulong cGuid) { if (!WorldServiceLocator._WorldServer.WORLD_CREATUREs.ContainsKey(cGuid)) { return; } int currentTaxi = WorldServiceLocator._WS_DBCDatabase.GetNearestTaxi(WorldServiceLocator._WorldServer.WORLD_CREATUREs[cGuid].positionX, WorldServiceLocator._WorldServer.WORLD_CREATUREs[cGuid].positionY, checked ((int)WorldServiceLocator._WorldServer.WORLD_CREATUREs[cGuid].MapID)); if (!objCharacter.TaxiZones[currentTaxi]) { objCharacter.TaxiZones.Set(currentTaxi, value: true); Packets.PacketClass SMSG_NEW_TAXI_PATH = new Packets.PacketClass(Opcodes.SMSG_NEW_TAXI_PATH); try { objCharacter.client.Send(ref SMSG_NEW_TAXI_PATH); } finally { SMSG_NEW_TAXI_PATH.Dispose(); } Packets.PacketClass SMSG_TAXINODE_STATUS = new Packets.PacketClass(Opcodes.SMSG_TAXINODE_STATUS); try { SMSG_TAXINODE_STATUS.AddUInt64(cGuid); SMSG_TAXINODE_STATUS.AddInt8(1); objCharacter.client.Send(ref SMSG_TAXINODE_STATUS); } finally { SMSG_TAXINODE_STATUS.Dispose(); } } else { Packets.PacketClass SMSG_SHOWTAXINODES = new Packets.PacketClass(Opcodes.SMSG_SHOWTAXINODES); try { SMSG_SHOWTAXINODES.AddInt32(1); SMSG_SHOWTAXINODES.AddUInt64(cGuid); SMSG_SHOWTAXINODES.AddInt32(currentTaxi); SMSG_SHOWTAXINODES.AddBitArray(objCharacter.TaxiZones, 32); objCharacter.client.Send(ref SMSG_SHOWTAXINODES); } finally { SMSG_SHOWTAXINODES.Dispose(); } } }