diff options
| author | Machiavelli <machiavelli.trinity@gmail.com> | 2010-12-30 19:57:50 +0100 |
|---|---|---|
| committer | Machiavelli <machiavelli.trinity@gmail.com> | 2010-12-30 19:57:50 +0100 |
| commit | 11cc3eac7a9d19778f070c130facd4ee471d8169 (patch) | |
| tree | e607af02aa50ecbcf695a9890f63a9ba590694bb /src/server/game/Server/Protocol | |
| parent | 6c56f9e1b70ded755e651991740890fcc5ba3e99 (diff) | |
Core/Vehicles: Implement VEHICLE_SEAT_FLAG_B_CANSWITCH restriction, and do some cleanup.
Diffstat (limited to 'src/server/game/Server/Protocol')
| -rwxr-xr-x | src/server/game/Server/Protocol/Handlers/MovementHandler.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp index 0cd943ef9e7..675286e538f 100755 --- a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp @@ -548,6 +548,14 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data) if (!vehicle_base) return; + VehicleSeatEntry const* seat = GetPlayer()->GetVehicle()->GetSeatForPassenger(GetPlayer()); + if (!seat->CanSwitchFromSeat()) + { + sLog->outError("HandleChangeSeatsOnControlledVehicle, Opcode: %u, Player %u tried to switch seats but current seatflags %u don't permit that.", + recv_data.GetOpcode(), GetPlayer()->GetGUIDLow(), seat->m_flags); + return; + } + switch (recv_data.GetOpcode()) { case CMSG_REQUEST_VEHICLE_PREV_SEAT: @@ -635,6 +643,8 @@ void WorldSession::HandleEjectPassenger(WorldPacket &data) VehicleSeatEntry const* seat = vehicle->GetSeatForPassenger(plr); if (seat->IsEjectable()) plr->ExitVehicle(); + else + sLog->outError("Player %u attempted to eject player %u from non-ejectable seat.", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid)); } else sLog->outError("Player %u tried to eject player %u from vehicle, but the latter was not found in world!", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid)); @@ -650,6 +660,8 @@ void WorldSession::HandleEjectPassenger(WorldPacket &data) unit->ExitVehicle(); unit->ToCreature()->ForcedDespawn(1000); } + else + sLog->outError("Player %u attempted to eject creature GUID "UI64FMTD" from non-ejectable seat.", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid)); } else sLog->outError("Player %u tried to eject creature guid %u from vehicle, but the latter was not found in world!", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid)); |
