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.

FileWhat it holds
utility.luaNotifications, progress bar, bridge overrides
config/shared/general.luaHQ location, levels, daily challenge
config/shared/jobs.luaThe three jobs, their pay and buy-in, and their locations
config/shared/settings.luaMenu color, split pay, keys, popup, leaderboards, payment accounts, uniform
config/shared/robbery.luaTruck robberies, the robbery buyer and bag opening
config/shared/offsets.luaTruck spawn points and where the bags sit in each truck
config/lang.luaEvery text the players see
base/core/open/server/hooks.lua, base/core/open/client/hooks.luaYour own code. See Hooks.

utility.lua

SettingWhat it doesDefault
notificationsNotification style: ox, qb or esx"ox"
ProgressBarProgress bar style: ox, qb or esx"ox"
framework, inventory, target, dispatchForce one resource by name, for example "ox_inventory". Leave empty to detect it.""
debugModePrints debug lines in the consolefalse

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.

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

JobidLevelGroup sizePayExperienceBuy-in
ATM Restockingatm_restock11 to 4$2,000100$2,500
Bank Collectorbank_restock51 to 4$4,000250$5,000
Private Deliveryprivate_restock101 to 2$6,000500$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:

JobSettingDefault
ATM Restockingbag_count, bags to deliver8
ATM Restockingpositions, the spots next to ATMs17 spots
Bank Collectorpickup_count, banks to visit3
Bank Collectorbag_count, bags to collect12
Private Deliverypickup_count, pickup spots to visit3
Private Deliverybag_count, crates to collect6

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.

LevelExperiencePay bonusExperience bonus
100%0%
21000%5%
32505%10%
450010%20%
51,00015%30%
65,00020%40%
710,00025%50%
815,00030%60%
925,00040%80%
1050,00050%100%

Daily challenge

cfg.DailyBonusChallenge in config/shared/general.lua:

SettingWhat it doesDefault
amount_requiredJobs to finish in a day5
rewards.moneyMoney for claiming it1000
rewards.experienceExperience for claiming it250
can_earn_itemAlso give one item from itemstrue
itemsPossible items with weight and amountplastic, glass, copper

Settings

In config/shared/settings.lua:

SettingWhat it doesDefault
cfg.settings.ui.primary_colorMenu accent color'rgb(144, 238, 0)'
general.clothing_enabledShows Swap Uniform on the HQ guardtrue
general.currency_type, general.number_formatHow money shows in the menu"USD", "en-US"
general.group_keysEvery group member gets keys to the truck. false gives keys to one player.true
general.split_paySplit the pay and experience across the grouptrue
popup.enabledShows the current step on screentrue
popup.positionbottom-middle, right-middle, left-middle, top-middle, top-left, top-right, bottom-left or bottom-right"bottom-middle"
leaderboard.optionsLeaderboard tabs. Remove a line to hide that tab.Experience, jobs, money
cfg.settings.clothingThe 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":

KeyPaymentDefault
job_payoutJob pay"cash"
daily_rewardDaily challenge money"cash"
vehicle_buyin_removeBuy-in taken at the start"cash"
vehicle_buyin_addBuy-in returned at the end"cash"

Robbery

cfg.robbery.settings in config/shared/robbery.lua:

SettingWhat it doesDefault
enabledAllow truck robberiestrue
global_cooldownMinutes between robberies on the whole server15
police_jobsJobs that count as police and get the alertpolice, sheriff
police_ondutyCount only on-duty policefalse
police_requiredPolice needed per truck: atm_restock, bank_restock, private_restock0, 1, 2
safezone_radiusMetres around the HQ guard where no robbery can start1.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:

ItemCash
gg_atmbag$100
gg_bankbag$300
gg_privatecrate$750

cfg.robbery.open_items sets what a bag holds when a player uses it:

Itemblack_moneyInk chanceBonus chance
gg_atmbag200 to 30030%100%
gg_bankbag400 to 70025%10%
gg_privatecrate800 to 1,30020%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:

SettingWhat it doesDefault
required_itemItem needed to startgg_thermite
remove_on_failTake the item on a failed skill checkfalse
thermite_delaySeconds the thermite burns before the doors open20, 30, 40
item_rewardLoot itemgg_atmbag, gg_bankbag, gg_privatecrate
skill_checkThe 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.

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

Lua
hooks.canOpenMenu = function()
    local hour = GetClockHours()
    return hour >= 6 and hour < 22
end

Support

Questions before you buy?

Ask the team in our Discord before you pay a thing. Setup help, update notes, giveaways and discount codes, all in one place.

831 online now2,241 members