Skip to Content
QBCore docs – powered by Nextra 4
ResourcesQB-Fuel - Vehicle Fuel System

QB-Fuel - Vehicle Fuel System

The qb-fuel resource provides a comprehensive fuel management system for all vehicles in your QBCore server. This system includes realistic fuel consumption, gas stations, fuel items, and administrative tools.

Overview

QB-Fuel replaces the default GTA V infinite fuel system with a realistic fuel consumption mechanic that affects all vehicle types. Players must monitor their fuel levels and visit gas stations or use fuel items to refuel their vehicles.

Key Features

  • Realistic Fuel Consumption: Vehicles consume fuel based on driving behavior
  • Multiple Fuel Types: Support for different fuel types (petrol, diesel, electric)
  • Gas Station Network: Strategically placed fuel stations across the map
  • Jerry Can System: Portable fuel containers for emergencies
  • Administrative Tools: Commands for managing fuel levels
  • Configurable Settings: Extensive customization options

Installation

Prerequisites

  • QBCore Framework
  • qb-target (for interaction system)
  • qb-menu (for fuel station menus)

Installation Steps

  1. Download the Resource
cd resources/[qb] git clone https://github.com/qbcore-framework/qb-fuel.git
  1. Add to server.cfg
ensure qb-fuel
  1. Restart Server
restart qb-fuel

Make sure qb-fuel loads after qb-core and qb-target in your server.cfg

Configuration

Basic Configuration

The main configuration file is located at config.lua:

Config = {} -- Fuel consumption settings Config.FuelDecor = "_FUEL_LEVEL" Config.ShowNearestGasStationOnly = true Config.ShowAllGasStations = false -- Fuel consumption rates (per second) Config.FuelUsage = { [0] = 1.4, -- Compacts [1] = 1.4, -- Sedans [2] = 1.4, -- SUVs [3] = 1.4, -- Coupes [4] = 1.4, -- Muscle [5] = 1.4, -- Sports Classics [6] = 1.4, -- Sports [7] = 1.4, -- Super [8] = 1.4, -- Motorcycles [9] = 1.4, -- Off-road [10] = 1.4, -- Industrial [11] = 1.4, -- Utility [12] = 1.4, -- Vans [13] = 0.0, -- Cycles (no fuel needed) [14] = 1.4, -- Boats [15] = 1.4, -- Helicopters [16] = 1.4, -- Planes [17] = 1.4, -- Service [18] = 1.4, -- Emergency [19] = 1.4, -- Military [20] = 1.4, -- Commercial [21] = 1.4, -- Trains (usually not used) } -- Electric vehicle classes (no fuel consumption) Config.ElectricVehicleClasses = { [13] = true, -- Cycles } -- Jerry can settings Config.JerryCanCap = 20.0 Config.RefuelCap = 50.0

Gas Station Locations

Gas stations are defined in the configuration with coordinates and interaction zones:

Config.GasStations = { [1] = { coords = vector3(49.4187, 2778.793, 58.043), radius = 5.0, showBlip = true }, [2] = { coords = vector3(263.894, 2606.463, 44.983), radius = 5.0, showBlip = true }, -- Add more stations as needed }

API Reference

Client Exports

GetFuel

Gets the current fuel level of a vehicle.

-- Get fuel level of current vehicle local fuel = exports['qb-fuel']:GetFuel(GetVehiclePedIsIn(PlayerPedId(), false)) print("Current fuel level: " .. fuel .. "%") -- Get fuel level of specific vehicle local vehicle = GetVehiclePedIsIn(PlayerPedId(), false) local fuelLevel = exports['qb-fuel']:GetFuel(vehicle)

SetFuel

Sets the fuel level of a vehicle.

-- Set fuel to 75% local vehicle = GetVehiclePedIsIn(PlayerPedId(), false) exports['qb-fuel']:SetFuel(vehicle, 75.0)

Server Exports

GetFuel

Server-side function to get vehicle fuel level.

-- Get fuel level from server local fuelLevel = exports['qb-fuel']:GetFuel(vehicle)

SetFuel

Server-side function to set vehicle fuel level.

-- Set fuel level from server exports['qb-fuel']:SetFuel(vehicle, 100.0)

Events

Client Events

-- Triggered when vehicle runs out of fuel RegisterNetEvent('qb-fuel:client:vehicleOutOfFuel', function(vehicle) -- Handle out of fuel event end) -- Triggered when fuel level changes RegisterNetEvent('qb-fuel:client:fuelChanged', function(vehicle, newLevel) -- Handle fuel level change end)

Server Events

