diff options
author | Spp <none@none> | 2010-04-10 20:39:31 +0200 |
---|---|---|
committer | Spp <none@none> | 2010-04-10 20:39:31 +0200 |
commit | 6bad540360139b2340ee4e571f9b3ca0820e0597 (patch) | |
tree | 64f987449cf05deb47645504dfddd2f73515b531 /src | |
parent | a100b4c6b106de2c398bf5eff061899a61550be9 (diff) |
Fix CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE and CMSG_REQUEST_VEHICLE_SWITCH_SEAT handlers
Modified version of Havenard's patch
Closes issue 1452
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/MovementHandler.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index c0809b67fbc..c06d9581d0b 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -589,7 +589,7 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data) case CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE: { uint64 guid; // current vehicle guid - if (!recv_data.readPackGUID(guid) || vehicle_base->GetGUID() != guid) + if (!recv_data.readPackGUID(guid)) return; ReadMovementInfo(recv_data, &vehicle_base->m_movementInfo); @@ -601,6 +601,9 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data) int8 seatId; recv_data >> seatId; + if (vehicle_base->GetGUID() != guid) + return; + if (!accessory) GetPlayer()->ChangeSeat(-1, seatId > 0); // prev/next else if (Unit *vehUnit = Unit::GetUnit(*GetPlayer(), accessory)) @@ -614,13 +617,14 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data) case CMSG_REQUEST_VEHICLE_SWITCH_SEAT: { uint64 guid; // current vehicle guid - if (!recv_data.readPackGUID(guid) || vehicle_base->GetGUID() != guid) + if (!recv_data.readPackGUID(guid)) return; int8 seatId; recv_data >> seatId; - GetPlayer()->ChangeSeat(-1, seatId > 0); // prev/next + if (vehicle_base->GetGUID() == guid) + GetPlayer()->ChangeSeat(seatId); } break; default: |