diff --git a/Client/game_sa/CVehicleSA.cpp b/Client/game_sa/CVehicleSA.cpp index cc5d6c1e3b..6e8feb2c14 100644 --- a/Client/game_sa/CVehicleSA.cpp +++ b/Client/game_sa/CVehicleSA.cpp @@ -1523,8 +1523,20 @@ bool CVehicleSA::IsWheelCollided(BYTE eWheelPosition) int CVehicleSA::GetWheelFrictionState(BYTE eWheelPosition) { - auto vehicle = static_cast(GetInterface()); - return vehicle->m_wheelFrictionState[eWheelPosition]; + switch (static_cast(GetVehicleInterface()->m_vehicleClass)) + { + case VehicleClass::BIKE: + case VehicleClass::BMX: + { + auto* bikeInterface = static_cast(GetVehicleInterface()); + return bikeInterface->m_aiWheelState[eWheelPosition]; + } + default: + { + auto* vehicleInterface = static_cast(GetVehicleInterface()); + return vehicleInterface->m_wheelFrictionState[eWheelPosition]; + } + } } void CVehicleSA::SetTaxiLightOn(bool bLightOn) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 6d20f56bc5..603c5d05ba 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -4213,13 +4213,18 @@ bool CLuaVehicleDefs::SetVehicleModelWheelSize(const unsigned short usModel, con int CLuaVehicleDefs::GetVehicleWheelFrictionState(CClientVehicle* pVehicle, unsigned char wheel) { - if (wheel < 0 || wheel > 3) + if (wheel >= MAX_WHEELS) throw std::invalid_argument("Invalid wheel number"); - if (CClientVehicleManager::GetVehicleType(pVehicle->GetModel()) != CLIENTVEHICLE_CAR) - throw std::invalid_argument("Invalid vehicle type"); + auto vehicleType = pVehicle->GetVehicleType(); - return pVehicle->GetWheelFrictionState(wheel); + if (vehicleType == CLIENTVEHICLE_CAR || vehicleType == CLIENTVEHICLE_MONSTERTRUCK || vehicleType == CLIENTVEHICLE_QUADBIKE || + vehicleType == CLIENTVEHICLE_BIKE || vehicleType == CLIENTVEHICLE_BMX || vehicleType == CLIENTVEHICLE_TRAILER) + { + return pVehicle->GetWheelFrictionState(wheel); + } + + throw std::invalid_argument("Invalid vehicle type"); } std::variant> CLuaVehicleDefs::GetVehicleModelDummyDefaultPosition(unsigned short vehicleModel, VehicleDummies dummy)