From a9a62a8641571bb68564714907bb4bc1be29bc6c Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 17 Jul 2019 13:24:04 +0300 Subject: script fix, bomb fix, flying components fix --- src/control/Script.cpp | 2 +- src/core/Camera.cpp | 2 +- src/core/Camera.h | 3 ++- src/vehicles/Automobile.cpp | 2 +- src/vehicles/Vehicle.cpp | 3 +++ 5 files changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 88537da8..5e9f51af 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -710,7 +710,7 @@ int8 CRunningScript::ProcessCommandsFrom0To99(int32 command) return 0; case COMMAND_SHAKE_CAM: CollectParameters(&m_nIp, 1); - TheCamera.CamShake(ScriptParams[0] / 1000.0f); + CamShakeNoPos(&TheCamera, ScriptParams[0] / 1000.0f); return 0; case COMMAND_SET_VAR_INT: { diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 166928c1..e35198d8 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -23,7 +23,7 @@ WRAPPER void CCamera::DrawBordersForWideScreen(void) { EAXJMP(0x46B430); } WRAPPER void CCamera::CalculateDerivedValues(void) { EAXJMP(0x46EEA0); } WRAPPER void CCamera::Restore(void) { EAXJMP(0x46F990); } WRAPPER void CCamera::SetWidescreenOff(void) { EAXJMP(0x46FF10); } -WRAPPER void CCamera::CamShake(float) { EAXJMP(0x46B100); } +WRAPPER void CamShakeNoPos(CCamera*, float) { EAXJMP(0x46B100); } bool CCamera::IsSphereVisible(const CVector ¢er, float radius, const CMatrix *mat) diff --git a/src/core/Camera.h b/src/core/Camera.h index 10554601..d5de76d4 100644 --- a/src/core/Camera.h +++ b/src/core/Camera.h @@ -466,7 +466,6 @@ int m_iModeObbeCamIsInForCar; void DrawBordersForWideScreen(void); void Restore(void); void SetWidescreenOff(void); - void CamShake(float); void dtor(void) { this->CCamera::~CCamera(); } }; @@ -479,3 +478,5 @@ static_assert(offsetof(CCamera, m_BlurBlue) == 0x9C, "CCamera: error"); static_assert(offsetof(CCamera, Cams) == 0x1A4, "CCamera: error"); static_assert(sizeof(CCamera) == 0xE9D8, "CCamera: wrong size"); extern CCamera &TheCamera; + +void CamShakeNoPos(CCamera*, float); \ No newline at end of file diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index ba8388d6..9e6ec173 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -1255,7 +1255,7 @@ CAutomobile::SpawnFlyingComponent(int32 component, uint32 type) obj->m_fElasticity = 0.1f; obj->m_fBuoyancy = obj->m_fMass*GRAVITY/0.75f; obj->ObjectCreatedBy = TEMP_OBJECT; - obj->bIsStatic = true; + obj->bIsStatic = false; obj->bIsPickup = false; obj->bUseVehicleColours = true; obj->m_colour1 = m_currentColour1; diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 2781f9f5..3ef581a0 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -383,6 +383,9 @@ CVehicle::ProcessDelayedExplosion(void) if(IsCar() && ((CAutomobile*)this)->m_bombType == 4 && (m_nBombTimer & 0xFE00) != 0xFE00) DMAudio.PlayOneShot(m_audioEntityId, SOUND_CAR_BOMB_TICK, 0.0f); + if (m_nBombTimer != 0) + return; + if(FindPlayerVehicle() != this && m_pBlowUpEntity == FindPlayerPed()) CWorld::Players[CWorld::PlayerInFocus].AwardMoneyForExplosion(this); BlowUpCar(m_pBlowUpEntity); -- cgit v1.2.3