aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server/Protocol
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2010-12-30 19:57:50 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2010-12-30 19:57:50 +0100
commit11cc3eac7a9d19778f070c130facd4ee471d8169 (patch)
treee607af02aa50ecbcf695a9890f63a9ba590694bb /src/server/game/Server/Protocol
parent6c56f9e1b70ded755e651991740890fcc5ba3e99 (diff)
Core/Vehicles: Implement VEHICLE_SEAT_FLAG_B_CANSWITCH restriction, and do some cleanup.
Diffstat (limited to 'src/server/game/Server/Protocol')
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/MovementHandler.cpp12
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));