*Fix a bug that player can change to an occupied seat on vehicle.
(The commit message of the last rev should be: do not allow player to use unusable vehicle seat) --HG-- branch : trunk
This commit is contained in:
+13
-9
@@ -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;
|
||||
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);
|
||||
}
|
||||
|
||||
passenger->EnterVehicle((Vehicle*)target, seatId);
|
||||
|
||||
PSendSysMessage("Creature entered vehicle %d", (uint32)seatId);
|
||||
PSendSysMessage("Unit %u entered vehicle %d", entry, (int32)seatId);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user