-- Purchase fuel event RegisterNetEvent('qb-fuel:server:buyFuel', function(amount, jerrycan) -- Handle fuel purchase end)

Usage Examples

Basic Fuel Management

-- Check if vehicle needs fuel local vehicle = GetVehiclePedIsIn(PlayerPedId(), false) local fuel = exports['qb-fuel']:GetFuel(vehicle) if fuel < 20 then QBCore.Functions.Notify('Low fuel! Visit a gas station.', 'error') end

Jerry Can Usage

-- Using a jerry can item QBCore.Functions.CreateUseableItem('jerrycan', function(source, item) local Player = QBCore.Functions.GetPlayer(source) local ped = GetPlayerPed(source) local vehicle = GetVehiclePedIsIn(ped, false) if vehicle ~= 0 then local currentFuel = exports['qb-fuel']:GetFuel(vehicle) local newFuel = math.min(100, currentFuel + 20) exports['qb-fuel']:SetFuel(vehicle, newFuel) Player.Functions.RemoveItem('jerrycan', 1) end end)

Custom Fuel Consumption

-- Modify fuel consumption based on driving behavior CreateThread(function() while true do Wait(1000) local ped = PlayerPedId() local vehicle = GetVehiclePedIsIn(ped, false) if vehicle ~= 0 and GetPedInVehicleSeat(vehicle, -1) == ped then local speed = GetEntitySpeed(vehicle) * 3.6 -- Convert to km/h local rpm = GetVehicleCurrentRpm(vehicle) -- Increase consumption for high speed/RPM if speed > 100 or rpm > 0.8 then local currentFuel = exports['qb-fuel']:GetFuel(vehicle) exports['qb-fuel']:SetFuel(vehicle, currentFuel - 0.1) end end end end)

Administrative Commands

Player Commands

  • /fuel [amount] - Set your vehicle’s fuel level (admin only)
  • /jerrycan - Give yourself a jerry can (admin only)

Console Commands

# Set fuel for specific vehicle setfuel [player_id] [amount] # Give jerry can to player givefuel [player_id]

Integration with Other Resources

qb-inventory Integration

Jerry cans can be added to the qb-inventory system:

-- In qb-inventory/shared/items.lua ['jerrycan'] = { ['name'] = 'jerrycan', ['label'] = 'Jerry Can', ['weight'] = 2000, ['type'] = 'item', ['image'] = 'jerrycan.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A portable fuel container' },

qb-vehicleshop Integration

Set initial fuel levels for purchased vehicles:

-- When spawning a new vehicle local vehicle = CreateVehicle(model, coords, heading, true, false) exports['qb-fuel']:SetFuel(vehicle, 100.0) -- Start with full tank

Troubleshooting

Common Issues

Fuel Not Decreasing

Problem: Vehicle fuel doesn’t decrease during driving.

Solution:

-- Check if fuel decor is properly set local vehicle = GetVehiclePedIsIn(PlayerPedId(), false) local hasDecor = DecorExistOn(vehicle, "_FUEL_LEVEL") print("Has fuel decor: " .. tostring(hasDecor))

Gas Stations Not Working

Problem: Cannot interact with gas station pumps.

Solutions:

  1. Verify qb-target is running
  2. Check gas station coordinates in config
  3. Ensure proper resource load order

Jerry Can Not Working

Problem: Jerry can item doesn’t refuel vehicle.

Solution:

-- Verify item registration in qb-core QBCore.Functions.CreateUseableItem('jerrycan', function(source, item) -- Jerry can logic here end)

Debug Commands

Enable debug mode for troubleshooting:

-- In config.lua Config.Debug = true -- Debug fuel consumption RegisterCommand('debugfuel', function() local vehicle = GetVehiclePedIsIn(PlayerPedId(), false) local fuel = exports['qb-fuel']:GetFuel(vehicle) local vehClass = GetVehicleClass(vehicle) print("Vehicle: " .. GetDisplayNameFromVehicleModel(GetEntityModel(vehicle))) print("Fuel Level: " .. fuel .. "%") print("Vehicle Class: " .. vehClass) print("Consumption Rate: " .. Config.FuelUsage[vehClass]) end, false)

Performance Optimization

-- Optimize fuel consumption checks Config.FuelTickRate = 2000 -- Check every 2 seconds instead of 1 -- Disable fuel for specific vehicle models Config.ExcludedModels = { [`bmx`] = true, [`cruiser`] = true, }
  • qb-core - Core framework functions
  • qb-inventory - Item management system
  • qb-target - Interaction system for gas stations
  • qb-menu - Menu system for fuel options

Support

For issues and feature requests:

Last updated on