Configuration
Where gg_gruppejob's settings live and the ones server owners change most.
Every setting is in a plain Lua file inside gg_gruppejob. Restart gg_gruppejob after you change one.
| File | What it holds |
|---|---|
utility.lua | Notifications, progress bar, bridge overrides |
config/shared/general.lua | HQ location, levels, daily challenge |
config/shared/jobs.lua | The three jobs, their pay and buy-in, and their locations |
config/shared/settings.lua | Menu color, split pay, keys, popup, leaderboards, payment accounts, uniform |
config/shared/robbery.lua | Truck robberies, the robbery buyer and bag opening |
config/shared/offsets.lua | Truck spawn points and where the bags sit in each truck |
config/lang.lua | Every text the players see |
base/core/open/server/hooks.lua, base/core/open/client/hooks.lua | Your own code. See Hooks. |
utility.lua
| Setting | What it does | Default |
|---|---|---|
notifications | Notification style: ox, qb or esx | "ox" |
ProgressBar | Progress bar style: ox, qb or esx | "ox" |
framework, inventory, target, dispatch | Force one resource by name, for example "ox_inventory". Leave empty to detect it. | "" |
debugMode | Prints debug lines in the console | false |
HQ location
cfg.general.locations in config/shared/general.lua places the HQ guard. It stands at vec4(-7.01, -654.16, 33.45, 186.73) with the s_m_m_armoured_02 model and a blip (sprite 475, color 2).
Anyone can work the job by default. To limit it to one job, set job to that job's name. It must exist in your framework.
cfg.general.locations = {
{
label = "Gruppe 6 HQ",
coords = vec4(-7.01, -654.16, 33.45, 186.73),
job = "gruppe6",
-- npc and blip stay as they are
},
}
This hides every option on the HQ guard from players without that job. It does not change who can rob the trucks.
Jobs
cfg.jobs.types in config/shared/jobs.lua:
| Job | id | Level | Group size | Pay | Experience | Buy-in |
|---|---|---|---|---|---|---|
| ATM Restocking | atm_restock | 1 | 1 to 4 | $2,000 | 100 | $2,500 |
| Bank Collector | bank_restock | 5 | 1 to 4 | $4,000 | 250 | $5,000 |
| Private Delivery | private_restock | 10 | 1 to 2 | $6,000 | 500 | $10,000 |
Set enabled = false to lock a job. It still shows in the menu, but its start button is greyed out. cfg.jobs.locations holds each job's stops and counts:
| Job | Setting | Default |
|---|---|---|
| ATM Restocking | bag_count, bags to deliver | 8 |
| ATM Restocking | positions, the spots next to ATMs | 17 spots |
| Bank Collector | pickup_count, banks to visit | 3 |
| Bank Collector | bag_count, bags to collect | 12 |
| Private Delivery | pickup_count, pickup spots to visit | 3 |
| Private Delivery | bag_count, crates to collect | 6 |
Each ATM bag goes to a different spot, so keep the ATM bag_count no higher than the number of positions. If a custom MLO covers an ATM, remove or move that spot.
Levels
cfg.general.levels sets the experience each level needs and its bonus. The bonus is a percent on top of the job's pay and experience.
| Level | Experience | Pay bonus | Experience bonus |
|---|---|---|---|
| 1 | 0 | 0% | 0% |
| 2 | 100 | 0% | 5% |
| 3 | 250 | 5% | 10% |
| 4 | 500 | 10% | 20% |
| 5 | 1,000 | 15% | 30% |
| 6 | 5,000 | 20% | 40% |
| 7 | 10,000 | 25% | 50% |
| 8 | 15,000 | 30% | 60% |
| 9 | 25,000 | 40% | 80% |
| 10 | 50,000 | 50% | 100% |
Daily challenge
cfg.DailyBonusChallenge in config/shared/general.lua:
| Setting | What it does | Default |
|---|---|---|
amount_required | Jobs to finish in a day | 5 |
rewards.money | Money for claiming it | 1000 |
rewards.experience | Experience for claiming it | 250 |
can_earn_item | Also give one item from items | true |
items | Possible items with weight and amount | plastic, glass, copper |
Settings
In config/shared/settings.lua:
| Setting | What it does | Default |
|---|---|---|
cfg.settings.ui.primary_color | Menu accent color | 'rgb(144, 238, 0)' |
general.clothing_enabled | Shows Swap Uniform on the HQ guard | true |
general.currency_type, general.number_format | How money shows in the menu | "USD", "en-US" |
general.group_keys | Every group member gets keys to the truck. false gives keys to one player. | true |
general.split_pay | Split the pay and experience across the group | true |
popup.enabled | Shows the current step on screen | true |
popup.position | bottom-middle, right-middle, left-middle, top-middle, top-left, top-right, bottom-left or bottom-right | "bottom-middle" |
leaderboard.options | Leaderboard tabs. Remove a line to hide that tab. | Experience, jobs, money |
cfg.settings.clothing | The uniform for male and female peds. nil keeps the player's own piece. | Gruppe 6 uniform |
cfg.settings.payment_types picks the account for each payment, "cash" or "bank":
| Key | Payment | Default |
|---|---|---|
job_payout | Job pay | "cash" |
daily_reward | Daily challenge money | "cash" |
vehicle_buyin_remove | Buy-in taken at the start | "cash" |
vehicle_buyin_add | Buy-in returned at the end | "cash" |
Robbery
cfg.robbery.settings in config/shared/robbery.lua:
| Setting | What it does | Default |
|---|---|---|
enabled | Allow truck robberies | true |
global_cooldown | Minutes between robberies on the whole server | 15 |
police_jobs | Jobs that count as police and get the alert | police, sheriff |
police_onduty | Count only on-duty police | false |
police_required | Police needed per truck: atm_restock, bank_restock, private_restock | 0, 1, 2 |
safezone_radius | Metres around the HQ guard where no robbery can start | 1.0 |
cfg.robbery.dispatch is the police alert, code 10-80.
cfg.robbery.ped is the robbery buyer at vec4(359.62, 356.51, 104.33, 345.59). buy_items sells gg_thermite for $1,000 cash. sell_items buys the loot for cash, with a 30% chance of bonus items:
| Item | Cash |
|---|---|
gg_atmbag | $100 |
gg_bankbag | $300 |
gg_privatecrate | $750 |
cfg.robbery.open_items sets what a bag holds when a player uses it:
| Item | black_money | Ink chance | Bonus chance |
|---|---|---|---|
gg_atmbag | 200 to 300 | 30% | 100% |
gg_bankbag | 400 to 700 | 25% | 10% |
gg_privatecrate | 800 to 1,300 | 20% | 10% |
On ink, the bag is destroyed and pays nothing. reward_type is "item" or "account", and reward_key is the item or account name. To pay clean cash, set reward_type = "account" and reward_key = "cash".
cfg.robbery.types sets each truck's robbery:
| Setting | What it does | Default |
|---|---|---|
required_item | Item needed to start | gg_thermite |
remove_on_fail | Take the item on a failed skill check | false |
thermite_delay | Seconds the thermite burns before the doors open | 20, 30, 40 |
item_reward | Loot item | gg_atmbag, gg_bankbag, gg_privatecrate |
skill_check | The bl_ui MineSweeper game. Raise grid or target to make it harder. | Grids 4, 5 and 7 |
Hooks
The hook files are open for editing. Restart gg_gruppejob after you change one.
hooks.jobCompleted in base/core/open/server/hooks.lua runs on the server for each group member after they are paid. source is that player's server id.
hooks.jobCompleted = function(source)
print(('Player %s finished a Gruppe 6 job'):format(source))
end
hooks.canOpenMenu in base/core/open/client/hooks.lua runs on the client before the job menu opens. Return false to keep it closed. This example opens it only between 06:00 and 22:00 game time:
hooks.canOpenMenu = function()
local hour = GetClockHours()
return hour >= 6 and hour < 22
end
