Vehicle Damage System (Engine Oil, Battery, Mileage and More) [Vehicle Failure]

JRaxion Vehicle Damage System [Vehicle Failure]

Overview

JRaxion Vehicle Damage is an advanced vehicle damage and maintenance system for FiveM servers. It simulates realistic vehicle wear and tear, including:

  • Engine and body damage from collisions and high RPM
  • Oil temperature and level monitoring
  • Battery level management
  • Mileage tracking
  • Turbo damage from low oil levels
  • Oil leaks and spills at high temperatures

Features

Vehicle Health Monitoring

  • Enhanced collision damage based on vehicle class and speed
  • Engine damage from sustained high RPM
  • Visual debug UI showing real-time vehicle status

Oil System

  • Oil temperature increases with high RPM and decreases when idle
  • Oil consumption at high temperatures
  • Engine damage from overheating
  • Oil leaks and spills when critically overheated
  • Oil level affects engine performance and cooling

Battery System

  • Battery drains when engine is off but electronics are on
  • Battery recharges when engine is running
  • Low battery prevents engine start
  • Dead battery disables vehicle until replaced

Turbo System

  • Turbo can blow up when oil level is critically low
  • Blown turbo causes significant engine damage
  • Turbo removal is saved to the database

Mileage Tracking

  • Accurate mileage tracking based on distance traveled
  • Persistent mileage saved to database

IMPORTANT NOTE : If you have any suggestions that can be added to this system, please feel free to comment down below and I will try to add it in.

Dependencies

  • ox_lib
  • oxmysql

Showcase

Purchase

https://jraxion.tebex.io/package/vehicle-damage-system

Screenshots



Configuration

The config.lua file contains extensive options to customize the behavior of the system:

Config = {
    damageMultiplier = 1.0,  -- Default damage multiplier
    classDamageMultiplier = { ... },  -- Damage multipliers by vehicle class
    speedDamageMultiplier = 0.05,  -- How speed affects collision damage
    debugMode = true,  -- Enable/disable debug UI
    
    -- Oil temperature settings
    oilTemp = {
        baseTemp = 80.0,  -- Base oil temperature
        maxTemp = 160.0,  -- Maximum oil temperature
        warningTemp = 130.0,  -- Warning threshold
        -- Additional oil temperature settings...
    },
    
    -- Turbo settings
    turbo = {
        criticalOilLevel = 10.0,  -- Oil level below which turbo is at risk
        -- Additional turbo settings...
    },
    
    -- Battery settings
    battery = {
        drainRate = 0.1,  -- Battery drain rate
        minLevel = 5.0,  -- Minimum level to start engine
        -- Additional battery settings...
    }
}
Full Config
Config = {
    damageMultiplier = 1.0,  -- Default damage multiplier (1.0 = normal damage)
    classDamageMultiplier = {
        [0] = 1.0,  -- Compacts
        [1] = 1.0,  -- Sedans
        [2] = 0.8,  -- SUVs
        [3] = 0.8,  -- Coupes
        [4] = 1.2,  -- Muscle
        [5] = 1.0,  -- Sports Classics
        [6] = 1.2,  -- Sports
        [7] = 1.5,  -- Super
        [8] = 0.5,  -- Motorcycles
        [9] = 0.7,  -- Off-road
        [10] = 0.5, -- Industrial
        [11] = 0.5, -- Utility
        [12] = 0.5, -- Vans
        [13] = 0.0, -- Cycles
        [14] = 0.0, -- Boats
        [15] = 0.0, -- Helicopters
        [16] = 0.0, -- Planes
        [17] = 0.7, -- Service
        [18] = 0.5, -- Emergency
        [19] = 0.5, -- Military
        [20] = 0.5, -- Commercial
        [21] = 0.0  -- Trains
    },

    -- disable this if you dont want to use the debug mode
    debugMode = true,             -- Enable debug information
    -- disable this if you dont want to use the debug mode

    speedDamageMultiplier = 0.05, -- How much speed affects damage (higher = more damage at high speeds)
    collisionDamageMin = 10.0,    -- Minimum damage on collision
    maxDamage = 1000.0,           -- Maximum damage value
    revDamageThreshold = 0.9,     -- RPM threshold for engine damage (0.0 to 1.0, where 1.0 is max RPM)
    revDamageAmount = 0.5,        -- Damage per second when revving above threshold
    revDamageInterval = 500,      -- Interval in ms to apply rev damage
    revDamageDelay = 3.0,         -- Delay in seconds before applying rev damage
    -- Oil temperature settings
    oilTemp = {
        baseTemp = 80.0,          -- Base oil temperature when engine is running (°C)
        maxTemp = 160.0,          -- Maximum oil temperature before severe damage (°C)
        warningTemp = 130.0,      -- Temperature at which oil starts to degrade (°C)
        riseRate = 0.2,           -- How fast oil temperature rises when revving high
        coolRate = 0.1,           -- How fast oil temperature cools down when not revving
        damageStartTemp = 130.0,  -- Temperature at which engine starts taking damage
        damageFactor = 0.8,       -- Multiplier for damage from oil overheating
        cooldownMultiplier = 0.5, -- How much slower the engine cools when damaged
        oilConsumptionTemp = 120.0, -- Temperature at which oil starts to be consumed
        oilConsumptionRate = 0.05,  -- Rate at which oil is consumed per second when over threshold
        oilConsumptionInterval = 5000, -- Interval in ms to check for oil consumption
        saveInterval = 10000      -- Interval in ms to save oil temperature to database
    },
    -- Turbo settings
    turbo = {
        criticalOilLevel = 10.0,  -- Oil level percentage below which turbo is at risk
        checkInterval = 5000,     -- Interval in ms to check turbo condition
        blowupChance = 0.5,       -- Chance of turbo failure when oil is critically low and RPM is high
    },
    -- Battery settings
    battery = {
        drainRate = 0.1,         -- Rate at which battery drains when engine is running
        drainInterval = 10000,    -- Interval in ms to drain battery
        lightsMultiplier = 1.5,   -- How much faster battery drains when lights are on
        minLevel = 5.0,           -- Minimum battery level required to start engine
        saveInterval = 30000,     -- Interval in ms to save battery level to database
        rechargeRate = 0.02,      -- Rate at which battery recharges when engine is running
        idleDrainRate = 0.005,    -- Rate at which battery drains when engine is off but electronics are on
        deadBatteryCheckInterval = 5000, -- Interval in ms to check if battery is dead
        deadBatteryThreshold = 1.0, -- Battery level below which it's considered completely dead
        deadBatteryDisableTime = 300000 -- Time in ms (5 minutes) vehicle remains disabled with dead battery
    }
}

