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

Criminal Heist System

General

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.

Note

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:

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

  1. Go to G6 HQ and interact with the ped to open the app
  2. Clock in on the Duty Screen
  3. Select a mission from the Missions tab (level-locked)
  4. Drive the stockade to each pickup/delivery stop
  5. Interact at each stop to collect/deliver
  6. Random ambush encounters may occur
  7. Complete all stops to earn cash + XP
  8. Return the vehicle to the designated parking spot
  9. Higher-level escort missions have you driving a Granger while an NPC stockade follows
  10. 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

  1. Reach level 10 (configurable via Config.ATMUnlockLevel)
  2. Open the ATM tab in the app
  3. Purchase an ATM at one of the available locations ($25,000)
  4. Stock the ATM with your own cash (deposit)
  5. The ATM simulates NPC withdrawals every 15 minutes
  6. Owner earns 5% of each simulated withdrawal as earnings
  7. Withdraw your earnings anytime
  8. Pay daily taxes or risk losing the ATM after 7 days

Escort Convoy Behavior

During higher-level escort missions, the NPC stockade driver:

Criminal Heist Flow

  1. Obtain a hacking device item (default: truck_hackingdevice)
  2. Go to G6 HQ and open the app — do NOT clock in
  3. A red "Hack into the Gruppe Sechs Network" button appears on the Duty Screen
  4. Click it to enter the heist interface
  5. Create or join a crew
  6. Select a heist tier (level-locked by heist rank)
  7. Click "Execute" to start the heist
  8. A stockade spawns at a random location — a radius blip appears on the map
  9. Find the truck within the search area
  10. Aim your weapon at the driver to trigger the guards
  11. Guards exit the vehicle and attack. A 10-minute timer starts. Dispatch is called
  12. Kill all guards
  13. Go to the rear of the truck and plant thermite (requires thermite item)
  14. Complete the skill check minigame
  15. Get clear — thermite detonates after 10 seconds
  16. The doors blow open
  17. Collect the money from inside the truck
  18. All crew members receive heist XP; the collector gets the reward items
  19. 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'
Note

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):

  1. ps-dispatch
  2. cd_dispatch
  3. qs-dispatch
  4. core_dispatch
  5. 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

Note

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

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

"Not enough police online"

Heist hack button not showing

Items not found

Thermite won't plant

Guards don't react

Dispatch not firing

Database errors

Timer not appearing

Support

Need help? Join our Discord server for community support and updates.