diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Debugcmds.cpp | 22 | ||||
-rw-r--r-- | src/game/MovementHandler.cpp | 7 |
2 files changed, 18 insertions, 11 deletions
diff --git a/src/game/Debugcmds.cpp b/src/game/Debugcmds.cpp index 356b2c25ca2..fda50f8b9a6 100644 --- a/src/game/Debugcmds.cpp +++ b/src/game/Debugcmds.cpp @@ -739,16 +739,20 @@ bool ChatHandler::HandleDebugEnterVehicle(const char * args) uint32 entry = (uint32)atoi(i); int8 seatId = j ? (int8)atoi(j) : -1; - Creature *passenger = NULL; - Trinity::AllCreaturesOfEntryInRange check(m_session->GetPlayer(), entry, 20.0f); - Trinity::CreatureSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(m_session->GetPlayer(), passenger, check); - m_session->GetPlayer()->VisitNearbyObject(20.0f, searcher); - if(!passenger || passenger == target) - return false; - - passenger->EnterVehicle((Vehicle*)target, seatId); + if(!entry) + m_session->GetPlayer()->EnterVehicle((Vehicle*)target, seatId); + else + { + Creature *passenger = NULL; + Trinity::AllCreaturesOfEntryInRange check(m_session->GetPlayer(), entry, 20.0f); + Trinity::CreatureSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(m_session->GetPlayer(), passenger, check); + m_session->GetPlayer()->VisitNearbyObject(30.0f, searcher); + if(!passenger || passenger == target) + return false; + passenger->EnterVehicle((Vehicle*)target, seatId); + } - PSendSysMessage("Creature entered vehicle %d", (uint32)seatId); + PSendSysMessage("Unit %u entered vehicle %d", entry, (int32)seatId); return true; } diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index 59d0d263227..53aa5923782 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -517,9 +517,12 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data) recv_data >> seatId; if(!guid) - GetPlayer()->ChangeSeat(-1, seatId > 0); + GetPlayer()->ChangeSeat(-1, seatId > 0); // prev/next else if(Vehicle *vehicle = ObjectAccessor::GetVehicle(guid)) - GetPlayer()->EnterVehicle(vehicle, seatId); + { + if(vehicle->HasEmptySeat(seatId)) + GetPlayer()->EnterVehicle(vehicle, seatId); + } } void WorldSession::HandleRequestVehicleExit(WorldPacket &recv_data) |