Skip to content

Commit 3c3af04

Browse files
authored
Do not reset handling for custom models on a non-local vehicle (PR #2824)
This pull request doesn't break backwards compatibility with non-custom vehicles. This change will allow the clientside to keep server-side applied handlings, if you set the vehicle model to a custom one requested with engineRequestModel. Since the server-side doesn't support any custom models (yet - there is a pending pull request for this and needs evaluation after this commit), the models coming from the server will always be in the expected range from 400 to 611 and must always reset the handling on the clientside. If the vehicle is local to the client, the handling must reset everytime. If the vehicle is non-local and the new model id is a custom one, the handling will not be reset and any server-side provided handling will remain and it's the duty of the scripter to synchronize that (currently).
1 parent 1372d35 commit 3c3af04

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

Client/mods/deathmatch/logic/CClientVehicle.cpp

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,32 +1068,35 @@ void CClientVehicle::SetModelBlocking(unsigned short usModel, unsigned char ucVa
10681068
m_ucMaxPassengers = CClientVehicleManager::GetMaxPassengerCount(usModel);
10691069

10701070
// Reset handling to fit the vehicle
1071-
ushort usHandlingModelID = usModel;
1072-
if (usHandlingModelID < 400 || usHandlingModelID > 611)
1073-
usHandlingModelID = m_pModelInfo->GetParentID();
1071+
if (IsLocalEntity() || !(usModel < 400 || usModel > 611))
1072+
{
1073+
ushort usHandlingModelID = usModel;
1074+
if (usHandlingModelID < 400 || usHandlingModelID > 611)
1075+
usHandlingModelID = m_pModelInfo->GetParentID();
10741076

1075-
m_pOriginalHandlingEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData((eVehicleTypes)usHandlingModelID);
1076-
m_pHandlingEntry->Assign(m_pOriginalHandlingEntry);
1077+
m_pOriginalHandlingEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData((eVehicleTypes)usHandlingModelID);
1078+
m_pHandlingEntry->Assign(m_pOriginalHandlingEntry);
10771079

1078-
m_pOriginalFlyingHandlingEntry = g_pGame->GetHandlingManager()->GetOriginalFlyingHandlingData((eVehicleTypes)usHandlingModelID);
1079-
m_pFlyingHandlingEntry->Assign(m_pOriginalFlyingHandlingEntry);
1080+
m_pOriginalFlyingHandlingEntry = g_pGame->GetHandlingManager()->GetOriginalFlyingHandlingData((eVehicleTypes)usHandlingModelID);
1081+
m_pFlyingHandlingEntry->Assign(m_pOriginalFlyingHandlingEntry);
10801082

1081-
m_pOriginalBoatHandlingEntry = g_pGame->GetHandlingManager()->GetOriginalBoatHandlingData((eVehicleTypes)usHandlingModelID);
1082-
if (m_pOriginalBoatHandlingEntry)
1083-
{
1084-
if (!m_pBoatHandlingEntry)
1085-
m_pBoatHandlingEntry = g_pGame->GetHandlingManager()->CreateBoatHandlingData();
1083+
m_pOriginalBoatHandlingEntry = g_pGame->GetHandlingManager()->GetOriginalBoatHandlingData((eVehicleTypes)usHandlingModelID);
1084+
if (m_pOriginalBoatHandlingEntry)
1085+
{
1086+
if (!m_pBoatHandlingEntry)
1087+
m_pBoatHandlingEntry = g_pGame->GetHandlingManager()->CreateBoatHandlingData();
10861088

1087-
m_pBoatHandlingEntry->Assign(m_pOriginalBoatHandlingEntry);
1088-
}
1089+
m_pBoatHandlingEntry->Assign(m_pOriginalBoatHandlingEntry);
1090+
}
10891091

1090-
m_pOriginalBikeHandlingEntry = g_pGame->GetHandlingManager()->GetOriginalBikeHandlingData((eVehicleTypes)usHandlingModelID);
1091-
if (m_pOriginalBikeHandlingEntry)
1092-
{
1093-
if (!m_pBikeHandlingEntry)
1094-
m_pBikeHandlingEntry = g_pGame->GetHandlingManager()->CreateBikeHandlingData();
1092+
m_pOriginalBikeHandlingEntry = g_pGame->GetHandlingManager()->GetOriginalBikeHandlingData((eVehicleTypes)usHandlingModelID);
1093+
if (m_pOriginalBikeHandlingEntry)
1094+
{
1095+
if (!m_pBikeHandlingEntry)
1096+
m_pBikeHandlingEntry = g_pGame->GetHandlingManager()->CreateBikeHandlingData();
10951097

1096-
m_pBikeHandlingEntry->Assign(m_pOriginalBikeHandlingEntry);
1098+
m_pBikeHandlingEntry->Assign(m_pOriginalBikeHandlingEntry);
1099+
}
10971100
}
10981101

10991102
ApplyHandling();

0 commit comments

Comments
 (0)