Skip to main content

Documentation Index

Fetch the complete documentation index at: https://axeldevelopment.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Gas Station Banner

β›½ Advanced Gas Station + Fuel System Script

The most advanced Gas Station script for FiveM. Fully optimized, secure, and packed with features to create a realistic business environment for your players.

πŸŽ₯ Video Preview

VIDEO PREVIEW

Watch script preview here.

✨ Key Features

Here is everything included in the script based on the source code:

🏒 Business Management

  • Buy & Sell Stations: Players can purchase gas stations and become real owners.
  • Custom UI Menu Design
  • Employee System: Hire real players, assign ranks (Basic, Advanced), and manage your team.
  • Finance Management: Deposit and withdraw earnings from the station’s safe.
  • Custom Name: Owners can rename their station to build their own brand (blip name changed).

β›½ Fuel Sysytem

-⚑ Hybrid Ready: Full support for Gas and Electric vehicles with unique logic for each.

πŸš› Missions & Progression

  • Resupply Missions: Start interactive missions with Trucks & Trailers to restock fuel 5 difficult levels.
  • Leveling System: Earn XP for every liter sold. Higher levels unlock bigger storage and better missions.
  • Stock Management: Monitor your fuel levels and order supplies before you run dry.

β›½ Realistic Gameplay

  • Physical Nozzle: Grab the nozzle, see the hose connect to the car, and refuel manually.
  • Animations: High-quality animations for grabbing, fueling, and returning the nozzle.
  • Sound Effects: Custom sounds for interacting with pumps and refueling.
  • Custom Ui design fuel menu

πŸ’° Economy & Taxes

  • Smart Tax System: Automatic Daily Taxes. If an owner fails to pay, the station is seized by the state.
  • Activity Check: Automatic β€œWeekly Earnings” check to prevent inactive owners holding spots.
  • Custom Pricing: Owners set their own fuel price per liter (within config limits).
  • Loyalty Cards: Issue Discount Cards to loyal customers for cheaper fuel.

πŸ›‘οΈ Technical & Security

  • 0.00ms Idle: heavily optimized code using smart threading and caching (StationsCache).
  • Exploit Protection: Server-side validation for payments and fuel levels.
  • Admin Menu: Full gasadmin menu to manage any station, add fuel, add XP, or remove owners.
  • Standalone Consumption: Built-in fuel consumption system based on RPM and Vehicle Class.

CONFIG.LUA FILE

πŸš€ Ready to start?

Installation Guide

Follow our step-by-step guide to get the script running in minutes.
Config = {}
Config.Locale = 'en' -- bg, en, el, de, it, fr, pt, tr, es etc.
Locales = {} 

-- ====================================================================================
--                      FRAMEWORK & INVENTORY SETTINGS
-- ====================================================================================
Config.Framework = 'esx'      -- Options: 'esx', 'qb', 'qbox'
Config.Inventory = 'ox'       -- Options: 'ox', 'qs' (qs-inventory), 'default' (standard esx/qb)
Config.Target = 'ox_target'   -- Options: 'ox_target', 'qb-target', 'none'

Config.UsePed = true          -- true = Use NPC, false = Use Marker bellow
Config.MarkerSettings = {     -- settings if UsePed = false
    Type = 21,           -- icon type
    Color = {r = 0, g = 255, b = 0, a = 150}, -- color
    Scale = {x = 1.0, y = 1.0, z = 0.5},      -- size
    OffsetZ = -0.3,         -- Height offset  
    Rotation = {x = 0.0, y = 0.0, z = 0.0}, -- Left, Right
    Spin = true,             -- If true marker will spin 
    BobUpAndDown = false,
    FaceCamera = false
}

-- ====================================================================================
--                                 TEXTUI SETTINGS
-- ====================================================================================
Config.TextUI = 'jg-textui' -- Choice: 'jg-textui' or 'ox_lib'

