Skip to content
16 changes: 14 additions & 2 deletions Client/game_sa/CVehicleSA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1523,8 +1523,20 @@ bool CVehicleSA::IsWheelCollided(BYTE eWheelPosition)

int CVehicleSA::GetWheelFrictionState(BYTE eWheelPosition)
{
auto vehicle = static_cast<CAutomobileSAInterface*>(GetInterface());
return vehicle->m_wheelFrictionState[eWheelPosition];
switch (static_cast<VehicleClass>(GetVehicleInterface()->m_vehicleClass))
{
case VehicleClass::BIKE:
case VehicleClass::BMX:
{
auto* bikeInterface = static_cast<CBikeSAInterface*>(GetVehicleInterface());
return bikeInterface->m_aiWheelState[eWheelPosition];
}
default:
{
auto* vehicleInterface = static_cast<CAutomobileSAInterface*>(GetVehicleInterface());
return vehicleInterface->m_wheelFrictionState[eWheelPosition];
}
}
}

void CVehicleSA::SetTaxiLightOn(bool bLightOn)
Expand Down
13 changes: 9 additions & 4 deletions Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<bool, CLuaMultiReturn<float, float, float>> CLuaVehicleDefs::GetVehicleModelDummyDefaultPosition(unsigned short vehicleModel, VehicleDummies dummy)
Expand Down