aboutsummaryrefslogtreecommitdiff
path: root/src/game/MovementHandler.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-04-22 17:50:26 -0500
committermegamage <none@none>2009-04-22 17:50:26 -0500
commit1cd8ea8c1abbb1b110a0af36b60ec9d17c608da3 (patch)
tree6c0f408e0d8e6e5d7a105cb2addc252c6b7a6c95 /src/game/MovementHandler.cpp
parent06667c40dd0eb6858247b7fdfbd6156a46acd8b6 (diff)
*Fix some bugs about vehicle.
--HG-- branch : trunk
Diffstat (limited to 'src/game/MovementHandler.cpp')
-rw-r--r--src/game/MovementHandler.cpp49
1 files changed, 25 insertions, 24 deletions
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp
index 9a2f119cb42..cf312ad3513 100644
--- a/src/game/MovementHandler.cpp
+++ b/src/game/MovementHandler.cpp
@@ -482,32 +482,33 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data)
{
sLog.outDebug("WORLD: Recvd CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE");
recv_data.hexlike();
- uint32 a;
- uint16 b;
- uint16 c;
- uint32 d,e,f,g,h,i,j,k;
- int8 seat;
- recv_data >> a >> b >> c;
- recv_data >> d >> e >> f >> g >> h >> i >> j >> k;
- recv_data >> seat;
- //sLog.outError("change seat %u %u %u %u %u %u %u %u %u %u %u %u", a, b,c,d,e,f,g,h,i,j,k,seat);
-
- if(seat == GetPlayer()->GetTransSeat())
+
+ if(!GetPlayer()->m_Vehicle)
return;
- if(GetPlayer()->m_Vehicle)
- {
- if(Vehicle *vehicle = GetPlayer()->m_Vehicle->HasEmptySeat(seat))
- {
- GetPlayer()->m_Vehicle->RemovePassenger(GetPlayer());
- //If the player is going to a turret, the vehicle should be changed
- GetPlayer()->m_Vehicle = vehicle;
- if(!vehicle->AddPassenger(GetPlayer(), seat))
- {
- assert(false);
- }
- }
- }
+ if(recv_data.GetOpcode() == CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE)
+ ReadMovementInfo(recv_data, &GetPlayer()->m_Vehicle->m_movementInfo);
+
+ uint64 guid;
+ if(!recv_data.readPackGUID(guid))
+ return;
+
+ Vehicle *vehicle = ObjectAccessor::GetVehicle(guid);
+ if(!vehicle)
+ return;
+
+ int8 seatNum;
+ recv_data >> seatNum;
+ if(vehicle == GetPlayer()->m_Vehicle && seatNum == GetPlayer()->GetTransSeat())
+ return;
+
+ if(!vehicle->HasEmptySeat(seatNum))
+ return;
+
+ GetPlayer()->m_Vehicle->RemovePassenger(GetPlayer());
+ GetPlayer()->m_Vehicle = vehicle;
+ if(!vehicle->AddPassenger(GetPlayer(), seatNum))
+ assert(false);
}
void WorldSession::HandleRequestVehicleExit(WorldPacket &recv_data)