From f87f14b432ea4b10f7359269bf697975a905c6f2 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 25 Aug 2021 13:41:41 +0300 Subject: [PATCH 1/7] Refactor cPedComments --- src/audio/AudioLogic.cpp | 74 +++++++++++++++++++------------------- src/audio/AudioManager.cpp | 3 +- src/audio/AudioManager.h | 20 +++++------ src/core/config.h | 1 - 4 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index e4c984f9..3d7cb62f 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -7802,49 +7802,51 @@ cPedComments::Add(tPedComment *com) { uint8 index; - if (m_nCommentsInBank[m_nActiveBank] >= NUM_PED_COMMENTS_SLOTS) { - index = m_nIndexMap[m_nActiveBank][NUM_PED_COMMENTS_SLOTS - 1]; - if (m_asPedComments[m_nActiveBank][index].m_nVolume > com->m_nVolume) + // copypasted priority check from cAudioManager::AddSampleToRequestedQueue + + if (m_nPedCommentCount[m_nActiveQueue] >= NUM_PED_COMMENTS_SLOTS) { + index = m_aPedCommentOrderList[m_nActiveQueue][NUM_PED_COMMENTS_SLOTS - 1]; + if (m_aPedCommentQueue[m_nActiveQueue][index].m_nVolume > com->m_nVolume) return; } else - index = m_nCommentsInBank[m_nActiveBank]++; + index = m_nPedCommentCount[m_nActiveQueue]++; - m_asPedComments[m_nActiveBank][index] = *com; + m_aPedCommentQueue[m_nActiveQueue][index] = *com; + // this bit is basically copypasted cAudioManager::AddDetailsToRequestedOrderList uint8 i = 0; if (index != 0) { for (i = 0; i < index; i++) { - if (m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][i]].m_nVolume < m_asPedComments[m_nActiveBank][index].m_nVolume) + if (m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][i]].m_nVolume < m_aPedCommentQueue[m_nActiveQueue][index].m_nVolume) break; } if (i < index) - memmove(&m_nIndexMap[m_nActiveBank][i + 1], &m_nIndexMap[m_nActiveBank][i], NUM_PED_COMMENTS_SLOTS - 1 - i); + memmove(&m_aPedCommentOrderList[m_nActiveQueue][i + 1], &m_aPedCommentOrderList[m_nActiveQueue][i], NUM_PED_COMMENTS_SLOTS - 1 - i); } - m_nIndexMap[m_nActiveBank][i] = index; + m_aPedCommentOrderList[m_nActiveQueue][i] = index; } void cPedComments::Process() { uint32 sampleIndex; - uint8 actualUsedBank; - tPedComment *comment; + uint8 queue; static uint8 counter = 0; - static int32 prevSamples[10] = { NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE }; + static uint32 prevSamples[10] = { NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE, NO_SAMPLE }; if(AudioManager.m_bIsPaused) return; - if(m_nCommentsInBank[m_nActiveBank]) { + if(m_nPedCommentCount[m_nActiveQueue]) { for(int i = 0; i < ARRAY_SIZE(prevSamples); i++) { - if(m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nSampleIndex == + if(m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nSampleIndex == prevSamples[(counter + 1 + i) % ARRAY_SIZE(prevSamples)]) { - m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nProcess = -1; + m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nProcess = -1; goto PedCommentAlreadyAdded; } } - sampleIndex = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nSampleIndex; + sampleIndex = m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nSampleIndex; switch(SampleManager.IsPedCommentLoaded(sampleIndex)) { // yes, this was a switch case FALSE: #if defined(GTA_PC) && !defined(FIX_BUGS) @@ -7853,13 +7855,13 @@ cPedComments::Process() SampleManager.LoadPedComment(sampleIndex); break; case TRUE: - AudioManager.m_sQueueSample.m_nEntityIndex = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nEntityIndex; + AudioManager.m_sQueueSample.m_nEntityIndex = m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nEntityIndex; AudioManager.m_sQueueSample.m_nCounter = 0; AudioManager.m_sQueueSample.m_nSampleIndex = sampleIndex; AudioManager.m_sQueueSample.m_nBankIndex = SFX_BANK_PED_COMMENTS; AudioManager.m_sQueueSample.m_nPriority = 3; - AudioManager.m_sQueueSample.m_nVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nVolume; - AudioManager.m_sQueueSample.m_fDistance = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_fDistance; + AudioManager.m_sQueueSample.m_nVolume = m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nVolume; + AudioManager.m_sQueueSample.m_fDistance = m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_fDistance; AudioManager.m_sQueueSample.m_nLoopCount = 1; #ifndef GTA_PS2 AudioManager.m_sQueueSample.m_nLoopStart = 0; @@ -7867,7 +7869,7 @@ cPedComments::Process() #endif #ifdef EXTERNAL_3D_SOUND #ifdef FIX_BUGS - AudioManager.m_sQueueSample.m_nEmittingVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nEmittingVolume; + AudioManager.m_sQueueSample.m_nEmittingVolume = m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nEmittingVolume; #else AudioManager.m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; #endif // FIX_BUGS @@ -7881,7 +7883,7 @@ cPedComments::Process() #endif AudioManager.m_sQueueSample.m_MaxDistance = 40.0f; AudioManager.m_sQueueSample.m_bStatic = TRUE; - AudioManager.m_sQueueSample.m_vecPos = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_vecPos; + AudioManager.m_sQueueSample.m_vecPos = m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_vecPos; #ifdef AUDIO_REVERB AudioManager.m_sQueueSample.m_bReverb = TRUE; #endif // AUDIO_REVERB @@ -7906,7 +7908,7 @@ cPedComments::Process() if (CTimer::GetIsSlowMotionActive()) AudioManager.m_sQueueSample.m_nFrequency >>= 1; #endif - m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nProcess = -1; + m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nProcess = -1; prevSamples[counter++] = sampleIndex; if(counter == 10) counter = 0; AudioManager.AddSampleToRequestedQueue(); @@ -7919,27 +7921,27 @@ cPedComments::Process() break; } } + PedCommentAlreadyAdded: - // Switch bank - if (m_nActiveBank == 0) { - actualUsedBank = 0; - m_nActiveBank = 1; + // Switch queue + if (m_nActiveQueue == 0) { + queue = 0; + m_nActiveQueue = 1; } else { - actualUsedBank = 1; - m_nActiveBank = 0; + queue = 1; + m_nActiveQueue = 0; } - comment = m_asPedComments[actualUsedBank]; - for (uint32 i = 0; i < m_nCommentsInBank[actualUsedBank]; i++) { - if (m_asPedComments[actualUsedBank][m_nIndexMap[actualUsedBank][i]].m_nProcess > 0) { - m_asPedComments[actualUsedBank][m_nIndexMap[actualUsedBank][i]].m_nProcess--; - Add(&comment[m_nIndexMap[actualUsedBank][i]]); + for (uint8 i = 0; i < m_nPedCommentCount[queue]; i++) { + if (m_aPedCommentQueue[queue][m_aPedCommentOrderList[queue][i]].m_nProcess > 0) { + m_aPedCommentQueue[queue][m_aPedCommentOrderList[queue][i]].m_nProcess--; + Add(&m_aPedCommentQueue[queue][m_aPedCommentOrderList[queue][i]]); } } - for (uint32 i = 0; i < NUM_PED_COMMENTS_SLOTS; i++) { - m_nIndexMap[actualUsedBank][i] = NUM_PED_COMMENTS_SLOTS; - } - m_nCommentsInBank[actualUsedBank] = 0; + // clear queue + for (uint8 i = 0; i < NUM_PED_COMMENTS_SLOTS; i++) + m_aPedCommentOrderList[queue][i] = NUM_PED_COMMENTS_SLOTS; + m_nPedCommentCount[queue] = 0; #if defined(GTA_PC) && !defined(FIX_BUGS) if(m_bDelay) if(CTimer::GetTimeInMilliseconds() - m_nDelayTimer > 6000) m_bDelay = FALSE; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index d0b9a5be..b81fda6e 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -752,9 +752,8 @@ cAudioManager::AddDetailsToRequestedOrderList(uint8 sample) m_aRequestedQueue[m_nActiveQueue][sample].m_nFinalPriority) break; } - if (i < sample) { + if (i < sample) memmove(&m_aRequestedOrderList[m_nActiveQueue][i + 1], &m_aRequestedOrderList[m_nActiveQueue][i], m_nActiveSamples - i - 1); - } } m_aRequestedOrderList[m_nActiveQueue][i] = sample; } diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index b82d1130..63eb66b7 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -99,10 +99,10 @@ VALIDATE_SIZE(tPedComment, 28); class cPedComments { public: - tPedComment m_asPedComments[NUM_PED_COMMENTS_BANKS][NUM_PED_COMMENTS_SLOTS]; - uint8 m_nIndexMap[NUM_PED_COMMENTS_BANKS][NUM_PED_COMMENTS_SLOTS]; - uint8 m_nCommentsInBank[NUM_PED_COMMENTS_BANKS]; - uint8 m_nActiveBank; + tPedComment m_aPedCommentQueue[NUM_SOUND_QUEUES][NUM_PED_COMMENTS_SLOTS]; + uint8 m_aPedCommentOrderList[NUM_SOUND_QUEUES][NUM_PED_COMMENTS_SLOTS]; + uint8 m_nPedCommentCount[NUM_SOUND_QUEUES]; + uint8 m_nActiveQueue; #ifdef GTA_PC bool8 m_bDelay; uint32 m_nDelayTimer; @@ -111,14 +111,14 @@ public: cPedComments() { for (int i = 0; i < NUM_PED_COMMENTS_SLOTS; i++) - for (int j = 0; j < NUM_PED_COMMENTS_BANKS; j++) { - m_asPedComments[j][i].m_nProcess = -1; - m_nIndexMap[j][i] = NUM_PED_COMMENTS_SLOTS; + for (int j = 0; j < NUM_SOUND_QUEUES; j++) { + m_aPedCommentQueue[j][i].m_nProcess = -1; + m_aPedCommentOrderList[j][i] = NUM_PED_COMMENTS_SLOTS; } - for (int i = 0; i < NUM_PED_COMMENTS_BANKS; i++) - m_nCommentsInBank[i] = 0; - m_nActiveBank = 0; + for (int i = 0; i < NUM_SOUND_QUEUES; i++) + m_nPedCommentCount[i] = 0; + m_nActiveQueue = 0; } void Add(tPedComment *com); void Process(); diff --git a/src/core/config.h b/src/core/config.h index 2590a0ee..8943223b 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -129,7 +129,6 @@ enum Config { NUMINVISIBLEENTITIES = 150, NUM_AUDIOENTITY_EVENTS = 4, - NUM_PED_COMMENTS_BANKS = 2, NUM_PED_COMMENTS_SLOTS = 20, NUM_SOUND_QUEUES = 2, From b7db2a12d499c1c1bd3667b00ab1553588c29885 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Thu, 26 Aug 2021 01:24:31 +0300 Subject: [PATCH 2/7] keep noinline only for broken vs versions --- src/peds/Ped.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/peds/Ped.h b/src/peds/Ped.h index f5a7d7dc..26cdf03f 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -712,7 +712,9 @@ public: void RestorePreviousObjective(void); void SetIdle(void); #ifdef _MSC_VER +#if _MSC_VER >= 1920 && _MSC_VER < 1929 __declspec(noinline) // workaround for a compiler bug, hooray MS :P +#endif #endif void SetObjective(eObjective, void*); void SetObjective(eObjective); From 8de1ffb84db0459aa43b68220a122a535e2aaf6a Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 26 Aug 2021 07:53:07 +0300 Subject: [PATCH 3/7] Fix reflections with audio time scale --- src/audio/AudioManager.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index b81fda6e..a1f2d3be 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -774,23 +774,30 @@ cAudioManager::AddReflectionsToRequestedQueue() uint32 oldCounter = m_sQueueSample.m_nCounter; float oldDist = m_sQueueSample.m_fDistance; CVector oldPos = m_sQueueSample.m_vecPos; +#ifndef USE_TIME_SCALE_FOR_AUDIO if ( CTimer::GetIsSlowMotionActive() ) { emittingVolume = m_sQueueSample.m_nVolume; oldFreq = m_sQueueSample.m_nFrequency; - } else { + } else +#endif emittingVolume = (9 * m_sQueueSample.m_nVolume) / 16; - } m_sQueueSample.m_MaxDistance /= 2.f; uint32 halfOldFreq = oldFreq >> 1; for (uint32 i = 0; i < ARRAY_SIZE(m_afReflectionsDistances); i++) { +#ifndef USE_TIME_SCALE_FOR_AUDIO if ( CTimer::GetIsSlowMotionActive() ) m_afReflectionsDistances[i] = (m_anRandomTable[i % 4] % 3) * 100.f / 8.f; +#endif reflectionDistance = m_afReflectionsDistances[i]; if (reflectionDistance > 0.0f && reflectionDistance < 100.f && reflectionDistance < m_sQueueSample.m_MaxDistance) { +#ifndef USE_TIME_SCALE_FOR_AUDIO m_sQueueSample.m_nReflectionDelay = CTimer::GetIsSlowMotionActive() ? (reflectionDistance * 800.f / 1029.f) : (reflectionDistance * 500.f / 1029.f); +#else + m_sQueueSample.m_nReflectionDelay = reflectionDistance * 500.f / 1029.f; +#endif if (m_sQueueSample.m_nReflectionDelay > 3) { m_sQueueSample.m_fDistance = m_afReflectionsDistances[i]; SET_EMITTING_VOLUME(emittingVolume); @@ -799,9 +806,12 @@ cAudioManager::AddReflectionsToRequestedQueue() if (m_sQueueSample.m_nVolume > emittingVolume / 16) { m_sQueueSample.m_nCounter = oldCounter + (i + 1) * 256; if (m_sQueueSample.m_nLoopCount > 0) { +#ifndef USE_TIME_SCALE_FOR_AUDIO if ( CTimer::GetIsSlowMotionActive() ) { m_sQueueSample.m_nFrequency = halfOldFreq + ((halfOldFreq * i) / ARRAY_SIZE(m_afReflectionsDistances)); - } else { + } else +#endif + { noise = RandomDisplacement(m_sQueueSample.m_nFrequency / 32); if (noise > 0) m_sQueueSample.m_nFrequency -= noise; From a94812b28dd4fff7bcb8ef054ce0b1a350ac219c Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 26 Aug 2021 08:15:18 +0300 Subject: [PATCH 4/7] Fix acceleration sound on exiting the vehicle --- src/audio/AudioLogic.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 3d7cb62f..606e9c22 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -2025,7 +2025,11 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh CurrentPretendGear = 1; bHandbrakeOnLastFrame = FALSE; } +#ifdef FIX_BUGS + if (CReplay::IsPlayingBack() || FindPlayerPed()->GetPedState() == PED_EXIT_CAR) { +#else if (CReplay::IsPlayingBack()) { +#endif accelerateState = (255.0f * Clamp(params.m_pVehicle->m_fGasPedal, 0.0f, 1.0f)); brakeState = (255.0f * Clamp(params.m_pVehicle->m_fBrakePedal, 0.0f, 1.0f)); } else { From 915888d2752cd78a6a64735d3856ac0c4d7153d2 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Thu, 26 Aug 2021 21:14:26 +0300 Subject: [PATCH 5/7] fixed debug teleport --- src/core/Radar.cpp | 2 +- src/core/re3.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 7e3a75b3..4e15559d 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -1504,7 +1504,7 @@ CRadar::ToggleTargetMarker(float x, float y) ms_RadarTrace[nextBlip].m_bDim = 0; ms_RadarTrace[nextBlip].m_bInUse = 1; ms_RadarTrace[nextBlip].m_Radius = 1.0f; - CVector pos(x, y, 0.0f/*CWorld::FindGroundZForCoord(x,y)*/); + CVector pos(x, y, 0.0f); TargetMarkerPos = pos; ms_RadarTrace[nextBlip].m_vec2DPos = pos; ms_RadarTrace[nextBlip].m_vecPos = pos; diff --git a/src/core/re3.cpp b/src/core/re3.cpp index d3b1f266..672cca98 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -775,12 +775,14 @@ FixCar(void) static void TeleportToWaypoint(void) { + CStreaming::LoadScene(CRadar::TargetMarkerPos); + CStreaming::LoadSceneCollision(CRadar::TargetMarkerPos); if (FindPlayerVehicle()) { if (CRadar::TargetMarkerId != -1) - FindPlayerVehicle()->Teleport(CRadar::TargetMarkerPos + CVector(0.0f, 0.0f, FindPlayerVehicle()->GetColModel()->boundingSphere.center.z)); + FindPlayerVehicle()->Teleport(CRadar::TargetMarkerPos + CVector(0.0f, 0.0f, CWorld::FindGroundZForCoord(CRadar::TargetMarkerPos.x, CRadar::TargetMarkerPos.y) + FindPlayerVehicle()->GetColModel()->boundingSphere.radius)); } else if(CRadar::TargetMarkerId != -1) - FindPlayerPed()->Teleport(CRadar::TargetMarkerPos + CVector(0.0f, 0.0f, FEET_OFFSET)); + FindPlayerPed()->Teleport(CRadar::TargetMarkerPos + CVector(0.0f, 0.0f, CWorld::FindGroundZForCoord(CRadar::TargetMarkerPos.x, CRadar::TargetMarkerPos.y) + FEET_OFFSET)); } #endif From 7a80acf6a16cae5aa3303090097a43406746e04d Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Thu, 26 Aug 2021 21:50:19 +0300 Subject: [PATCH 6/7] fix debug teleport --- src/core/re3.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 672cca98..b9cfc34d 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -47,6 +47,7 @@ #include "CarCtrl.h" #include "Population.h" #include "IniFile.h" +#include "Zones.h" #include "crossplatform.h" @@ -775,14 +776,14 @@ FixCar(void) static void TeleportToWaypoint(void) { - CStreaming::LoadScene(CRadar::TargetMarkerPos); - CStreaming::LoadSceneCollision(CRadar::TargetMarkerPos); - if (FindPlayerVehicle()) { - if (CRadar::TargetMarkerId != -1) - FindPlayerVehicle()->Teleport(CRadar::TargetMarkerPos + CVector(0.0f, 0.0f, CWorld::FindGroundZForCoord(CRadar::TargetMarkerPos.x, CRadar::TargetMarkerPos.y) + FindPlayerVehicle()->GetColModel()->boundingSphere.radius)); - } else - if(CRadar::TargetMarkerId != -1) - FindPlayerPed()->Teleport(CRadar::TargetMarkerPos + CVector(0.0f, 0.0f, CWorld::FindGroundZForCoord(CRadar::TargetMarkerPos.x, CRadar::TargetMarkerPos.y) + FEET_OFFSET)); + if (CRadar::TargetMarkerId == -1) + return; + CEntity* pEntityToTeleport = FindPlayerEntity(); + CVector vNewPos = CRadar::TargetMarkerPos; + CStreaming::LoadScene(vNewPos); + CStreaming::LoadSceneCollision(vNewPos); + vNewPos.z = CWorld::FindGroundZForCoord(vNewPos.x, vNewPos.y) + pEntityToTeleport->GetDistanceFromCentreOfMassToBaseOfModel(); + pEntityToTeleport->Teleport(vNewPos); } #endif From 8ef1e29a5ca389f56e942b25e7ad8062beb56cac Mon Sep 17 00:00:00 2001 From: Nikolay Date: Sat, 28 Aug 2021 14:19:51 +0300 Subject: [PATCH 7/7] fix --- src/control/Script4.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp index ac632b15..16a4ddae 100644 --- a/src/control/Script4.cpp +++ b/src/control/Script4.cpp @@ -811,7 +811,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command) flags = pPed->m_pMyVehicle->m_nNumMaxPassengers != 0 ? CAR_DOOR_FLAG_LF : CAR_DOOR_FLAG_LF | CAR_DOOR_FLAG_LR; break; case CAR_DOOR_LR: - flags = pPed->m_pMyVehicle->m_nNumMaxPassengers != 0 ? CAR_DOOR_FLAG_RF : CAR_DOOR_FLAG_LF | CAR_DOOR_FLAG_LR; + flags = pPed->m_pMyVehicle->m_nNumMaxPassengers != 0 ? CAR_DOOR_FLAG_LR : CAR_DOOR_FLAG_LF | CAR_DOOR_FLAG_LR; break; case CAR_DOOR_RF: flags = CAR_DOOR_FLAG_RF;