-- ====================================================================================
--                                VEHICLE KEYS SETTINGS
-- ====================================================================================
Config.VehicleKeys = 'wasabi_carlock' -- Choice: 'wasabi_carlock', 'qb', 'qbox', 'none'

-- ====================================================================================
--                                INTEGRATION SETTINGS
-- ====================================================================================
Config.FuelSystem = 'axel_fuel' -- ONLY AXEL FUEL (BEST FUEL OPTIMIZING SCRIPT SUPPORTED)

-- ====================================================================================
--                                SOCIETY (BANKING)
-- ====================================================================================
Config.SocietySettings = {
    Enabled = true,                 
    -- WHICH SYSTEM TO USE FOR SOCIETY MONEY?
    -- 'esx_addonaccount' (Standard ESX)
    -- 'qb-management'    (Standard QBCore)
    -- 'qbx_management'   (Qbox)
    -- 'okokBanking'      (Okok Banking Integration)
    -- 'tgg-banking'      (TGG Banking Integration)  
    -- 'none'             (Disable society payments)
    System = 'esx_addonaccount', 

    Account = 'society_obshtina',   -- The account name
    
    PurchasePercent = 50, -- % of station price goes to society
    TaxPercent = 100      -- % of daily tax goes to society
}

-- ====================================================================================
--                                      NPC & BLIPS
-- ====================================================================================
Config.PedModel = 'mp_m_counterfeit_01' 
Config.TargetDistance = 2.5 

Config.Blips = {
    Unowned = { Sprite = 361, Color = 0, Scale = 0.6, Display = 4 },
    Owned = { Sprite = 361, Color = 2, Scale = 0.7, Display = 4 }
}

function _U(str, ...)
    if Locales[Config.Locale] and Locales[Config.Locale][str] then
        return string.format(Locales[Config.Locale][str], ...)
    else
        return 'Translation missing: [' .. Config.Locale .. '][' .. str .. ']'
    end
end

-- ====================================================================================
--                                      ECONOMY
-- ====================================================================================
Config.DailyTax = 250      
Config.RenamePrice = 1000    
Config.XPPerLiter = 0.6      
Config.MaxEmployees = 3
Config.MissionCost = 250     
Config.SellRefundPercent = 50 
Config.CheckIntervalDays = 7        
Config.MinimumWeeklyEarnings = 10000 
Config.UnownedFuelPrice = 35.0 
Config.DefaultOwnerPrice = 25.0 

Config.PriceLimits = {
    Fuel = { Min = 5, Max = 30 },
    Electricity = { Min = 5, Max = 30 }
}

-- ====================================================================================
--                                  ELECTRICITY SYSTEM
-- ====================================================================================
Config.Electric = {
    MaxStock = 200,         
    RegenAmount = 2,        
    RegenInterval = 5,      
    PricePerUnit = 25.0,    
}

-- ====================================================================================
--                                    BUSINESS LEVELS
-- ====================================================================================
Config.Levels = {
    [1] = { xp = 0,    storage = 150,  truckLoad = 50,   price = 250,  vehicle = 'packer', trailer = 'tanker', label = 'Level 1 (Max 150L)' },
    [2] = { xp = 250,  storage = 350,  truckLoad = 100,  price = 300,  vehicle = 'packer', trailer = 'tanker', label = 'Level 2 (Max 350L)' },
    [3] = { xp = 500,  storage = 500,  truckLoad = 150,  price = 400,  vehicle = 'hauler2', trailer = 'tanker', label = 'Level 3 (Max 500L)' },
    [4] = { xp = 750,  storage = 750,  truckLoad = 250,  price = 450, vehicle = 'hauler2', trailer = 'armytanker', label = 'Level 4 (Max 750L)' },
    [5] = { xp = 1000, storage = 1000, truckLoad = 500,  price = 500, vehicle = 'phantom', trailer = 'armytanker', label = 'Level 5 (Max 1000L)' },
}

