17 SF_LOG_DEBUG(
"network",
"WORLD: Recvd CMSG_DISMISS_CONTROLLED_VEHICLE");
28 _player->ReadMovementInfo(recvData, &mi);
37 SF_LOG_DEBUG(
"network",
"WORLD: Recvd CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE");
50 SF_LOG_ERROR(
"network",
"HandleChangeSeatsOnControlledVehicle, Opcode: %u, Player %u tried to switch seats but current seatflags %u don't permit that.",
101 if (
Vehicle* vehicle = vehUnit->GetVehicleKit())
102 if (vehicle->HasEmptySeat(seatId))
103 vehUnit->HandleSpellClick(
GetPlayer(), seatId);
112 recvData.
ReadGuidMask(VehicleGUID, 7, 3, 0, 1, 6, 4, 5, 2);
115 if (vehicle_base->
GetGUID() == VehicleGUID)
118 if (
Vehicle* vehicle = vehUnit->GetVehicleKit())
119 if (vehicle->HasEmptySeat(seatId))
120 vehUnit->HandleSpellClick(
GetPlayer(), seatId);
131 recvData.
ReadGuidMask(VehicleGUID, 5, 7, 3, 0, 2, 4, 6, 1);
136 if (!player->GetVehicleKit())
138 if (!player->IsInRaidWith(
_player))
153 SF_LOG_ERROR(
"network",
"HandleEjectPassenger: Player %u is not in a vehicle!",
GetPlayer()->GetGUIDLow());
158 data.
ReadGuidMask(PassengerGUID, 4, 2, 1, 6, 5, 0, 7, 3);
166 SF_LOG_ERROR(
"network",
"Player %u tried to eject player %u from vehicle, but the latter was not found in world!",
GetPlayer()->GetGUIDLow(),
GUID_LOPART(PassengerGUID));
189 SF_LOG_ERROR(
"network",
"Player %u tried to eject creature guid %u from vehicle, but the latter was not found in world!",
GetPlayer()->GetGUIDLow(),
GUID_LOPART(PassengerGUID));
215 SF_LOG_DEBUG(
"network",
"WORLD: Recvd CMSG_REQUEST_VEHICLE_EXIT");
221 if (seat->CanEnterOrExit())
224 SF_LOG_ERROR(
"network",
"Player %u tried to exit vehicle, but seatflags %u (ID: %u) don't permit that.",
225 GetPlayer()->GetGUIDLow(), seat->m_ID, seat->m_flags);
232 SF_LOG_DEBUG(
"network",
"WORLD: Recvd CMSG_SET_VEHICLE_REC_ID_ACK");
245 data <<
uint32(vehicleId);
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
#define INTERACTION_DISTANCE
uint32 GUID_LOPART(uint64 x)
bool IS_CREATURE_GUID(uint64 guid)
bool IS_PLAYER_GUID(uint64 guid)
void WriteGuidBytes(const ObjectGuid &guid, Offsets... offsets)
void WriteGuidMask(const ObjectGuid &guid, Offsets... offsets)
void ReadGuidBytes(ObjectGuid &guid, Offsets... offsets)
void ReadGuidMask(ObjectGuid &guid, Offsets... offsets)
static Unit * GetUnit(WorldObject const &, uint64 guid)
static Player * FindPlayer(uint64)
void ReadMovementInfo(WorldPacket &data, MovementInfo *mi, Movement::ExtraMovementStatusElement *extras=NULL)
void SendMessageToSet(WorldPacket *data, bool self) override
Vehicle * GetVehicle() const
Unit * GetVehicleBase() const
bool IsOnVehicle(const Unit *vehicle) const
static Unit * GetUnit(WorldObject &object, uint64 guid)
void ChangeSeat(int8 seatId, bool next=true)
void ExitVehicle(Position const *exitPosition=NULL)
Unit * GetBase() const
May be called from scripts.
VehicleSeatEntry const * GetSeatForPassenger(Unit const *passenger) const
Returns information on the seat of specified passenger, represented by the format in VehicleSeat....
MovementInfo m_movementInfo
Opcodes GetOpcode() const
void HandleDismissControlledVehicle(WorldPacket &recvData)
void HandleChangeSeatsOnControlledVehicle(WorldPacket &recvData)
void HandleEjectPassenger(WorldPacket &data)
Player * GetPlayer() const
void HandleRequestVehicleExit(WorldPacket &recvData)
void HandleRideVehicleInteract(WorldPacket &recvData)
void HandleMoveSetVehicleRecAck(WorldPacket &recvData)
@ CMSG_REQUEST_VEHICLE_SWITCH_SEAT
@ SMSG_SET_VEHICLE_REC_ID
@ CMSG_REQUEST_VEHICLE_NEXT_SEAT
@ CMSG_REQUEST_VEHICLE_PREV_SEAT
@ CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE
bool CanSwitchFromSeat() const