Configuration Reference
Complete reference for oxide-newspaperjob configuration files.
Every setting in oxide-newspaperjob, explained.
All settings live in plain text files you can open with any text editor (Notepad++, VS Code, etc.). After changing a setting, restart the resource (restart oxide-newspaperjob in the server console) for it to take effect.
Which File Has What
| File | What's in it |
|---|---|
shared/config.lua | The main switches: menu style, phone, depot slots |
shared/config/job.lua | Pay rates, complaints, timers, throwing, paper supply |
shared/config/levels.lua | The five job levels and what each unlocks |
shared/config/locations.lua | The depots and every deliverable house |
shared/config/vehicles.lua | The delivery bike |
shared/config/visuals.lua | The depot worker, map icons, and markers |
shared/config/outfits.lua | The carrier uniform |
shared/config/tutorials.lua | The first-time player tips |
Main Settings
File: shared/config.lua
| Setting | Default | What it does |
|---|---|---|
Config.Debug | false | Prints extra [oxide-newspaperjob] messages to the console — only useful when troubleshooting |
Config.menuStyle | 'nui' | 'nui' for the full shift menu with camera, 'menu' for a plain context menu |
Config.usePhone | true | Sends shift emails (welcome, incidents, pay stub) to the player's phone |
Config.shiftSummary | 'text' | What the player sees on clock-out: 'nui' for a pop-up window, 'text' for a notification |
Config.MaxSlotsPerLocation | 3 | How many players can work out of one depot at the same time |
Config.Item.weapon | 'weapon_newspaper' | The inventory item used as the throwable newspaper |
Pay
File: shared/config/job.lua, Config.Payment
| Setting | Default | What it does |
|---|---|---|
basePay | 12 | Flat pay for every delivered house, in dollars |
distanceBonusPerUnit | 0.20 | Extra pay per meter between the depot and the house — farther houses pay more |
speedBonusAmount | 8 | Flat bonus for finishing a route inside the time limit |
streakBonusPerDay | 5 | Extra pay per house for each day of the player's daily streak |
maxStreakDays | 7 | The streak stops growing past this many days |
minDeliveryTimePerDistanceUnit | 0.01 | Anti-cheat: minimum seconds a delivery must take, per meter of distance |
absoluteMinDeliveryTime | 2 | Anti-cheat: no delivery can ever count in under this many seconds |
gasFeePercent | 0.0 | Fuel deduction from the shift payout — zero, it's a bicycle |
taxPercent | 0.10 | Tax taken off the shift payout (0.10 = 10%) |
bikeLostFine | 75 | The fine charged when the bike is lost or destroyed |
payoutAccount | 'bank' | Where the shift payout goes |
tipAccount | 'cash' | Where tips go (paid instantly at the house) |
fineAccount | 'cash' | Where the bike fine is taken from |
Complaints
File: shared/config/job.lua, Config.Complaints
| Setting | Default | What it does |
|---|---|---|
maxComplaints | 3 | Complaints needed to trigger a suspension |
timeoutMinutes | 30 | How long the suspension lasts |
bikeLostPenalty | 1 | Complaints added for losing the bike |
deathPenalty | 1 | Complaints added for dying on shift |
outOfAmmoPenalty | 1 | Complaints added for running out of papers mid-route |
decayPerDelivery | 1 | Complaints removed for each completed delivery |
Route Timer
File: shared/config/job.lua, Config.Timer
| Setting | Default | What it does |
|---|---|---|
baseTime | 300 | Seconds every route gets, regardless of size |
timePerHouse | 30 | Extra seconds added per house on the route |
expiredPenalty | 0.85 | If the timer runs out, route earnings are multiplied by this (0.85 = players keep 85%) |
Throwing
File: shared/config/job.lua, Config.Throw
| Setting | Default | What it does |
|---|---|---|
hitRadius | 8.0 | How close (in meters) a paper must land to the target to count — each level sets its own, this is the fallback |
pollInterval | 50 | How often (milliseconds) the script checks where a thrown paper landed |
maxPollTime | 8000 | How long (milliseconds) it keeps checking before calling it a miss |
weaponHash | WEAPON_ACIDPACKAGE | The real GTA throwable used under the hood — leave this alone |
minThrowCooldown | 500 | Minimum milliseconds between two throws being counted |
maxPlayerToTargetDist | 80.0 | Anti-cheat: how far the player can stand from the house and still score a hit |
Paper Supply
File: shared/config/job.lua, Config.Supply
| Setting | Default | What it does |
|---|---|---|
spareAmmo | 5 | Spare papers given on top of one-per-house |
bonusAmmoPerLevel | 2 | Extra spares for each job level above 1 |
Pickup Animation
File: shared/config/job.lua, Config.Animations.pickup — the short packing animation played at the depot before a route starts.
| Setting | Default | What it does |
|---|---|---|
dict | 'anim@heists@box_carry@' | Animation set |
anim | 'idle' | Animation within that set |
duration | 3000 | How long it plays, in milliseconds |
Newspaper Bag
File: shared/config/job.lua, Config.NewspaperBag — the bag prop shown on the player's back during a route.
| Setting | Default | What it does |
|---|---|---|
enabled | true | Show the bag or not |
model | 'xm3_p_xm3_m_bag_var22_arm_s' | Which prop to use |
bone | 24818 | Where on the body it attaches (the default is the upper back) |
offset | vec3(-0.30, -0.02, 0.0) | Fine-tunes the position |
rotation | vec3(0.0, 90.0, 180.0) | Fine-tunes the angle |
Levels
File: shared/config/levels.lua
Five levels ship by default, from Paper Carrier through Route Legend. Each entry in Config.Levels sets:
| Field | What it does |
|---|---|
title | The level's display name |
requiredDeliveries | Total lifetime deliveries needed to reach the level |
maxHouses | The biggest route the level can get |
hitRadius | How close throws must land, in meters — lower at higher levels |
tipChance | Odds of a tip per house (0.08 = 8%) |
tipRange | The smallest and largest possible tip |
payMultiplier | Multiplies the base + distance pay for every house |
You can add, remove, or re-tune levels freely — just keep requiredDeliveries increasing from one level to the next.
Depots and Houses
File: shared/config/locations.lua
The script ships with 2 depots and 80 delivery houses. Each depot entry contains:
| Field | What it does |
|---|---|
name | The depot's name, shown on the map and in the menu |
coords | Where the depot worker stands |
heading | Which way the worker faces |
vehicleSpawn | Where the BMX appears on clock-in |
menuCamera | Where the menu's camera sits and looks from |
deliveryZones | The list of houses this depot delivers to |
Each house in deliveryZones has:
| Field | What it does |
|---|---|
coords | The spot the paper must land near |
minLevel | The job level needed before this house shows up on routes |
label | The street name shown to the player |
Tip: don't edit this file by hand. The in-game builder (/newspaperbuilder) places depots and houses where you're standing and exports a ready-to-paste config. See Admin.
The Bike
File: shared/config/vehicles.lua, Config.Vehicle
| Setting | Default | What it does |
|---|---|---|
model | 'bmx' | The bike model |
primaryColor | { 15, 15, 15 } | Main color (red, green, blue values) |
secondaryColor | { 240, 230, 100 } | Accent color |
spawnDistance | 5.0 | How much clear space the spawn point needs |
bikeLostCheckInterval | 2000 | How often (milliseconds) the script checks whether the bike still exists and is nearby |
bikeLostMaxDistance | 300.0 | Walk farther than this from the bike (in meters) and it counts as abandoned |
livery | -1 | Paint job number, for replacement bike models that have them (the stock BMX has none) |
extras | nil | Optional vehicle extras to toggle, for replacement models |
Map Icons and the Depot Worker
File: shared/config/visuals.lua
| Setting | Default | What it does |
|---|---|---|
Config.NpcModel | 'a_m_m_business_01' | What the depot worker looks like |
Config.NpcScenario | 'WORLD_HUMAN_CLIPBOARD' | What the worker is doing (holding a clipboard) |
Config.Blip.enabled | true | Show depots on the map or not |
Config.Blip.sprite | 945 | The map icon |
Config.Blip.color | 5 | The icon color (yellow) |
Config.Blip.scale | 0.5 | The icon size |
Config.Blip.label | 'Newspaper Depot' | Fallback map name if a depot has no name |
Config.DeliveryMarker controls the marker drawn around the active house target — it only appears when Config.Debug is on, as a tuning aid:
| Setting | Default | What it does |
|---|---|---|
type | 28 | The marker style (28 = sphere) |
scale | vector3(1.0, 1.0, 1.0) | Sizes the marker relative to the level's hit radius — at 1.0 it shows exactly where throws will count |
color | yellow, semi-transparent | The marker color (red, green, blue, alpha values) |
bobUpAndDown | false | Makes the marker float up and down |
rotate | false | Makes the marker spin |
Config.Waypoints tunes the floating house indicator (the one shown by holding H): how high it floats, how it scales with distance, and how often it refreshes.
Uniforms
File: shared/config/outfits.lua
| Setting | Default | What it does |
|---|---|---|
Config.uniformsEnabled | false | Adds a uniform option to the shift menu |
Config.NewspaperOutfitMale and Config.NewspaperOutfitFemale define the outfits as lists of clothing component and prop values. The shipped values are placeholders — set your own before enabling uniforms.
Tutorials
File: shared/config/tutorials.lua
Nine first-time tips ship by default, keyed by moment (first_clockin, first_throw_hit, first_bike_lost, and so on). Each defines an icon and the title/body text keys. Entries can optionally set a screen position and a duration in seconds — when omitted, tips show top-right for 10 seconds.
The tip text itself lives in locales/en.json, so it can be translated.
Rate Limits
The server enforces short cooldowns on player actions to block spam. These are fixed in server/main.lua (not in a config file):
| Action | Cooldown |
|---|---|
| Completing a house | 500 ms |
| Requesting a route | 3000 ms |
| Clocking in | 2000 ms |
| Clocking out | 2000 ms |
| Reporting a lost bike | 10000 ms |
| Reporting empty papers | 5000 ms |