# Exports

{% hint style="info" %}

#### **Note**

These exports are optional and available for use in your scripts or integrations.
{% endhint %}

***

## Client

***

### Get Custom Vehicle Class

Returns the custom racing style vehicle class of a vehicle.

{% code title="@parameters" %}

```lua
--- @param vehicle number Vehicle entity.
--- @return table # { class = string, rating = number }

-- Class ranges:
-- D  (0 - 299)
-- C  (300 - 399)
-- B  (400 - 499)
-- A  (500 - 599)
-- S1 (600 - 699)
-- S2 (700 - 799)
-- X  (800+)

--- @example
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)

local data = exports.cd_mechanic:GetCustomVehicleClass(vehicle)
print('Vehicle Class:', data.class, 'Vehicle Rating:', data.rating)

-- Example output:
-- Vehicle Class: S2, Vehicle Rating: 750
```

{% endcode %}

```lua
local class, rating = exports.cd_mechanic:GetCustomVehicleClass(vehicle)
```

***

### Get Vehicle Performance Stats

Returns advanced performance stats for a vehicle.

{% code title="@parameters" %}

```lua
--- @param vehicle number Vehicle entity.
--- @return table # Vehicle performance stats.

--- @example
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)

local vehicleStats = exports.cd_mechanic:GetVehiclePerformanceStats(vehicle)
print(json.encode(vehicleStats, { indent = true }))
```

{% endcode %}

<details>

<summary>Example Output</summary>

```lua
local vehicleStats  = {
  base_percentages = {
    speed = 52.4,
    acceleration = 61.8,
    braking = 43.2,
    traction = 58.9
  },
  upgrade_increases = {
    speed = 8.5,
    acceleration = 6.2,
    braking = 3.1,
    traction = 4.0
  },
  tuning_increases = {
    speed = 2.4,
    acceleration = 1.8,
    braking = 0.0,
    traction = 1.2
  },
  final_percentages = {
    speed = 63.3,
    acceleration = 69.8,
    braking = 46.3,
    traction = 64.1
  },
  horsepower = 612.5,
  torque_nm = 780.2,
  torque_ftlbs = 575.4,
  weight = 1650.0
}
```

</details>

```lua
local vehicleStats = exports.cd_mechanic:GetVehiclePerformanceStats(vehicle)
```

***

## Server

###

***

## Shared

### Get Config

Returns the complete config.lua.

{% code title="@parameters" %}

```lua
--- @return table # The complete config.lua.

--- @example
local mechanicConfig = exports.cd_mechanic:GetConfig()
print(json.encode(mechanicConfig, { indent = true }))
```

{% endcode %}

```lua
local mechanicConfig = exports.cd_mechanic:GetConfig()
```

***

### Get Vehicle Mileage

Returns the mileage of a vehicle.

{% code title="@parameters" %}

```lua
--- @param vehicle number|string Vehicle entity or plate text.
--- @return number # This vehicles mileage or 0.0.

--- @example
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local plate = GetVehicleNumberPlateText(vehicle)

-- You can pass either a vehicle entity or a plate.
local mileage = exports.cd_mechanic:GetVehicleMileage(vehicle or plate)
print(mileage)

-- Example output:
-- 1534.67
```

{% endcode %}

```lua
local mileage = exports.cd_mechanic:GetVehicleMileage(vehicle or plate)
```

***

### Get Parts Degradation

Returns the degradation data for all this vehicle parts.

{% code title="@parameters" %}

```lua
--- @param vehicle number|string Vehicle entity or plate text.
--- @return table # A table containing all vehicle parts and their health values.

--- @example
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local plate = GetVehicleNumberPlateText(vehicle)

-- You can pass either a vehicle entity or a plate.
local degradation = exports.cd_mechanic:GetPartsDegradation(vehicle or plate)
print(degradation)
```

{% endcode %}

<details>

<summary>Example Output</summary>