Admin Commands

  • /fixvehicle [serverid] - Fully repair and service a player’s vehicle (admin only)

Server Exports

The following exports are available for developers to integrate with other scripts:

Mileage Functions

-- Get vehicle mileage
exports['jraxion_vehicledamage']:GetVehicleMileage(plate)

-- Update vehicle mileage to a specific value
exports['jraxion_vehicledamage']:UpdateVehicleMileage(plate, mileage)

-- Increment vehicle mileage by a specific amount
exports['jraxion_vehicledamage']:IncrementVehicleMileage(plate, amount)

Oil Functions

-- Get vehicle oil level
exports['jraxion_vehicledamage']:GetVehicleOil(plate)

-- Update vehicle oil level to a specific value
exports['jraxion_vehicledamage']:UpdateVehicleOil(plate, oilLevel)

-- Decrease vehicle oil level by a specific amount
exports['jraxion_vehicledamage']:DecreaseVehicleOil(plate, amount)

-- Get vehicle oil temperature
exports['jraxion_vehicledamage']:GetVehicleOilTemp(plate)

-- Update vehicle oil temperature
exports['jraxion_vehicledamage']:UpdateVehicleOilTemp(plate, oilTemp)

Battery Functions

-- Get vehicle battery level
exports['jraxion_vehicledamage']:GetVehicleBattery(plate)

-- Update vehicle battery level
exports['jraxion_vehicledamage']:UpdateVehicleBattery(plate, batteryLevel)

Combined Data Function

-- Get all vehicle data at once
exports['jraxion_vehicledamage']:GetVehicleData(plate)
-- Returns: { mileage, oilLevel, oilTemp, batteryLevel }

Client Events

You can trigger these events from other resources:

-- Fully repair and service a vehicle
TriggerEvent('jraxion_vehicledamage:fullyRepairVehicle')

Integration Examples

Adding oil to a vehicle

RegisterNetEvent('myResource:addOil')
AddEventHandler('myResource:addOil', function(plate, amount)
    local currentOil = exports['jraxion_vehicledamage']:GetVehicleOil(plate)
    local newOil = math.min(100, currentOil + amount)
    exports['jraxion_vehicledamage']:UpdateVehicleOil(plate, newOil)
end)

Creating a battery replacement item

RegisterNetEvent('myResource:replaceBattery')
AddEventHandler('myResource:replaceBattery', function(plate)
    exports['jraxion_vehicledamage']:UpdateVehicleBattery(plate, 100)
    -- Make vehicle driveable again if it was disabled
end)

Framework Support

The script includes built-in support for both QBCore and ESX frameworks, automatically detecting which one is in use.

License

This resource is protected by copyright. Unauthorized distribution or modification is prohibited.

For more information, visit https://jraxion.tebex.io/

Code is accessible Partially
Subscription-based No
Lines (approximately) 1900~
Requirements ox_lib
Support Yes
3 Likes

Update :

  • Fixed a few callbacks to save data
  • Optimized the main thread for lower ms on high players servers.