Before You Begin#
Before installing Bunkers Creator, make sure your server meets the minimum requirements. Three resources are mandatory; everything else is optional and detected on its own.
Requirement | Status | Notes |
|---|---|---|
| Required | Database access. The tables create themselves. |
| Required | Zones, progress bars, menus, callbacks and notifications. |
| Required | Loads the gunrunning bunker interior. Without it the inside of a bunker does not exist. |
Game build | Required | 2802 or newer. The missions use DLC vehicles and props (Terrorbyte, train containers, grinders, crates). |
Framework | Optional | ESX, QBCore or Qbox — auto-detected. Standalone works without one, but without jobs nobody can raid. |
Inventory | Recommended | Holds supplies, stock, the bunker storage and the gun locker. Fourteen are supported. |
Target | Optional | ox_target or qb-target. Without one, every point shows a text prompt and is used with E. |
Vehicle keys | Optional | Gives the keys of the bunker caddy and of vehicles driven through the vehicle entrance. |
Each layer is detected by looking for a started resource:
Layer | Detected resources |
|---|---|
Framework | es_extended · qb-core · qbx_core |
Inventory | ox_inventory · qb-inventory · qs-inventory · esx_inventoryhud · origen_inventory · mf-inventory · codem-inventory · tgiann-inventory · lj-inventory · core_inventory · chezza_inventory · ps-inventory · aj-inventory · mythic_inventory |
Target | ox_target · qb-target |
Vehicle keys | qs-vehiclekeys · qb-vehiclekeys · jg-vehiclekeys · wasabi_carlock · vehicles_keys · mk_vehiclekeys · t1ger_keys · Renewed-Vehiclekeys · jota-dev-vehicle-key · qbx_vehiclekeys |
Anything not found falls back to standalone for that layer. Integrations explains how to pin one by hand.
GitHubReleases · Bob74/bob74_iplFix holes and customize the map.Downloading Bunkers Creator#
After purchasing Bunkers Creator, 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 Bunkers Creator.
After extracting the download, you should have the following folder:
qs-bunkers-creator/
├── shared/config.lua -- the settings you may edit
├── client/custom/ -- bridges to other resources (editable)
├── server/custom/ -- bridges to other resources (editable)
├── locales/ -- the eleven translations
├── data/ -- bunkers.json and globalConfig.json
├── stream/ -- props streamed by the resource
├── web/ -- the interface
└── fxmanifest.luaKeep the folder named
qs-bunkers-creator. Every export is called through that name, and the phone app and other scripts look for it.
Installing the Resource#
Move the qs-bunkers-creator folder into your server's resources directory. It can live anywhere inside it, including a category folder:
resources/
└── [qs]/
└── qs-bunkers-creator/Open your server.cfg, enforce a recent game build, and make sure every dependency — and everything it should detect — starts before Bunkers Creator:
sv_enforceGameBuild 3095
ensure oxmysql
ensure ox_lib
ensure bob74_ipl
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
# Inventory, target, vehicle keys
ensure ox_inventory
ensure ox_target
ensure qs-vehiclekeys
ensure qs-bunkers-creatorThe loading order matters. Detection only sees resources that are already started, so an inventory or target that starts after Bunkers Creator is not found and that layer runs standalone.
The Database#
There is no SQL file to import. Bunkers Creator creates its tables on start, and adds any column an older install is missing, so updating never needs a migration by hand.
Table | Holds |
|---|---|
| One row per owned bunker: the owner, price paid, keyholders, earnings and revenue history, mission success rates, heat, raid lockout and a snapshot of the bunker storage. |
| Who is inside a bunker right now, so a player who disconnects or rides out a restart inside is put back at the entrance when they return. |
The bunkers themselves and the global settings are not in the database: they are kept in data/bunkers.json and data/globalConfig.json, written by the creator in game.
Every save of
bunkers.jsonkeeps the previous version asbunkers.json.bak. If the file is ever missing or damaged, the server restores the backup on boot and says so in the console.
Inventory Items#
Two items must exist in your inventory: bunker_supplies (what production consumes and the train crates give) and bunker_stock (what production makes and sell missions carry). The weapons the shipped recipes craft — weapon_pistol, weapon_smg, weapon_assaultrifle, weapon_pumpshotgun — must exist too, as must any item you add as a supply, as crate loot or to a recipe.
In ox_inventory/data/items.lua:
['bunker_supplies'] = {
label = 'Bunker Supplies',
weight = 1000,
stack = true,
close = true,
description = 'Supplies for bunker operations'
},
['bunker_stock'] = {
label = 'Bunker Stock',
weight = 2000,
stack = true,
close = true,
description = 'Processed goods from bunker production'
},In qs-inventory/shared/items.lua:
['bunker_supplies'] = {
name = 'bunker_supplies',
label = 'Bunker Supplies',
weight = 1000,
type = 'item',
image = 'bunker_supplies.png',
unique = false,
useable = false,
shouldClose = true,
description = 'Supplies for bunker operations'
},
['bunker_stock'] = {
name = 'bunker_stock',
label = 'Bunker Stock',
weight = 2000,
type = 'item',
image = 'bunker_stock.png',
unique = false,
useable = false,
shouldClose = true,
description = 'Processed goods from bunker production'
},In qb-core/shared/items.lua:
bunker_supplies = { name = 'bunker_supplies', label = 'Bunker Supplies', weight = 1000, type = 'item', image = 'bunker_supplies.png', unique = false, useable = false, shouldClose = true, description = 'Supplies for bunker operations' },
bunker_stock = { name = 'bunker_stock', label = 'Bunker Stock', weight = 2000, type = 'item', image = 'bunker_stock.png', unique = false, useable = false, shouldClose = true, description = 'Processed goods from bunker production' },For inventories that read the ESX items table:
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('bunker_supplies', 'Bunker Supplies', 100, 0, 1),
('bunker_stock', 'Bunker Stock', 500, 0, 1);Item pictures in the workbench are read from your inventory's own image folder, so drop bunker_supplies.png and bunker_stock.png there. The folders are listed in Config.InventoryImagePaths.
Claiming Admin Access#
The creator — where bunkers are placed and the server is configured — opens with /bunkercreator and only for admins. Who counts as an admin depends on the framework:
Players in the admin or superadmin group. Set the group with your usual ESX admin tool or in the users table.
Players with the QBCore admin permission, or with the command ace.
add_principal identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx qbcore.adminPlayers with the command ace — txAdmin's admins already have it.
add_ace group.admin command allow
add_principal identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx group.adminThe rule lives in IsAdmin in server/custom/frameworks/<framework>.lua, which you can change to any check you like.
Configuring the Resource#
The economy, the raid rules and the interior are edited in game from /bunkercreator → Settings. A few values sit in files:
File | Contents |
|---|---|
| Language, detection, blips, inventory image folders, the police gate, the payout account on QB, heat gain and the crafting recipes. |
| What the Settings tab saves: production, prices, supply items, crate loot, raid rules, raid jobs, interior style and upgrades. |
| Every bunker and its points. Written by the creator; there is no need to edit it by hand. |
| Every text the player reads. |
The values worth reviewing first:
Config.Language = 'en' -- de · en · es · fr · hi · it · ja · nl · pt · zh-CN · zh-TW
Config.EnableBlips = true -- bunker blips on the map
Config.MinPoliceOnline = 0 -- on-duty police needed to start a mission
Config.PoliceJobs = { 'police' } -- jobs counted for that gate
Config.SellPayoutAccount = 'cash' -- QBCore / Qbox only: cash · bank · cryptoVerifying the Installation#
Restart your server, check the console has no red lines from qs-bunkers-creator, then join and work through the first loop:
Find a bunker
Eleven bunkers are on the map with a blip — Zancudo, Route 68, Paleto and the rest. Walk up to the entrance and choose View Bunker.
Buy it
Confirm the purchase. The price is taken from the bank. Enter, and the first-visit cutscene plays (E skips it).
Resupply
Open the laptop → Resupply → Buy Supplies. Within a few seconds stock starts to appear and crates fill the floor.
Open the creator
/bunkercreatoropens the admin panel. From there, Usage covers placing a bunker of your own.