```lua
local degradation = {
    clutch = {
        health = 99.22,
        tuning = {
            negative_effect = -0.08,
            handling_modifier = "fClutchChangeRateScaleUpShift"
        }
    },
    tires = {
        health = 99.08,
        tuning = {
            negative_effect = -0.14,
            handling_modifier = "fTractionCurveMax"
        }
    },
    brake_fluid = {
        health = 99.61,
        tuning = {
            negative_effect = -0.02,
            handling_modifier = "fBrakeForce"
        }
    },
    spark_plugs = {
        health = 99.48,
        tuning = {
            negative_effect = -0.03,
            handling_modifier = "fInitialDriveForce"
        }
    },
    radiator = {
        health = 99.61,
        tuning = {
            negative_effect = -0.05,
            handling_modifier = "fEngineDamageMult"
        }
    },
    transmission = {
        health = 99.61,
        tuning = {
            negative_effect = -0.03,
            handling_modifier = "fClutchChangeRateScaleDownShift"
        }
    },
    brake_pads = {
        health = 98.95,
        tuning = {
            negative_effect = -0.08,
            handling_modifier = "fBrakeForce"
        }
    },
    suspension = {
        health = 99.61,
        tuning = {
            negative_effect = -0.03,
            handling_modifier = "fSuspensionForce"
        }
    },
    steering = {
        health = 99.74,
        tuning = {
            negative_effect = -0.02,
            handling_modifier = "fSteeringLock"
        }
    },
    engine_oil = {
        health = 99.74,
        tuning = {
            negative_effect = -0.03,
            handling_modifier = "fEngineDamageMult"
        }
    },
    fuel_system = {
        health = 99.61,
        tuning = {
            negative_effect = -0.03,
            handling_modifier = "fDriveInertia"
        }
    },
    air_filter = {
        health = 99.35,
        tuning = {
            negative_effect = -0.03,
            handling_modifier = "fInitialDriveForce"
        }
    }
}
```

</details>

```lua
local degradation = exports.cd_mechanic:GetPartsDegradation(vehicle or plate)
```

***

### **Get Dyno History (Single Vehicle)**

Returns dyno history for a specific vehicle.

{% code title="@parameters" %}

```lua
--- @param plate string Vehicle plate text.
--- @return table # Dyno history data.

--- @example
local plate = GetVehicleNumberPlateText(vehicle)

local dyno = exports.cd_mechanic:GetDynoHistory(plate)
print(json.encode(dyno, { indent = true }))

-- Example output:
-- {
--     vehicle_name = "Sultan RS",
--     created = 1775692410
--     dyno_data = {
--         has_turbo = false,
--         tq_nm = 364,
--         hp = 332,
--         vehicle_class = 6
--     }
-- }
```

{% endcode %}

```lua
local dyno = exports.cd_mechanic:GetDynoHistory(plate)
```

***

### **Get Dyno History** (All Vehicles)

Returns dyno history for all vehicles.

{% code title="@parameters" %}

```lua
--- @return table # Dyno history data.

--- @example
local dyno = exports.cd_mechanic:GetDynoHistory()
print(json.encode(dyno, { indent = true }))
```

{% endcode %}

<details>

<summary>Example output</summary>

{% code lineNumbers="true" %}

```lua
{
  [1] = {
    plate = 
    vehicle_name = "Sultan RS",
    created = 1775692410,
    dyno_data = {
        has_turbo = false,
        tq_nm = 364,
        hp = 332,
        vehicle_class = 6
    }
  },
  [2] = {
    vehicle_name = "Elegy Retro",
    created = 1775692500,
    dyno_data = {
        has_turbo = true,
        tq_nm = 812,
        hp = 741,
        vehicle_class = 7
    }
  }
}
```

{% endcode %}

</details>

```lua
local dyno = exports.cd_mechanic:GetDynoHistory()
```

***

### Get Vehicle Engine Sound

Returns advanced performance stats for a vehicle.

{% code title="@parameters" %}

```lua
--- @param vehicle number|string Vehicle entity or plate text.
--- @return table # Vehicle performance stats.

--- @example
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local plate = GetVehicleNumberPlateText(vehicle)

-- You can pass either a vehicle entity or a plate.
local engineSound = exports.cd_mechanic:GetEngineSound(vehicle or plate)
print(engineSound)

-- Example output:
-- 'ADDER'
```

{% endcode %}

```lua
local engineSound = exports.cd_mechanic:GetEngineSound(vehicle or plate)
```

### Get Stancer Data

Returns the stancer configuration data for a vehicle.

{% code title="@parameters" %}

```lua
--- @param vehicle number|string Vehicle entity or plate text.
--- @return table # A table containing the vehicle's stancer settings.

--- @example
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local plate = GetVehicleNumberPlateText(vehicle)

-- You can pass either a vehicle entity or a plate.
local stancer = exports.cd_mechanic:GetStancerData(vehicle or plate)
print(json.encode(stancer, { indent = true }))
```

{% endcode %}

<details>

<summary>Example Output</summary>

```lua
{
    height = 0.0,
    wheels = {
        ['0'] = {offset = -0.75, rotation = 0.0},
        ['1'] = {offset = 0.75, rotation = 0.0},
        ['2'] = {offset = -0.75, rotation = 0.0},
        ['3'] = {offset = 0.75, rotation = 0.0}
    }
}
```

</details>

```lua
local stancer = exports.cd_mechanic:GetStancerData(vehicle or plate)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.codesign.pro/paid-scripts/cd_mechanic/developer-api/exports.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
