From 7056f9954f0e5afc8aa9c8c25a725cce1439cfd6 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Thu, 28 Jan 2021 23:23:49 +0300 Subject: fix --- src/control/Script3.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/control') diff --git a/src/control/Script3.cpp b/src/control/Script3.cpp index 1ac18fa8..acd3988f 100644 --- a/src/control/Script3.cpp +++ b/src/control/Script3.cpp @@ -1701,6 +1701,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command) pBoat->AutoPilot.m_nCarMission = MISSION_GOTOCOORDS_ASTHECROWSWIMS; pBoat->AutoPilot.m_vecDestinationCoors = pos; pBoat->SetStatus(STATUS_PHYSICS); + pBoat->bEngineOn = true; pBoat->AutoPilot.m_nCruiseSpeed = Max(1, pBoat->AutoPilot.m_nCruiseSpeed); pBoat->AutoPilot.m_nAntiReverseTimer = CTimer::GetTimeInMilliseconds(); return 0; -- cgit v1.2.3 From 810bad9fd8cf344f7d73b82f042910a4c443b0f7 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 29 Jan 2021 01:44:33 +0300 Subject: Fix some UBs --- src/control/PathFind.cpp | 2 +- src/control/PathFind.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/control') diff --git a/src/control/PathFind.cpp b/src/control/PathFind.cpp index 2d3972f6..bf72199d 100644 --- a/src/control/PathFind.cpp +++ b/src/control/PathFind.cpp @@ -859,7 +859,7 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor mag = Sqrt(dx*dx + dy*dy); dx /= mag; dy /= mag; - int width = Max(m_pathNodes[i].width, m_pathNodes[j].width); + uint8 width = Max(m_pathNodes[i].width, m_pathNodes[j].width); if(i < j){ dx = -dx; dy = -dy; diff --git a/src/control/PathFind.h b/src/control/PathFind.h index acf9929a..99759590 100644 --- a/src/control/PathFind.h +++ b/src/control/PathFind.h @@ -120,7 +120,7 @@ struct CCarPathLink uint8 trafficLightDirection : 1; uint8 trafficLightType : 2; uint8 bBridgeLights : 1; // at least in LCS... - int8 width; + uint8 width; CVector2D GetPosition(void) { return CVector2D(x/8.0f, y/8.0f); } CVector2D GetDirection(void) { return CVector2D(dirX/100.0f, dirY/100.0f); } @@ -151,7 +151,7 @@ struct CPathInfoForObject int8 numLeftLanes; int8 numRightLanes; int8 speedLimit; - int8 width; + uint8 width; uint8 crossing : 1; uint8 onlySmallBoats : 1; @@ -177,7 +177,7 @@ struct CTempNode int16 link2; int8 numLeftLanes; int8 numRightLanes; - int8 width; + uint8 width; bool isCross; int8 linkState; }; @@ -188,7 +188,7 @@ struct CTempNodeExternal // made up name int16 next; int8 numLeftLanes; int8 numRightLanes; - int8 width; + uint8 width; bool isCross; }; -- cgit v1.2.3 From c4328afce7e2a0b48b9d0d2b225496e29fff1c0a Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 29 Jan 2021 03:44:12 +0300 Subject: Even more fixes & shorten quit screen --- src/control/Garages.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/control') diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index e3b5aa8c..333f3a6f 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -1997,7 +1997,11 @@ float CGarages::FindDoorHeightForMI(int32 mi) void CGarage::TidyUpGarage() { uint32 i = CPools::GetVehiclePool()->GetSize(); +#ifdef FIX_BUGS while (i--) { +#else + while (--i) { +#endif CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i); if (pVehicle && (pVehicle->IsCar() || pVehicle->IsBike())) { if (IsPointInsideGarage(pVehicle->GetPosition())) { @@ -2013,7 +2017,11 @@ void CGarage::TidyUpGarage() void CGarage::TidyUpGarageClose() { uint32 i = CPools::GetVehiclePool()->GetSize(); +#ifdef FIX_BUGS while (i--) { +#else + while (--i) { +#endif CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i); if (!pVehicle) continue; -- cgit v1.2.3 From 8b08098d4e9c19b6047fade5af2332674d32993c Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 30 Jan 2021 20:26:10 +0300 Subject: fix --- src/control/Garages.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/control') diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 333f3a6f..1e606fb1 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -1285,7 +1285,7 @@ bool CGarage::IsAnyOtherCarTouchingGarage(CVehicle * pException) uint32 i = CPools::GetVehiclePool()->GetSize(); while (i--) { CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i); - if (!pVehicle || pVehicle == pException) + if (!pVehicle || pVehicle == pException || pVehicle->GetStatus() == STATUS_WRECKED) continue; if (!IsEntityTouching3D(pVehicle)) continue; -- cgit v1.2.3 From 2420325c0220fb0b3fb465a007140652f8031618 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 31 Jan 2021 01:45:07 +0300 Subject: fix --- src/control/Garages.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/control') diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 1e606fb1..7cf58d03 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -2234,6 +2234,8 @@ void CGarages::SetAllDoorsBackToOriginalHeight() default: aGarages[i].RefreshDoorPointers(true); if (aGarages[i].m_pDoor1) { + aGarages[i].m_pDoor1->GetMatrix().GetPosition().x = aGarages[i].m_fDoor1X; + aGarages[i].m_pDoor1->GetMatrix().GetPosition().y = aGarages[i].m_fDoor1Y; aGarages[i].m_pDoor1->GetMatrix().GetPosition().z = aGarages[i].m_fDoor1Z; if (aGarages[i].m_pDoor1->IsObject()) ((CObject*)aGarages[i].m_pDoor1)->m_objectMatrix.GetPosition().z = aGarages[i].m_fDoor1Z; @@ -2243,6 +2245,8 @@ void CGarages::SetAllDoorsBackToOriginalHeight() aGarages[i].m_pDoor1->UpdateRwFrame(); } if (aGarages[i].m_pDoor2) { + aGarages[i].m_pDoor2->GetMatrix().GetPosition().x = aGarages[i].m_fDoor2X; + aGarages[i].m_pDoor2->GetMatrix().GetPosition().y = aGarages[i].m_fDoor2Y; aGarages[i].m_pDoor2->GetMatrix().GetPosition().z = aGarages[i].m_fDoor2Z; if (aGarages[i].m_pDoor2->IsObject()) ((CObject*)aGarages[i].m_pDoor2)->m_objectMatrix.GetPosition().z = aGarages[i].m_fDoor2Z; -- cgit v1.2.3 From ca65c764197bcd065f101cdf7da7c48b286c8208 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 3 Feb 2021 15:35:06 +0300 Subject: fix --- src/control/AutoPilot.cpp | 8 ++++---- src/control/AutoPilot.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/control') diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp index c956a6f1..d3de6ac2 100644 --- a/src/control/AutoPilot.cpp +++ b/src/control/AutoPilot.cpp @@ -52,8 +52,8 @@ void CAutoPilot::Save(uint8*& buf) WriteSaveBuf(buf, m_nCurrentRouteNode); WriteSaveBuf(buf, m_nNextRouteNode); WriteSaveBuf(buf, m_nPrevRouteNode); - WriteSaveBuf(buf, m_nTimeEnteredCurve); - WriteSaveBuf(buf, m_nTimeToSpendOnCurrentCurve); + WriteSaveBuf(buf, m_nTimeEnteredCurve); + WriteSaveBuf(buf, m_nTimeToSpendOnCurrentCurve); WriteSaveBuf(buf, m_nCurrentPathNodeInfo); WriteSaveBuf(buf, m_nNextPathNodeInfo); WriteSaveBuf(buf, m_nPreviousPathNodeInfo); @@ -95,8 +95,8 @@ void CAutoPilot::Load(uint8*& buf) m_nCurrentRouteNode = ReadSaveBuf(buf); m_nNextRouteNode = ReadSaveBuf(buf); m_nPrevRouteNode = ReadSaveBuf(buf); - m_nTimeEnteredCurve = ReadSaveBuf(buf); - m_nTimeToSpendOnCurrentCurve = ReadSaveBuf(buf); + m_nTimeEnteredCurve = ReadSaveBuf(buf); + m_nTimeToSpendOnCurrentCurve = ReadSaveBuf(buf); m_nCurrentPathNodeInfo = ReadSaveBuf(buf); m_nNextPathNodeInfo = ReadSaveBuf(buf); m_nPreviousPathNodeInfo = ReadSaveBuf(buf); diff --git a/src/control/AutoPilot.h b/src/control/AutoPilot.h index aa14ccdd..ec3bb8d8 100644 --- a/src/control/AutoPilot.h +++ b/src/control/AutoPilot.h @@ -64,8 +64,8 @@ public: int32 m_nCurrentRouteNode; int32 m_nNextRouteNode; int32 m_nPrevRouteNode; - uint32 m_nTimeEnteredCurve; - uint32 m_nTimeToSpendOnCurrentCurve; + int32 m_nTimeEnteredCurve; + int32 m_nTimeToSpendOnCurrentCurve; uint32 m_nCurrentPathNodeInfo; uint32 m_nNextPathNodeInfo; uint32 m_nPreviousPathNodeInfo; -- cgit v1.2.3 From 09de511c37c32e13af3f72ded7f0f9e19f395ae2 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 5 Feb 2021 11:31:54 +0300 Subject: fixed plane AI --- src/control/CarCtrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/control') diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index c6d78882..d05d9827 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -2757,7 +2757,7 @@ void CCarCtrl::SteerAIPlaneTowardsTargetCoors(CAutomobile* pPlane) up.Normalise(); CVector forward(Cos(pPlane->m_fOrientation), Sin(pPlane->m_fOrientation), fForwardZ); forward.Normalise(); - CVector right = CrossProduct(forward, up); + CVector right = CrossProduct(up, forward); right.z -= 5.0f * pPlane->m_fPlaneSteer; right.Normalise(); up = CrossProduct(forward, right); -- cgit v1.2.3 From 102d105e0a50f829c6085a2e95082aedb7727b41 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 5 Feb 2021 14:45:03 +0300 Subject: fix --- src/control/Script7.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/control') diff --git a/src/control/Script7.cpp b/src/control/Script7.cpp index 34a364a7..71099cc4 100644 --- a/src/control/Script7.cpp +++ b/src/control/Script7.cpp @@ -431,12 +431,12 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command) CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]); script_assert(pPed); if (ScriptParams[1]) { - pPed->bIsDucking = true; + pPed->bCrouchWhenShooting = true; pPed->SetDuck(ScriptParams[2], true); } else { pPed->ClearDuck(true); - pPed->bIsDucking = false; + pPed->bCrouchWhenShooting = false; } return 0; } -- cgit v1.2.3