NR_G6
A full-featured Gruppe Sechs armored truck job with legal delivery missions, leveling system, group/crew support, ATM ownership, escort missions, and a criminal heist system. Multi-framework with React NUI.
Features
Legal Job
- Clock in/out at G6 HQ with uniform system
- Level-locked delivery missions (10 tiers, level 1–25)
- Multi-stop pickup and delivery routes
- Group system (create, join, kick, transfer leader)
- Rank progression page with XP tracking
- Random attacker/ambush encounters during deliveries
- Escort missions with NPC stockade ride-along (higher tiers) — NPC driver obeys traffic rules and stops when under fire
- ATM ownership system (buy, stock, earn passive income, pay taxes)
Criminal Heist System
- Hack into the G6 network using a hacking device (off-duty only)
- Separate crew system for heist groups
- 4 heist tiers with level-locked progression (separate from legal job)
- Stockade spawns at random locations across the map
- Radius blip system (area search, not exact location)
- Aim at the driver to trigger armed guard response
- Kill guards, plant thermite (with minigame), 10-second detonation timer, collect black money
- Escort vehicles with armed peds on higher tiers
- 10-minute countdown timer with HUD
- Configurable police requirement and auto-detect dispatch
General
- Multi-framework: QBX (Qbox), QBCore, ESX
- Multi-inventory: ox_inventory, QBX/QBCore, ESX
- Custom React NUI with themed UI
- Optional ox_target / qb-target support (auto-detected, toggle via config)
- Optional is_ui integration for notifications and progress bars
- Everything configurable via
config.lua - Server-side security checks on all events
- Separate database tables for legal and heist progression
Dependencies
| Resource | Description | Required |
|---|---|---|
| oxmysql | Database queries | Yes |
| ox_lib | Notifications, progress bars, skill checks. Notifications and progress bars can be replaced by is_ui via Config.ExternalUI |
Yes |
| qbx_core / qb-core / es_extended | Framework (one required, auto-detected) | Yes |
| ox_inventory | Auto-detected; falls back to framework inventory | Optional |
| qbx_vehiclekeys | Auto-detected for vehicle key support | Optional |
| Dispatch resource | Auto-detects: ps-dispatch, cd_dispatch, qs-dispatch, core_dispatch, origen_police | Optional |
| ox_target / qb-target | Auto-detected. Set Config.UsingTarget = true to use target eye instead of Press E |
Optional |
| is_ui | Set Config.ExternalUI = true to use is_ui for notifications and progress bars |
Optional |
| NR_Tablet | Set Config.UsingNRTablet = true to open via tablet app |
Optional |
Installation
Step 1: Download and Place
Download the resource and extract it to your resources folder:
resources/
[qbx]/
NR_G6/
config.lua <-- Main configuration
locales.lua <-- All text strings (translate here)
fxmanifest.lua
Escrowed/ <-- Encrypted, do not modify
client/
server/
web/
build/ <-- Pre-built UI
Step 2: Add Heist Items to Your Inventory
The heist system requires three items. Add them to your inventory resource.
Already have these items? If your server already has thermite or black_money (or similar items under different names), you do NOT need to add them again. Just change the item names in config.lua to match yours. See Changing Item Names below.
ox_inventory (ox_inventory/data/items.lua)
['truck_hackingdevice'] = {
label = 'Truck Hacking Device',
weight = 500,
stack = false,
close = false,
description = 'An electronic device used to hack into armored truck networks.',
},
['thermite'] = {
label = 'Thermite',
weight = 1000,
stack = true,
close = false,
description = 'A thermite charge capable of burning through reinforced metal.',
},
['black_money'] = {
label = 'Dirty Money',
weight = 0,
stack = true,
close = false,
description = 'Unmarked bills obtained through illicit means.',
},
QBCore / Qbox (qb-core/shared/items.lua)
truck_hackingdevice = {
name = 'truck_hackingdevice',
label = 'Truck Hacking Device',
weight = 500,
type = 'item',
image = 'truck_hackingdevice.png',
unique = true,
useable = false,
shouldClose = false,
description = 'An electronic device used to hack into armored truck networks.'
},
thermite = {
name = 'thermite',
label = 'Thermite',
weight = 1000,
type = 'item',
image = 'thermite.png',
unique = false,
useable = false,
shouldClose = false,
description = 'A thermite charge capable of burning through reinforced metal.'
},
black_money = {
name = 'black_money',
label = 'Dirty Money',
weight = 0,
type = 'item',
image = 'black_money.png',
unique = false,
useable = false,
shouldClose = false,
description = 'Unmarked bills obtained through illicit means.'
},
Step 3: Add to Server Config
Add the following to your server.cfg:
ensure oxmysql
ensure ox_lib
ensure NR_G6
Make sure NR_G6 starts after your framework and inventory resources.
Step 4: Database Setup
The resource automatically creates the required database tables on first start:
nr_g6_levels— Legal job player levels and XPnr_g6_atms— ATM ownership, balances, and earningsnr_g6_heist_levels— Heist player levels and XP (separate from legal)
No manual SQL is required.
Step 5: Restart
Restart your server. Framework and inventory are auto-detected.
Configuration
All configuration is done in config.lua. This is the only file you need to edit. The encrypted Escrowed/ files read all their settings from this config.
General Settings
| Option | Default | Description |
|---|---|---|
Config.Debug |
false |
Enable debug prints in console |
Config.Theme |
'#12ee74' |
Accent color for the UI |
Config.UsingNRTablet |
true |
Open UI via NR_Tablet export. If false, uses keybind |
Config.UsingTarget |
false |
Use ox_target or qb-target for all interactions instead of built-in Press E prompt. Auto-detects which target script is running |
Config.ExternalUI |
false |
Use is_ui for notifications and progress bars instead of built-in UI and ox_lib |
Config.Keybind |
'F4' |
Key to open UI when not using NR_Tablet |
Config.ClockInDistance |
2.0 |
Distance from HQ ped to clock in |
Config.InteractionDistance |
3.0 |
Distance for delivery interactions |
Config.InteractionDuration |
5000 |
Duration of delivery interaction (ms) |
Config.BlipColor |
2 |
Blip color for legal job markers (2 = Green) |
HQ Ped and Blip
| Option | Default | Description |
|---|---|---|
Config.HQPed.model |
'cs_casey' |
Ped model at HQ |
Config.HQPed.coords |
vec4(...) |
Ped spawn location |
Config.HQPed.scenario |
'WORLD_HUMAN_CLIPBOARD' |
Ped idle animation |
Config.HQBlip.sprite |
468 |
Blip icon sprite ID |
Config.HQBlip.color |
52 |
Blip color ID |
Config.HQBlip.scale |
0.8 |
Blip size |
Config.HQBlip.label |
'G6 HQ' |
Blip text on map |
Leveling (Legal Job)
| Option | Default | Description |
|---|---|---|
Config.MaxLevel |
25 |
Maximum legal job level |
Config.XPPerLevel |
100 |
XP multiplier per level. Formula: currentLevel * XPPerLevel |
Missions
Defined in Config.Missions as a table of mission entries. Each mission has:
| Field | Type | Description |
|---|---|---|
id |
string | Unique identifier (no spaces, use dashes) |
label |
string | Display name in UI |
desc |
string | Description on Rank tab |
stops |
number | Number of delivery stops |
risk |
string | Risk label: 'Low', 'Medium', 'High', 'Extreme' |
reward |
number | Cash reward on completion ($) |
xp |
number | XP awarded on completion |
unlockLevel |
number | Level required to unlock |
Default Missions
| Mission | Level | Stops | Risk | Reward | XP |
|---|---|---|---|---|---|
| Local Pickup | 1 | 2 | Low | $1,500 | 50 |
| Standard Delivery | 1 | 3 | Low | $2,500 | 75 |
| Express Delivery | 2 | 4 | Medium | $4,000 | 100 |
| District Run | 5 | 5 | Medium | $5,500 | 130 |
| Bank Transfer | 8 | 4 | Medium | $6,500 | 160 |
| Multi-Branch Route | 11 | 6 | Medium | $8,000 | 200 |
| High-Value Transport | 14 | 5 | High | $10,000 | 250 |
| VIP Escort Delivery | 17 | 7 | High | $13,000 | 300 |
| Armored Convoy | 20 | 8 | High | $16,000 | 375 |
| Federal Reserve Run | 25 | 10 | Extreme | $25,000 | 500 |
Attack System
| Option | Default | Description |
|---|---|---|
Config.AttackChance |
0.5 |
50% chance of ambush per eligible stop |
Config.AttackerModel |
's_m_y_blackops_01' |
Attacker ped model |
Config.ChaseVehicleModel |
'sultan' |
Chase vehicle model |
Config.AttackerSpawnDistance |
45.0 |
How far attackers spawn from player |
Config.ChaseSpawnDistance |
100.0 |
How far behind the chase car spawns |
Escort Missions
| Option | Default | Description |
|---|---|---|
Config.EscortMissions |
Table | Mission IDs that use escort mode (high-value, vip-escort, armored-convoy, federal-reserve) |
Config.EscortPlayerVehicle |
Table | Vehicle model and spawn coords for the player escort car |
Config.EscortStockadeCoords |
vec4(...) |
Where the NPC stockade spawns for escort missions |
Config.EscortNPCModel |
's_m_m_security_01' |
NPC driver model |
Config.EscortAttackInterval |
{min=30, max=60} |
Seconds between chase car spawns during escort |
Config.EscortNPCWorkDuration |
6000 |
Duration NPC spends at each stop (ms) |
ATM System
| Option | Default | Description |
|---|---|---|
Config.ATMUnlockLevel |
10 |
Level required to buy ATMs |
Config.ATMPrice |
25000 |
Cost to purchase an ATM ($) |
Config.ATMMaxBalance |
50000 |
Maximum cash an ATM can hold |
Config.ATMMaxOwned |
3 |
Maximum ATMs a player can own |
Config.ATMWithdrawalFee |
0.05 |
Owner earns 5% of simulated withdrawals |
Config.ATMSimInterval |
15 |
Minutes between simulation cycles |
Config.ATMSimWithdrawMin |
100 |
Minimum $ drained per cycle |
Config.ATMSimWithdrawMax |
2000 |
Maximum $ drained per cycle |
Config.ATMTax |
100 |
Daily tax per ATM ($) |
Config.ATMTaxGracePeriod |
168 |
Hours before unpaid tax causes seizure (7 days) |
Config.ATMSellBack |
0.5 |
Percentage of purchase price returned on sell (50%) |
Heist System
Police Requirement
| Option | Default | Description |
|---|---|---|
Config.Heist.PoliceRequired |
0 |
Minimum police on duty to start a heist (0 = disabled) |
Config.Heist.PoliceJob |
'police' |
Job name to count (exact match) |
Config.Heist.PoliceType |
'leo' |
Job type to count (catches all LEO departments in QBX/QBCore) |
Heist Items
These config values control which items the script uses for all heist item checks, removals, and rewards. Change these to match whatever items you have in your inventory. No other files need to be changed.
| Option | Default | Description |
|---|---|---|
Config.Heist.HackingDeviceItem |
'truck_hackingdevice' |
Item required to access heist system |
Config.Heist.ThermiteItem |
'thermite' |
Item consumed when breaching the truck |
Config.Heist.RewardItem |
'black_money' |
Item given as heist reward |
Timer and Combat
| Option | Default | Description |
|---|---|---|
Config.Heist.TimerDuration |
600 |
Heist time limit in seconds (10 minutes) |
Config.Heist.GuardModel |
's_m_y_blackops_01' |
Guard ped model |
Config.Heist.GuardHealth |
400 |
Guard health |
Config.Heist.GuardArmor |
100 |
Guard armor |
Config.Heist.GuardWeapon |
'WEAPON_CARBINERIFLE' |
Guard weapon |
Heist Escort Vehicles
| Option | Default | Description |
|---|---|---|
Config.Heist.EscortVehicleModel |
'granger' |
Escort vehicle model |
Config.Heist.EscortPedModel |
's_m_y_blackops_01' |
Escort ped model |
Config.Heist.EscortPedWeapon |
'WEAPON_PUMPSHOTGUN' |
Escort ped weapon |
Config.Heist.EscortPedHealth |
350 |
Escort ped health |
Config.Heist.EscortPedArmor |
100 |
Escort ped armor |
Thermite and Minigame
| Option | Default | Description |
|---|---|---|
Config.Heist.StockadeModel |
'stockade' |
Armored truck model |
Config.Heist.ThermiteAnimDict |
'anim@heists@ornate_bank@thermal_charge' |
Thermite placement animation |
Config.Heist.ThermiteDuration |
5000 |
Thermite placement duration (ms) |
Config.Heist.Minigame.difficulty |
{'easy','easy','easy'} |
Skill check difficulty stages |
Config.Heist.Minigame.inputs |
{'1','2','3'} |
Skill check input keys |
Heist Blip
| Option | Default | Description |
|---|---|---|
Config.Heist.BlipRadius |
100.0 |
Search radius blip size |
Config.Heist.BlipColor |
1 |
Blip color (1 = Red) |
Config.Heist.BlipAlpha |
100 |
Blip transparency (0–255) |
Heist Leveling
The heist system has its own separate leveling — independent from the legal job.
| Option | Default | Description |
|---|---|---|
Config.Heist.MaxLevel |
25 |
Maximum heist level |
Config.Heist.XPPerLevel |
100 |
XP multiplier per level. Formula: currentLevel * XPPerLevel |
Heist Missions
Defined in Config.Heist.Missions. Each mission has:
| Field | Type | Description |
|---|---|---|
id |
string | Unique identifier |
label |
string | Display name |
desc |
string | Description |
risk |
string | 'Low', 'Medium', 'High', 'Extreme' |
unlockLevel |
number | Heist level required |
xp |
number | Heist XP awarded |
guards |
number | Number of guards in the stockade |
escorts |
number | Number of escort vehicles |
escortPeds |
number | Armed peds per escort vehicle |
rewardMin |
number | Minimum reward (in reward item) |
rewardMax |
number | Maximum reward (in reward item) |
Default Heist Missions
| Tier | Label | Level | Guards | Escorts | Reward |
|---|---|---|---|---|---|
| Low | Quick Score | 1 | 4 | 0 | 50–80 |
| Medium | Cash Grab | 5 | 4 | 1 (2 peds) | 80–120 |
| High | Armored Heist | 12 | 4 | 2 (2 peds each) | 120–180 |
| Extreme | Grand Heist | 20 | 4 | 3 (4 peds each) | 200–300 |
How It Works
Legal Job Flow
- Go to G6 HQ and interact with the ped to open the app
- Clock in on the Duty Screen
- Select a mission from the Missions tab (level-locked)
- Drive the stockade to each pickup/delivery stop
- Interact at each stop to collect/deliver
- Random ambush encounters may occur
- Complete all stops to earn cash + XP
- Return the vehicle to the designated parking spot
- Higher-level escort missions have you driving a Granger while an NPC stockade follows
- During escort missions, the NPC stockade driver obeys traffic laws (stops at red lights) and will stop the vehicle if attacked, resuming once all enemies are eliminated
ATM System
- Reach level 10 (configurable via
Config.ATMUnlockLevel) - Open the ATM tab in the app
- Purchase an ATM at one of the available locations ($25,000)
- Stock the ATM with your own cash (deposit)
- The ATM simulates NPC withdrawals every 15 minutes
- Owner earns 5% of each simulated withdrawal as earnings
- Withdraw your earnings anytime
- Pay daily taxes or risk losing the ATM after 7 days
Escort Convoy Behavior
During higher-level escort missions, the NPC stockade driver:
- Drives at a safe, controlled speed
- Obeys traffic signals (stops at red lights)
- Slows down when approaching a stop
- Stops the vehicle when under fire — if the stockade or driver takes damage, or if hostile enemies are nearby, the stockade will brake and wait
- Resumes driving after combat — once all hostile enemies are eliminated, the stockade continues to the next stop automatically
- Chase cars with armed occupants spawn at random intervals during the escort
Criminal Heist Flow
- Obtain a hacking device item (default:
truck_hackingdevice) - Go to G6 HQ and open the app — do NOT clock in
- A red "Hack into the Gruppe Sechs Network" button appears on the Duty Screen
- Click it to enter the heist interface
- Create or join a crew
- Select a heist tier (level-locked by heist rank)
- Click "Execute" to start the heist
- A stockade spawns at a random location — a radius blip appears on the map
- Find the truck within the search area
- Aim your weapon at the driver to trigger the guards
- Guards exit the vehicle and attack. A 10-minute timer starts. Dispatch is called
- Kill all guards
- Go to the rear of the truck and plant thermite (requires thermite item)
- Complete the skill check minigame
- Get clear — thermite detonates after 10 seconds
- The doors blow open
- Collect the money from inside the truck
- All crew members receive heist XP; the collector gets the reward items
- If the timer runs out, the heist fails
Changing Item Names
All item names are controlled from config.lua. If your server already has items like thermite or markedbills under different names, just update the config values to match. No other files need to be changed.
-- In config.lua -- change these to match your inventory items:
Config.Heist.HackingDeviceItem = 'truck_hackingdevice' -- your hacking device item
Config.Heist.ThermiteItem = 'thermite' -- your thermite/explosive item
Config.Heist.RewardItem = 'black_money' -- your dirty money item
Examples:
-- If your server uses 'hacking_laptop' instead of 'truck_hackingdevice':
Config.Heist.HackingDeviceItem = 'hacking_laptop'
-- If your server uses 'thermite_charge' instead of 'thermite':
Config.Heist.ThermiteItem = 'thermite_charge'
-- If your server uses 'markedbills' instead of 'black_money':
Config.Heist.RewardItem = 'markedbills'
The script uses these config values for all item checks, removals, and rewards internally. The Escrowed/ files are encrypted — you cannot edit them, but you don't need to. Just change the names in config.lua.
Dispatch Setup
Dispatch configuration is done entirely in config.lua. The script supports three modes:
Auto-Detect (Default)
Leave CustomDispatch as nil. The script will automatically detect and use whichever dispatch resource is running on your server:
Config.Heist.CustomDispatch = nil
Supported dispatch resources (checked in this order):
- ps-dispatch
- cd_dispatch
- qs-dispatch
- core_dispatch
- origen_police
If your server uses one of these, dispatch works with zero configuration.
Disable Dispatch
Set CustomDispatch to false to disable dispatch alerts entirely:
Config.Heist.CustomDispatch = false
Custom Dispatch
If your dispatch resource is not in the auto-detect list, set CustomDispatch to a function. The function receives the heist coordinates.
Example using a server event:
Config.Heist.CustomDispatch = function(coords)
TriggerServerEvent('your-dispatch:server:notify', {
message = Config.Heist.DispatchMessage,
code = Config.Heist.DispatchCode,
coords = coords,
})
end
Example using a client export:
Config.Heist.CustomDispatch = function(coords)
exports['your-dispatch']:CustomAlert({
coords = vector3(coords.x, coords.y, coords.z),
message = Config.Heist.DispatchMessage,
code = Config.Heist.DispatchCode,
job = 'police',
})
end
Target System (ox_target / qb-target)
By default, NR_G6 uses a built-in "Press E" NUI prompt for all interactions (clock in, collect/deliver money, load/grab bags, return vehicle, start convoy, plant thermite). You can switch to ox_target or qb-target instead.
Setup
Config.UsingTarget = true
That's it. The script auto-detects which target resource is running (checks ox_target first, then qb-target). If neither is found, it falls back to the built-in Press E system.
What Changes
- HQ Clock-in — Target eye on the HQ ped instead of Press E
- Job stop NPCs — Target eye on stop peds for collect/deliver
- Truck interactions — Target eye on the truck rear for load/grab bags
- Return vehicle — Target zone at the return parking spot
- Escort convoy — Target eye on the stockade to start the convoy
- Heist thermite/collect — Target zone at the stockade rear
The built-in job HUD, heist timer, and other on-screen elements continue to work normally alongside the target system. No changes to NUI or CSS are needed.
External UI (is_ui)
By default, NR_G6 uses ox_lib for notifications and a built-in native progress bar. You can switch to is_ui for a different look and feel.
Setup
Config.ExternalUI = true
The script checks if is_ui is running. If it is, notifications and progress bars use is_ui exports. If not, it falls back to ox_lib and the native progress bar.
What Changes
- Notifications — All
lib.notify()calls are replaced withexports["is_ui"]:Notify() - Progress bars — Collecting money, loading bags, delivering, returning vehicle, and planting thermite use
exports["is_ui"]:ProgressBar()
Adding / Removing Missions
Legal Missions
Add or remove entries in Config.Missions in config.lua:
{
id = 'my-custom-mission',
label = 'Custom Mission',
desc = 'A custom delivery route.',
stops = 6,
risk = 'High',
reward = 12000,
xp = 250,
unlockLevel = 15,
},
Heist Missions
Add or remove entries in Config.Heist.Missions in config.lua:
{
id = 'heist-custom',
label = 'Custom Heist',
desc = 'Your custom heist description.',
risk = 'High',
unlockLevel = 15,
xp = 80,
guards = 6,
escorts = 2,
escortPeds = 3,
rewardMin = 150,
rewardMax = 250,
},
Adding Heist Spawn Locations
Add more vec4 coordinates to Config.Heist.SpawnLocations in config.lua:
Config.Heist.SpawnLocations = {
vec4(183.7192, 6626.2539, 31.6708, 133.0709),
-- Add more locations here:
vec4(x, y, z, heading),
}
Make sure spawn locations are on flat ground with enough room for a stockade and escort vehicles.
Uniform
The uniform is applied automatically when a player clocks in. It is configured per gender in Config.Uniform:
Config.Uniform = {
[`mp_m_freemode_01`] = {
tshirt_1 = 58, tshirt_2 = 0,
arms = 37,
torso_1 = 26, torso_2 = 1,
pants_1 = 33, pants_2 = 0,
shoes_1 = 24, shoes_2 = 0,
-- ...
},
[`mp_f_freemode_01`] = {
-- Female uniform values
}
}
Values are GTA V clothing component IDs. Use a clothing menu or tool to find the IDs for your desired outfit.
Locales / Translations
All notification strings, interact prompts, progress bar labels, and HUD text are configurable in locales.lua for easy translation. Dynamic values use %s (string) or %d (number):
-- locales.lua
Locale = {}
Locale.notifyTitle = 'Groupe Sechs'
Locale.wentOnDuty = 'You are now on duty.'
Locale.wentOffDuty = 'You are now off duty.'
Locale.jobStarted = 'Job started!'
Locale.jobCompleted = 'Job completed!'
Locale.jobReward = 'Job completed! +$%d +%d XP'
Locale.levelUp = 'You reached Level %d!'
-- ... see locales.lua for the full list
File Structure
config.lua and locales.lua are the editable files. The Escrowed/ folder contains encrypted files.
| File | Purpose | Editable |
|---|---|---|
config.lua |
All settings, missions, locations, items, dispatch, uniform | Yes |
locales.lua |
All notification text, interact prompts, progress bar labels, blip names | Yes |
fxmanifest.lua |
Resource manifest | No |
Escrowed/ |
Core client and server logic (encrypted) | No |
web/build/ |
Pre-built React UI | No (rebuild with npm if needed) |
Troubleshooting
UI doesn't open
- Ensure
web/build/exists with compiled files - If using NR_Tablet, make sure the G6 app is set to
using = truein the tablet config - If using keybind mode, check
Config.UsingNRTablet = falseand verifyConfig.Keybind - Check F8 console for errors
"Not enough police online"
- Set
Config.Heist.PoliceRequired = 0to disable the police check - Or ensure enough LEO are on duty
- Check
Config.Heist.PoliceJobandConfig.Heist.PoliceTypematch your server's police job name/type
Heist hack button not showing
- Player must have the hacking device item in their inventory
- Player must NOT be clocked in (heist is off-duty only)
- Verify the item name in
Config.Heist.HackingDeviceItemmatches your inventory
Items not found
- Verify the item names in
config.luamatch your inventory item names exactly - Item names are case-sensitive
- Check the items exist in your inventory resource (
items.lua)
Thermite won't plant
- Player needs the thermite item in their inventory
- All guards must be dead first
- Player must be near the rear of the stockade
Guards don't react
- Aim your weapon directly at the stockade driver or a guard
- You must be free-aiming (holding aim/right click)
Dispatch not firing
- Check if your dispatch resource is in the auto-detect list
- If not, set up
Config.Heist.CustomDispatchas a function - If dispatch is set to
false, it is intentionally disabled
Database errors
- Ensure
oxmysqlis started beforeNR_G6in yourserver.cfg - Verify your database connection string in
server.cfg
Timer not appearing
- Ensure no other NUI is blocking the heist timer overlay
- Check F8 console for errors
Support
Need help? Join our Discord server for community support and updates.