Configuration
Where gg_boosting's settings live and the ones server owners change most.
Every setting is in a plain Lua file inside gg_boosting. Restart gg_boosting after you change one.
| File | What it holds |
|---|---|
utility.lua | Notifications, progress bar, bridge overrides, admins |
config/shared/general.lua | Tablet seller, store items, store pickup, vehicle classes and rewards |
config/shared/settings.lua | Gameplay, contracts, VIN scratch, market, popup, webhook |
config/shared/tasks.lua | Which tasks run for each class, their items, skill checks, dispatch and locations |
config/shared/player.lua | Level curve and level buffs |
config/lang.lua | Every text the players see |
base/core/open/server/hooks.lua | Your own code when a boost finishes. See Exports and events. |
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. | "" |
admins | Licenses that get the Admin page, on top of framework admins | Two example entries |
debugMode | Prints debug lines in the console | false |
Tablet, store and starting data
In config/shared/general.lua:
| Setting | What it does | Default |
|---|---|---|
cfg.ped_purchase_tablet.enabled | Spawns the tablet seller | true |
cfg.ped_purchase_tablet.coord | Where the seller stands | vector4(-145.5, -1430.14, 30.92, 302.7) |
cfg.ped_purchase_tablet.tablet_cost | Tablet price | 5000 |
cfg.ped_purchase_tablet.payment_type | Account the price is taken from | 'cash' |
cfg.store.pickup.coord | Where players collect Store orders | vector4(309.47, -2861.61, 6.16, 89.4) |
cfg.store.inventory | Store items: XNT price range, required level and stock range | See the file |
cfg.starting_data.contracts | Contracts a new player gets | 3 |
Vehicle classes
cfg.vehicles.classes in config/shared/general.lua has one entry per class, S+ to D.
| Key | What it does |
|---|---|
payout | XNT range for the boost, split with the group |
rep | Reputation range, not split |
class_timer | Hours an unstarted contract lasts |
unlock_requirements.required_level | Level needed to get this class (S+ 45, S 35, A+ 30, A 20, B+ 15, B 12, C+ 8, C 5, D+ 3, D 1) |
unlock_requirements.chance_weight | How often this class shows up in Unlocks |
police_required | Police needed to start (S+ and S: 2, others 0) |
rewards.cash | Chance and amount of bonus cash on delivery |
rewards.items | Bonus items with chance and count |
To pay dirty money instead of cash, set the cash chance to 0 in every class and add your dirty money item. Use the item name your inventory has.
rewards = {
cash = {chance = 0, count = {min = 250, max = 500}},
items = {
{item = "black_money", chance = 100, count = {min = 500, max = 1000}},
{item = "lockpick", chance = 50, count = {min = 1, max = 1}},
},
},
Gameplay and contracts
In config/shared/settings.lua:
| Setting | What it does | Default |
|---|---|---|
cfg.settings.ui.primary_color | Tablet accent color | 'rgb(11, 250, 196)' |
cfg.settings.currency.boosting | Name of the boosting currency | "XNT" |
gameplay.car_spawn_healthy | Contract cars spawn with full fuel and health | true |
gameplay.stop_vehicle_givekey | Give keys after the fleeing driver is stopped. Turn on if your keys script does not give keys from dead NPCs. | false |
gameplay.contract_timer | Minutes a started contract runs before the car is deleted | 60 |
gameplay.police_onduty | Count only on-duty police | false |
gameplay.police_jobs | Jobs that count as police | police, sheriff |
gameplay.delete_item | Which task items are used up | Rattle can, jammer and plate: true. Scrambler and wire cutters: false |
contracts.allow_transfers | Players can send contracts to another alias | true |
contracts.transfer_fee | XNT per transfer, 0 for free | 5 |
contracts.split_payout | Split the XNT payout across the group | true |
contracts.vin_scratch | Allow VIN scratch boosts | true |
contracts.vin_scratch_level_req | Level needed for a VIN scratch | 25 |
contracts.vin_scratch_cost | VIN scratch price as a percent of the payout, paid in XNT | 300 |
vinscratch.total_vinscratch_daily | VIN scratches allowed on the whole server per day | 25 |
vinscratch.player_vinscratch_limit | VIN scratches per player per period | 1 |
vinscratch.player_reset_time | Length of that period in days | 7 |
unlocks.refresh_time | Minutes between free contracts in Unlocks | 60 |
store.restock_time | Minutes between Store restocks | 120 |
popup.keybind | Key that shows or hides the task popup | "J" |
popup.location | Side of the screen for the popup: left or right | 'left' |
webhooks.job_finish | Discord webhook URL for finished boosts | "" |
Market
| Setting | What it does | Default |
|---|---|---|
market.user_sell_limit | Contracts one player can list | 4 |
market.sell_time | Minutes a listing stays up | 120 |
market.min_contract_time_required | Minutes a contract must have left to be listed | 180 |
market.min_vehicle_sell_value, max_vehicle_sell_value | Price limits as a percent of the payout | 35, 100 |
market.require_level_class | Buyers need the level for the class | true |
market_automation.enabled | The server lists contracts on its own | true |
market_automation.interval | Minutes between server listings | 5 |
market_automation.max_server_listings | Most server listings at once | 50 |
Tasks
In config/shared/tasks.lua, each task has enabled, the classes it can appear in and the items it needs. cfg.tasks.settings holds each task's dispatch alert and timing. For example, the plate swap takes 60 seconds:
plate_swap = {
-- dispatch = { ... },
progress = { duration = 60 },
},
