parse CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE opcode in proper way
--HG-- branch : trunk
This commit is contained in:
@@ -585,32 +585,38 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data)
|
||||
if(!GetPlayer()->GetVehicle())
|
||||
return;
|
||||
|
||||
if(recv_data.GetOpcode() == CMSG_REQUEST_VEHICLE_PREV_SEAT)
|
||||
switch (recv_data.GetOpcode())
|
||||
{
|
||||
case CMSG_REQUEST_VEHICLE_PREV_SEAT:
|
||||
GetPlayer()->ChangeSeat(-1, false);
|
||||
return;
|
||||
}
|
||||
else if(recv_data.GetOpcode() == CMSG_REQUEST_VEHICLE_NEXT_SEAT)
|
||||
{
|
||||
break;
|
||||
case CMSG_REQUEST_VEHICLE_NEXT_SEAT:
|
||||
GetPlayer()->ChangeSeat(-1, true);
|
||||
return;
|
||||
break;
|
||||
case CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE:
|
||||
{
|
||||
uint64 guid; // current vehicle guid
|
||||
if(!recv_data.readPackGUID(guid))
|
||||
return;
|
||||
|
||||
ReadMovementInfo(recv_data, &GetPlayer()->GetVehicleBase()->m_movementInfo);
|
||||
|
||||
uint64 accessory; // accessory guid
|
||||
if(!recv_data.readPackGUID(accessory))
|
||||
return;
|
||||
|
||||
int8 seatId;
|
||||
recv_data >> seatId;
|
||||
|
||||
if(!accessory)
|
||||
GetPlayer()->ChangeSeat(-1, seatId > 0); // prev/next
|
||||
else if(Unit *vehUnit = ObjectAccessor::GetUnit(*GetPlayer(), accessory))
|
||||
if(Vehicle *vehicle = vehUnit->GetVehicleKit())
|
||||
if(vehicle->HasEmptySeat(seatId))
|
||||
GetPlayer()->EnterVehicle(vehicle, seatId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if(recv_data.GetOpcode() == CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE)
|
||||
ReadMovementInfo(recv_data, &GetPlayer()->GetVehicleBase()->m_movementInfo);
|
||||
|
||||
uint64 guid;
|
||||
if(!recv_data.readPackGUID(guid))
|
||||
return;
|
||||
|
||||
int8 seatId;
|
||||
recv_data >> seatId;
|
||||
|
||||
if(!guid)
|
||||
GetPlayer()->ChangeSeat(-1, seatId > 0); // prev/next
|
||||
else if(Unit *vehUnit = ObjectAccessor::GetUnit(*GetPlayer(), guid))
|
||||
if(Vehicle *vehicle = vehUnit->GetVehicleKit())
|
||||
if(vehicle->HasEmptySeat(seatId))
|
||||
GetPlayer()->EnterVehicle(vehicle, seatId);
|
||||
}
|
||||
|
||||
void WorldSession::HandleRequestVehicleExit(WorldPacket &recv_data)
|
||||
|
||||
+1
-10
@@ -3252,18 +3252,9 @@ void Unit::_UpdateSpells( uint32 time )
|
||||
++i;
|
||||
}
|
||||
|
||||
WorldPacket auras;
|
||||
for (VisibleAuraMap::iterator itr = m_visibleAuras.begin(); itr != m_visibleAuras.end(); ++itr)
|
||||
if (itr->second->IsNeedClientUpdate())
|
||||
itr->second->ConstructAuraInfo(auras);
|
||||
|
||||
if(auras.wpos())
|
||||
{
|
||||
WorldPacket data(SMSG_AURA_UPDATE, GetPackGUID().size() + auras.wpos());
|
||||
data.append(GetPackGUID());
|
||||
data.append(auras);
|
||||
SendMessageToSet(&data, true);
|
||||
}
|
||||
itr->second->ClientUpdate();
|
||||
|
||||
_DeleteRemovedAuras();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user