-- ====================================================================================
--                              DEPOT LOCATIONS (For Missions)
-- ====================================================================================
Config.DepotLocations = { 
    vec3(-425.8480, -2271.5020, 7.6082),
    vec3(192.9869, -2514.4578, 5.9961),
    vec3(-1898.7118, -278.4398, 49.0556),
    vec3(1238.9309, 1907.9818, 78.4559),
    vec3(2593.3352, 362.4410, 108.4512)
}

-- ====================================================================================
--                                        STATIONS
-- ====================================================================================
Config.Stations = {
    ['gas_grove'] = {   
        label = "Gas Station 1 (Grove)",
        price = 120000,
        coords = vec4(289.5357, -1266.8649, 29.4407, 89.4950),
        truckSpawn = vec4(293.2956, -1246.3188, 29.2909, 91.9931),
        trailerSpawn = vec4(283.4217, -1272.9427, 29.2497, 4.0302),
        delivery = vec3(293.0594, -1244.4193, 29.2840)
    },
    ['gas_mirror'] = { 
        label = "Gas Mirror Park",
        price = 120000,
        coords = vec4(1167.3638, -323.7064, 69.2648, 272.7788),
        truckSpawn = vec4(1186.9768, -314.3059, 69.1812, 278.0726), 
        trailerSpawn = vec4(1174.4865, -316.1386, 69.1782, 263.3433), 
        delivery = vec3(1179.5291, -326.0529, 69.1742)
    },    
    ['gas_vinewood'] = { 
        label = "Gas Station 2 (Vinewood)",
        price = 80000,
        coords = vec4(818.2001, -1040.8921, 26.7510, 5.0266), 
        truckSpawn = vec4(824.8608, -1057.6312, 27.9424, 345.2625),
        trailerSpawn = vec4(840.7227, -1046.2081, 27.6754, 76.0766),
        delivery = vec3(808.8293, -1042.7247, 26.5625)
    },
    ['gas_bahama'] = { 
        label = "Gas Station 3 (Bahama)",
        price = 65000,
        coords = vec4(-1428.2236, -268.2069, 46.2221, 132.1956), 
        truckSpawn = vec4(-1441.8619, -257.6555, 46.2079, 132.4339),
        trailerSpawn = vec4(-1428.4229, -244.9709, 46.3572, 132.7722),
        delivery = vec3(-1412.6260, -278.9574, 46.3100)
    },    
    ['gas_little_1'] = {
        label = "Gas Station 5 (Little Seoul 2)",
        price = 75000,
        coords = vec4(-703.4025, -937.4698, 19.2119, 89.3570), 
        truckSpawn = vec4(-728.6353, -914.1932, 19.0139, 181.6747),
        trailerSpawn = vec4(-702.6265, -921.3069, 19.0057, 95.7499),
        delivery = vec3(-728.1742, -923.5105, 19.0170)
    },   
    ['gas_glbanka'] = { 
        label = "Gas Station 6 (Bank)",
        price = 75000,
        coords = vec4(642.1487, 260.5821, 103.2955, 57.6262), 
        truckSpawn = vec4(646.1127, 278.7325, 103.1593, 143.2169),
        trailerSpawn = vec4(640.4182, 281.2466, 103.1896, 149.8202),
        delivery = vec3(638.4944, 268.1041, 103.0897)
    },            
    ['gas_magistrala_1'] = { 
        label = "Gas Station 7 (Highway 2)",
        price = 55000,
        coords = vec4(2673.7209, 3266.9424, 55.2407, 246.7915), 
        truckSpawn = vec4(2656.3359, 3274.9172, 55.2407, 55.6135),
        trailerSpawn = vec4(2660.1318, 3277.5657, 55.2407, 68.1788),
        delivery = vec3(2681.3108, 3254.8518, 55.2221) 
    },  
    ['gas_krai'] = { 
        label = "Gas Station 8 (Paleto)",
        price = 50000,
        coords = vec4(167.4718, 6631.0591, 31.5559, 190.7935), 
        truckSpawn = vec4(183.6836, 6627.7285, 31.6455, 197.8763),
        trailerSpawn = vec4(196.4187, 6627.2715, 31.5670, 175.1810),
        delivery = vec3(198.3715, 6605.8379, 31.7319)
    },  
    ['gas_grove3'] = { 
        label = "Gas Grove Street",
        price = 75000,
        coords = vec4(-62.9699, -1764.3152, 29.2617, 81.0858), 
        truckSpawn = vec4(-28.3059, -1759.8440, 29.3850, 61.7870),
        trailerSpawn = vec4(-20.0762, -1767.8195, 29.1959, 24.7516),
        delivery = vec3(-23.8450, -1757.3590, 29.0685)
    },   
    ['gas_more'] = { 
        label = "Gas Beach Street",
        price = 60000,
        coords = vec4(-2072.9160, -327.2644, 13.3160, 88.0674), 
        truckSpawn = vec4(-2078.0959, -306.8757, 13.1075, 84.3542),
        trailerSpawn = vec4(-2064.4419, -307.0587, 13.1429, 110.5820),
        delivery = vec3(-2093.7812, -303.1684, 13.0301)
    },      
    ['gas_magistrala4'] = { 
        label = "Gas Left Highway",
        price = 60000,
        coords = vec4(-2543.9517, 2315.9395, 33.2161, 10.4357), 
        truckSpawn = vec4(-2535.4414, 2343.4922, 33.0600, 215.5713),
        trailerSpawn = vec4(-2528.2698, 2343.5088, 33.0599, 212.4828),
        delivery = vec3(-2524.1685, 2327.6260, 33.0599)
    },   
    ['gas_sandyy'] = { 
        label = "Gas Sandy",
        price = 40000,
        coords = vec4(2001.3802, 3779.8752, 32.1808, 213.6086), 
        truckSpawn = vec4(1978.7296, 3761.2891, 32.1813, 210.6507),
        trailerSpawn = vec4(1982.2006, 3780.8323, 32.1808, 214.0622),
        delivery = vec3(1986.2679, 3765.9175, 32.1805)
    },        
    ['gas_grad'] = { 
        label = "Gas 837",
        price = 80000,
        coords = vec4(167.2879, -1553.7268, 29.2617, 213.0337), 
        truckSpawn = vec4(184.5605, -1554.4865, 29.2069, 219.9015),
        trailerSpawn = vec4(180.1754, -1545.9399, 29.1533, 215.3963),
        delivery = vec3(185.7982, -1556.1633, 29.2188)
    },                          
    ['gas_paleto'] = { 
        label = "Gas Station 10 (Paleto 2)",
        price = 60000,
        coords = vec4(1706.0050, 6425.6172, 32.7689, 165.6898),
        truckSpawn = vec4(1718.3282, 6421.2422, 33.3217, 154.7002),
        trailerSpawn = vec4(1685.1837, 6435.4263, 32.3276, 199.5346 ),
        delivery = vec3(1710.0, 6418.0, 32.5)
    }
}
-- ====================================================================================
--                                  ADMIN PERMISSIONS
-- ====================================================================================

-- GROUP HAVE MENU ACCSES
Config.AdminCommandGroup = 'admin' 

Config.CheckAdmin = function(source, xPlayer)
    if not xPlayer then return false end
    
    if Config.Framework == 'esx' then
        local group = xPlayer.getGroup()
        if group == 'god' or group == 'owner' or group == 'admin' or group == 'superadmin' then
            return true
        end
    elseif Config.Framework == 'qb' or Config.Framework == 'qbox' then
        if xPlayer.Functions.GetPermission then
            if xPlayer.Functions.GetPermission() == 'god' or xPlayer.Functions.GetPermission() == 'admin' then
                return true
            end
        end
    end

    return false
end