From 7e4c68382416229cf0a58637bd9f308a6def1caa Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 20 Apr 2020 01:04:57 +0300 Subject: fixes --- src/control/Pickups.cpp | 2 +- src/control/Script.cpp | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) (limited to 'src/control') diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index f9605ca6..1bf6d9ce 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -491,7 +491,7 @@ CPickups::GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quan int32 slot = 0; if (type == PICKUP_FLOATINGPACKAGE || type == PICKUP_NAUTICAL_MINE_INACTIVE) { - for (slot = NUMPICKUPS; slot >= 0; slot--) { + for (slot = NUMPICKUPS-1; slot >= 0; slot--) { if (aPickUps[slot].m_eType == PICKUP_NONE) { bFreeFound = true; break; diff --git a/src/control/Script.cpp b/src/control/Script.cpp index bfe2de34..4707042d 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -1675,13 +1675,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command) return 0; } case COMMAND_GENERATE_RANDOM_INT: -#ifdef FIX_BUGS - // Not a very good fix but before switching to PS2 rand, it sort of works - *GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) = CGeneral::GetRandomNumberInRange(0, 65535); -#else - /* On PC between 0 and 32767, even though script expects values between 0 and 65536 */ *GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) = CGeneral::GetRandomNumber(); -#endif return 0; case COMMAND_CREATE_CHAR: { -- cgit v1.2.3 From 0b12cacf15baea97414d401eb2684cfc4cec8d0d Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 24 Apr 2020 01:01:41 +0300 Subject: more 1.1 patch --- src/control/Script.cpp | 10 ++++++++++ src/control/ScriptCommands.h | 3 +++ 2 files changed, 13 insertions(+) (limited to 'src/control') diff --git a/src/control/Script.cpp b/src/control/Script.cpp index c7c762d2..0445922a 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -9649,6 +9649,16 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command) CPed::nEnterCarRangeMultiplier = (float)ScriptParams[0]; #endif return 0; +#endif +#ifndef GTA3_1_1_PATCH + case COMMAND_SET_THREAT_REACTION_RANGE_MULTIPLIER: + CollectParameters(&m_nIp, 1); +#ifdef FIX_BUGS + CPed::nThreatReactionRangeMultiplier = *(float*)&ScriptParams[0]; +#else + CPed::nThreatReactionRangeMultiplier = (float)ScriptParams[0]; +#endif + return 0; #endif default: assert(0); diff --git a/src/control/ScriptCommands.h b/src/control/ScriptCommands.h index dafe2418..77cf3f0f 100644 --- a/src/control/ScriptCommands.h +++ b/src/control/ScriptCommands.h @@ -1156,5 +1156,8 @@ enum { COMMAND_IS_CHAR_LYING_DOWN, COMMAND_CAN_CHAR_SEE_DEAD_CHAR, COMMAND_SET_ENTER_CAR_RANGE_MULTIPLIER, +#ifndef GTA3_1_1_PATCH + COMMAND_SET_THREAT_REACTION_RANGE_MULTIPLIER +#endif #endif }; \ No newline at end of file -- cgit v1.2.3 From 0fc505926fe40c4366dbb5fe365b4ea7d2381ddf Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 24 Apr 2020 01:32:17 +0300 Subject: fix annoying bug --- src/control/CarCtrl.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/control') diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index ae38b68f..f347b2c9 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -1868,6 +1868,9 @@ void CCarCtrl::Init(void) NumFiretrucksOnDuty = 0; LastTimeFireTruckCreated = 0; LastTimeAmbulanceCreated = 0; +#ifdef FIX_BUGS + LastTimeLawEnforcerCreated = 0; +#endif bCarsGeneratedAroundCamera = false; CountDownToCarsAtStart = 2; CarDensityMultiplier = 1.0f; @@ -1890,6 +1893,11 @@ void CCarCtrl::ReInit(void) NumPermanentCars = 0; NumAmbulancesOnDuty = 0; NumFiretrucksOnDuty = 0; +#ifdef FIX_BUGS + LastTimeFireTruckCreated = 0; + LastTimeAmbulanceCreated = 0; + LastTimeLawEnforcerCreated = 0; +#endif CountDownToCarsAtStart = 2; CarDensityMultiplier = 1.0f; for (int i = 0; i < MAX_CARS_TO_KEEP; i++) -- cgit v1.2.3 From bed41e1bec7969535099b8aaaf035288c12e7bfb Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 24 Apr 2020 01:40:12 +0300 Subject: removed redundant checks --- src/control/Script.cpp | 50 ++++++++++++++++++-------------------------------- 1 file changed, 18 insertions(+), 32 deletions(-) (limited to 'src/control') diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 0445922a..a4ad15a9 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -256,10 +256,6 @@ void CUpsideDownCarCheck::UpdateTimers() { uint32 timeStep = CTimer::GetTimeStepInMilliseconds(); for (int i = 0; i < MAX_UPSIDEDOWN_CAR_CHECKS; i++){ -#ifdef FIX_BUGS - if (m_sCars[i].m_nVehicleIndex == -1) - continue; -#endif CVehicle* v = CPools::GetVehiclePool()->GetAt(m_sCars[i].m_nVehicleIndex); if (v){ if (IsCarUpsideDown(m_sCars[i].m_nVehicleIndex)) @@ -2308,20 +2304,15 @@ int8 CRunningScript::ProcessCommands200To299(int32 command) assert(pCurrent); // GetIndex(0) doesn't look good int handle = CPools::GetVehiclePool()->GetIndex(pCurrent); if (handle != CTheScripts::StoreVehicleIndex && m_bIsMissionScript){ -#ifdef FIX_BUGS - if (CTheScripts::StoreVehicleIndex != -1) -#endif - { - CVehicle* pOld = CPools::GetVehiclePool()->GetAt(CTheScripts::StoreVehicleIndex); - if (pOld){ - CCarCtrl::RemoveFromInterestingVehicleList(pOld); - if (pOld->VehicleCreatedBy == MISSION_VEHICLE && CTheScripts::StoreVehicleWasRandom){ - pOld->VehicleCreatedBy = RANDOM_VEHICLE; - pOld->bIsLocked = false; - CCarCtrl::NumRandomCars++; - CCarCtrl::NumMissionCars--; - CTheScripts::MissionCleanup.RemoveEntityFromList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR); - } + CVehicle* pOld = CPools::GetVehiclePool()->GetAt(CTheScripts::StoreVehicleIndex); + if (pOld){ + CCarCtrl::RemoveFromInterestingVehicleList(pOld); + if (pOld->VehicleCreatedBy == MISSION_VEHICLE && CTheScripts::StoreVehicleWasRandom){ + pOld->VehicleCreatedBy = RANDOM_VEHICLE; + pOld->bIsLocked = false; + CCarCtrl::NumRandomCars++; + CCarCtrl::NumMissionCars--; + CTheScripts::MissionCleanup.RemoveEntityFromList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR); } } @@ -2364,20 +2355,15 @@ int8 CRunningScript::ProcessCommands200To299(int32 command) assert(pCurrent); // Here pCurrent shouldn't be NULL anyway int handle = CPools::GetVehiclePool()->GetIndex(pCurrent); if (handle != CTheScripts::StoreVehicleIndex && m_bIsMissionScript) { -#ifdef FIX_BUGS - if (CTheScripts::StoreVehicleIndex != -1) -#endif - { - CVehicle* pOld = CPools::GetVehiclePool()->GetAt(CTheScripts::StoreVehicleIndex); - if (pOld){ - CCarCtrl::RemoveFromInterestingVehicleList(pOld); - if (pOld->VehicleCreatedBy == MISSION_VEHICLE && CTheScripts::StoreVehicleWasRandom){ - pOld->VehicleCreatedBy = RANDOM_VEHICLE; - pOld->bIsLocked = false; - CCarCtrl::NumRandomCars++; - CCarCtrl::NumMissionCars--; - CTheScripts::MissionCleanup.RemoveEntityFromList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR); - } + CVehicle* pOld = CPools::GetVehiclePool()->GetAt(CTheScripts::StoreVehicleIndex); + if (pOld){ + CCarCtrl::RemoveFromInterestingVehicleList(pOld); + if (pOld->VehicleCreatedBy == MISSION_VEHICLE && CTheScripts::StoreVehicleWasRandom){ + pOld->VehicleCreatedBy = RANDOM_VEHICLE; + pOld->bIsLocked = false; + CCarCtrl::NumRandomCars++; + CCarCtrl::NumMissionCars--; + CTheScripts::MissionCleanup.RemoveEntityFromList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR); } } -- cgit v1.2.3