Before You Begin#
Before installing Fuel Stations, make sure your server meets the minimum requirements. Two resources and a framework are mandatory; everything else is optional and detected on its own.
Requirement | Status | Notes |
|---|---|---|
| Required | Stations, prices, the consumption model and job levels all live in the database. |
| Required | Callbacks, zones, notifications and progress bars. |
Framework | Required |
|
| Recommended | Ships in the download. Streams the |
Target | Optional |
|
Vehicle keys | Optional | Hands the delivery driver the keys of the job truck and tanker. |
Inventory | Optional |
|
| Optional | Quasar notifications, progress bars and 3D prompts. Without them, ox_lib and native text are used. |
Everything framework- or third-party-specific sits behind a small, unencrypted bridge file, and the resource picks the right one by looking at what is already running:
Layer | Detection order |
|---|---|
Framework |
|
Target |
|
Keys | The first of eleven supported key resources found running — see Integrations |
Inventory |
|
Notifications · prompts |
|
Downloading Fuel Stations#
After purchasing Fuel Stations, the resource is automatically linked to your CFX Portal account.
Sign in to the CFX Portal using the same account used during checkout, open Granted Assets, and download Fuel Stations.
After extracting the download, you should have the following folders:
[fuelstations]/
├── qs-fuelstations/
│ ├── config.lua -- what you may edit
│ ├── client/custom/ -- bridges to other resources (editable)
│ ├── server/custom/ -- bridges to other resources (editable)
│ ├── locales/ -- 41 languages
│ ├── sql/database.sql -- the schema and the 54 default stations
│ ├── html/sounds/ -- nozzle and pump sounds
│ └── web/ -- the interface, already built
└── [props]/
└── fuelstations-props/ -- EV charger and connector modelsThe folder must be named
qs-fuelstations. The exports other scripts call are derived from the folder name, and the resource refuses to run under any other name — it prints an error and closes the server console.
Installing the Resource#
Move the [fuelstations] folder into your server's resources directory. It can live anywhere inside it, including another category folder:
resources/
└── [qs]/
└── [fuelstations]/
├── qs-fuelstations/
└── [props]/fuelstations-props/Once copied, open your server.cfg and make sure every dependency — and everything it should detect — starts before Fuel Stations:
ensure oxmysql
ensure ox_lib
# Framework
ensure es_extended
# ensure qb-core
# ensure vrp
# Target, inventory, keys, interface
ensure ox_target
ensure qs-inventory
ensure qs-vehiclekeys
ensure qs-interface
ensure qs-textui
# Fuel Stations
ensure fuelstations-props
ensure qs-fuelstationsThe loading order matters. Detection only sees resources that are already started, so a framework, key system or inventory that starts after Fuel Stations is not found — and a framework that is not found falls back to ESX.
The Database#
Import sql/database.sql into your server's database with HeidiSQL, phpMyAdmin or any MySQL client. It is not optional: stations live in the database, and without it the server starts with none. One file serves every framework — nothing in the schema or the seed data is ESX- or QBCore-specific.
Table | Holds |
|---|---|
| Every station: its position, radius, pumps, grades, price overrides, stock, blip and delivery point. |
| Base prices, the consumption model, which grade each vehicle takes, and the market's current state. |
| Each delivery driver's level, experience, earnings and deliveries. Also created by the resource on start. |
The seed places 54 stations. Petrol and electric are separate rows, so fuel_types tells you which is which at a glance:
Rows | Grades | How they work |
|---|---|---|
| Petrol, diesel | No pumps listed: each one adopts the map's own |
| Electric | Each spawns its own |
Granting Creator Access#
The station creator is where stations are placed and the economy is tuned, so /fuelcreator is behind an access check. Any of these routes lets a player in:
The usual route. Grant the fuelstations.creator permission in server.cfg — to one player, or to a whole group:
# One player
add_ace identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fuelstations.creator allow
# Everyone in group.admin
add_ace group.admin fuelstations.creator allowEvery entry in Config.Creator.aces is checked — group.admin, group.superadmin and fuelstations.creator out of the box. Add your own staff permission to the list to reuse it.
Automatic while Config.Creator.allowAdmins is true. ESX groups admin, superadmin and mod, and QBCore permissions admin and god, are let in. On vRPex, use ACE.
Config.Creator = {
command = 'fuelcreator', -- chat command
keybind = '', -- default key, e.g. 'F7'. '' = none
allowAdmins = true, -- framework admins can use it
aces = { -- ACE permissions that grant access
'group.admin',
'group.superadmin',
'fuelstations.creator',
},
}Configuring the Resource#
Everything that changes day to day — stations, prices, the consumption model, which grade each vehicle takes — is edited in game from /fuelcreator and saved to the database. config.lua holds the plumbing:
Section | Contents |
|---|---|
Framework | The language, the detected framework, target on or off, jerrycans on or off. |
Station creator · Blips | The creator command, keybind and access, and the fallback blip. |
Pumps and fuel grades | The pump and charger models the creator offers, the three grades, and how fast each one flows. |
Money and jerrycan | The currency symbol, the payment methods at the pump, jerrycan prices. |
Hose | Hose length, when it tears, spilling fuel, and nozzle points for vehicles auto-detection gets wrong. |
Fuel consumption · Prices · Vehicle fuel types | Seeds and fallbacks for the database values, plus the price mode and the market's behaviour. |
Fuel delivery job · levels | The depot, the boss, the vehicles, deposits, pay and the level curve. |
Creator camera · Debug | The free camera's speeds and keys, and console logging. |
The values worth reviewing first:
Config.Language = GetConvar('qs:locale', 'en') -- 41 languages in locales/
Config.UseTarget = false -- true = ox_target / qb-target, false = [E] prompts
Config.EnableJerrycan = true -- sell jerrycans at pumps
Config.PriceSymbol = '€' -- shown everywhere
Config.CurrencyLocale = 'en-US' -- number formatting
Config.FuelPaymentMethods = { cash = true, bank = true } -- what the pump accepts
Config.PriceMode = 'market' -- 'static' or 'market'
Config.EnableJob = true -- the tanker delivery job
Config.EveryStationHasFuelLevel = true -- stations can run dry
Config.Debug = false -- console loggingEditing
Config.FuelPrices,Config.EconomyorConfig.ElectricModelson a running server does nothing. They only seed an emptyfuel_settingstable; after that, the Economy tab in/fuelcreatoris the configuration.
Verifying the Installation#
After completing the installation, restart your server and read the console. A healthy start looks like this:
[FUELSTATIONS] Market pricing is on — prices move every 30 minute(s).
You are using the latest version of qs-fuelstations!A line reading No stations in `fuel_stations` or Could not read `fuel_stations` means the SQL file was not imported into the database this server uses. Then join your server and work through the first loop:
Visit a station
Every petrol station on the map has a blip. Park next to a pump, get out and press
Eat the pump: the pump screen opens with the grades, the price and your tank.Refuel
Take the nozzle, walk to the filler cap and press
E. Choose an amount and how to pay, start, and watch the litres and the total climb.Open the creator
/fuelcreatorlists all 54 stations. From there, Usage covers placing a station of your own and tuning the economy.
Nothing needs a restart from here on. Every station, price, grade and consumption value is edited in game and reaches every player the moment it is saved.



