*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:
@@ -739,16 +739,20 @@ bool ChatHandler::HandleDebugEnterVehicle(const char * args)
|
|||||||
uint32 entry = (uint32)atoi(i);
|
uint32 entry = (uint32)atoi(i);
|
||||||
int8 seatId = j ? (int8)atoi(j) : -1;
|
int8 seatId = j ? (int8)atoi(j) : -1;
|
||||||
|
|
||||||
|
if(!entry)
|
||||||
|
m_session->GetPlayer()->EnterVehicle((Vehicle*)target, seatId);
|
||||||
|
else
|
||||||
|
{
|
||||||
Creature *passenger = NULL;
|
Creature *passenger = NULL;
|
||||||
Trinity::AllCreaturesOfEntryInRange check(m_session->GetPlayer(), entry, 20.0f);
|
Trinity::AllCreaturesOfEntryInRange check(m_session->GetPlayer(), entry, 20.0f);
|
||||||
Trinity::CreatureSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(m_session->GetPlayer(), passenger, check);
|
Trinity::CreatureSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(m_session->GetPlayer(), passenger, check);
|
||||||
m_session->GetPlayer()->VisitNearbyObject(20.0f, searcher);
|
m_session->GetPlayer()->VisitNearbyObject(30.0f, searcher);
|
||||||
if(!passenger || passenger == target)
|
if(!passenger || passenger == target)
|
||||||
return false;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -517,10 +517,13 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data)
|
|||||||
recv_data >> seatId;
|
recv_data >> seatId;
|
||||||
|
|
||||||
if(!guid)
|
if(!guid)
|
||||||
GetPlayer()->ChangeSeat(-1, seatId > 0);
|
GetPlayer()->ChangeSeat(-1, seatId > 0); // prev/next
|
||||||
else if(Vehicle *vehicle = ObjectAccessor::GetVehicle(guid))
|
else if(Vehicle *vehicle = ObjectAccessor::GetVehicle(guid))
|
||||||
|
{
|
||||||
|
if(vehicle->HasEmptySeat(seatId))
|
||||||
GetPlayer()->EnterVehicle(vehicle, seatId);
|
GetPlayer()->EnterVehicle(vehicle, seatId);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void WorldSession::HandleRequestVehicleExit(WorldPacket &recv_data)
|
void WorldSession::HandleRequestVehicleExit(WorldPacket &recv_data)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user