bool CVehicleEntity::Create() { // Is the vehicle already spawned? if(IsSpawned()) return false; // Load the model m_pModelInfo->AddReference(true); DWORD dwModelHash = m_pModelInfo->GetHash(); unsigned uiVehicleHandle; CIVScript::CreateCar(dwModelHash, 0.0f, 0.0f, 0.0f, &uiVehicleHandle, true); // Create the vehicle instance m_pVehicle = new CIVVehicle(g_pCore->GetGame()->GetPools()->GetVehiclePool()->AtHandle(uiVehicleHandle)); // Disable damage m_pVehicle->SetCarCanBeDamaged(false); m_pVehicle->SetCanBeVisiblyDamaged(false); // Reset Indicators SetIndicatorState(false,false,true,true); // Mark as spawned m_bSpawned = true; CLogFile::Printf("Created vehicle! (Id: %d, Handle: %d)", m_vehicleId, m_uiVehicleHandle); return true; }
CNetworkVehicle::CNetworkVehicle(DWORD dwModelHash, int iModelId) : CStreamableEntity(STREAM_ENTITY_VEHICLE, 200.0f), m_pVehicle ( NULL), m_vehicleId(INVALID_ENTITY_ID), m_pDriver(NULL), m_pModelInfo(CGame::GetModelInfo(MODEL_ADMIRAL_INDEX)), m_bSirenState(false), m_dwDoorLockState(0), m_ulHornDurationEnd(0), m_uiHealth(1000), m_fPetrolTankHealth(1000.0f), m_fDirtLevel(1000.0f), m_ucVariation(0), m_bEngineStatus(false), m_bTaxiLights(false), m_bLights(false), m_bGpsState(false), m_uiInterior(-1), m_bActorVehicle(false), m_bFirstStreamIn(false), m_bActive(false), m_iVehicleType(-1) { for(int i = 0; i < 8; i++) m_pPassengers[i] = NULL; SetModel(dwModelHash); memset(&m_vecPosition, 0, sizeof(CVector3)); memset(&m_vecRotation, 0, sizeof(CVector3)); memset(&m_vecMoveSpeed, 0, sizeof(CVector3)); memset(&m_vecTurnSpeed, 0, sizeof(CVector3)); memset(m_byteColors, 0, sizeof(m_byteColors)); memset(m_bIndicatorState, 0, sizeof(m_bIndicatorState)); SetIndicatorState(false, false, false, false); m_iVehicleType = iModelId; memset(m_iComponents, 0, sizeof(m_iComponents)); m_interp.pos.ulFinishTime = 0; m_interp.rot.ulFinishTime = 0; for(int i = 0; i < 6; i++) m_fDoor[i] = 0.0f; for(int i = 0; i < 4; i++) m_bWindow[i] = false; }
void CVehicleEntity::Reset() { // Check vehicle iv ptr if(!m_pVehicle) return; // Turn the engine off SetEngineState(false); // Reset Indicators SetIndicatorState(false,false,false,false); // Disable damage //m_pVehicle->SetCarCanBeDamaged(false); //m_pVehicle->SetCanBeVisiblyDamaged(false); }