*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:
megamage
2009-05-23 20:41:48 -05:00
parent 27e3352d2b
commit 2475390852
2 changed files with 18 additions and 11 deletions
+7 -3
View File
@@ -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;
} }
+4 -1
View File
@@ -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)
{ {