Admin & Developer Tools

Commands, the /postaljob settings editor, the in-game location builder, and managing player progression in oxide-postaljob.

Commands, the live settings editor, the in-game location builder, and how to manage player progression.

Commands

Everything lives under one command: /postaljob. Typing /postaljob in chat shows the available subcommands as suggestions; running it with no subcommand shows a usage hint.

CommandWhat it doesWho can use it
/postaljob settingsOpens the in-game settings editor. Changes save to the database and apply instantly, no restart needed (see How Settings Work)Admins
/postaljob tutorialsTurns the first-time tutorial prompts on or offAnyone (affects only themselves)
/postaljob tutorialresetMakes all tutorial prompts show againAnyone (affects only themselves)
/postalbuilderOpens the in-game location builderAdmins

The older /postaltutorials and /postaltutorialreset commands still work and do the same as /postaljob tutorials and /postaljob tutorialreset.

Keybind

KeyWhat it does
H (hold)Shows a floating marker over the current delivery address, with a live distance readout

Players can rebind this in GTA's settings under Key Bindings → FiveM.

The Settings Editor

/postaljob settings opens a live editor for nearly every setting: pay, levels, timers, crew, complaints, the van, depots (with in-world placement previews), NPCs and blips, delivery markers, uniforms, props, animations, model replacements and tutorials. Changes save to your database and apply instantly for everyone — nothing needs a restart.

Settings are grouped in the sidebar:

CategorySections
CoreGeneral, Crew, Complaints
EconomyPayment, Progression, Tasks & Dispatch (delivery timer, cancelling a round)
VehiclesVehicle
WorldLocations (the depots), NPCs & Blips, Scene & Effects
PresentationUniforms, Props & Animations (including the mailbox models the builder scans for), Compatibility (model replacements), Tutorials

How it works:

  • Basic and Advanced tabs keep the everyday settings upfront; a search box finds any setting by name.
  • Edited fields are marked changed, and a counter shows how many unsaved changes you have. Nothing is stored until you press Save Changes.
  • Values are checked before saving. A bad value is rejected with a reason, and the field is highlighted.
  • If a setting can't be saved to the database, the editor says so and the old value stays in use. A reset that fails shows a message too.
  • Every setting has a Reset to default button that puts it back to the value from the config files.
  • Logging out with the editor open closes it.
  • The editor's interface text (buttons, badges, and messages) comes from locales/en.json, so it can be translated.

Editing depots

Each depot in Depots (under Locations) has a Name, the Clerk spot where the supervisor stands, his Facing, and the Van spawn. Positions have a Place in world button: the menu hides and a see-through preview of the supervisor or the van follows your aim; left-click confirms, right-click or ESC cancels. Either way the menu comes back, with the coordinates filled in if you confirmed. Placing the supervisor also sets his facing. A teleport button next to Place in world jumps you to a stored position so you can check it.

When you save, supervisors and map blips move immediately. You can edit, reorder, or delete depots while players are on shift; deleting a depot ends the shifts running there and pays them (see Adding a second depot).

A depot's pickup points, post boxes, letterboxes, delivery zones, and menu camera aren't fields in the editor — the first four are captured in-world with /postalbuilder (below). See Adding a second depot for getting a builder export into a live server.

In-world placement needs an updated o-link. On an older version the Place in world button shows a notice asking you to update.

The Location Builder

/postalbuilder lets you create new depots — supervisor position, van spawn, pallet spots, post boxes, letterboxes, and delivery addresses — by walking around in-game instead of hand-typing coordinates.

Building a depot, step by step

Stand where the supervisor NPC should be and run /postalbuilder, then choose New Location and give it a name.
Stand where the van should spawn (facing the way it should face) and choose Set Vehicle Spawn.
Stand where the box pallet should appear and choose Add Pickup Point. You need at least one; add more for variety.
Use Scan Post Boxes and Scan Letterboxes to find real GTA mailbox props near you. Add results one at a time, or use Add All Remaining to grab the whole list at once (letterboxes get auto-generated street names and a level prompt). The scanner looks for the models in Config.PostBoxModels and Config.LetterBoxModels — add your map's props there if it replaces the stock mailboxes.
Walk to each house or business that should receive packages and choose Add Delivery Zone — the street name is suggested automatically.
Choose View Status at any point to see what's still missing.
Choose Finish Location when everything required is set.
Choose Export All.

Where the export goes

Export All writes a file called exported_locations.lua into the oxide-postaljob resource folder.

What you do with it depends on whether the resource has ever started on this server:

  • On a brand-new install that has never started, copy its contents into shared/config/locations.lua (replacing or adding to what's there). That file is the factory default, so it's imported into the database on the resource's first boot.
  • On a server that has already run this resource once, locations live in the database (see How Settings Work), so pasting the export into shared/config/locations.lua only changes the factory default. To load it, paste it over Config.Locations in that file, restart the resource, then open /postaljob settings and press Reset to default on Depots (under Locations). That replaces the whole stored depot list with the file's list, so use Import Config first to bring your current depots into the export too. Import Config and the export keep each depot's menuCamera, so the camera shots come along. The builder has no camera tool, so a depot you create in it has no menuCamera until you add one to the file.
  • A depot's name, Clerk spot, and van spawn can also be changed straight in /postaljob settings under Locations, with Place in world for the positions. Those changes save to the database and apply instantly, with no restart. Pickup points, post boxes, letterboxes, and delivery addresses are not in the editor, so they always go through the export.

Other builder tools

  • Import Config — loads the depots your server uses now (as saved in /postaljob settings) into the builder so you can edit existing depots
  • Edit Location — reopens a finished location for changes
  • Undo Last Action — steps backward, up to 20 actions
  • Test Prop — previews how the carried box looks on your character
  • View Last Scan Results / Clear Scan Markers — revisit or clean up the markers left by a prop scan

Permission

/postaljob settings and /postalbuilder are limited to admins. The check runs on the server, so it can't be bypassed — players without permission get a "No permission." chat message from the builder, or a "You do not have permission." notification from /postaljob settings. Refused attempts at the builder, its export, and the /postaljob settings editor are written to the server log: one line per player and action per minute, so someone repeating a command can't flood the log. The log also records whether each settings change came from the menu or another resource.

To make someone an admin, add them to the admin group and grant that group the admin ace in your server.cfg:

server.cfg
add_principal identifier.license:<their-license> group.admin
add_ace group.admin admin allow

If you already run QBCore, Qbox, or ESX admins, you don't need to do anything extra — your existing framework admins pass automatically.

Managing Player Progression

Player progress lives in the shared job_progression database table. Postal rows always have job = 'postal'. The char_id is the character's identifier from your framework (citizenid on QBCore/Qbox, the identifier on ESX).

Run these in your database tool, replacing ? with the character's id.

Look up a player

SELECT *
FROM job_progression
WHERE char_id = ?
  AND job = 'postal';

Reset a player completely

UPDATE job_progression
SET level = 1,
    total_count = 0,
    daily_streak = 0,
    last_activity_date = NULL,
    complaints = 0,
    timeout_until = NULL
WHERE char_id = ?
  AND job = 'postal';

Clear complaints

UPDATE job_progression
SET complaints = 0
WHERE char_id = ?
  AND job = 'postal';

Lift a suspension

UPDATE job_progression
SET timeout_until = NULL
WHERE char_id = ?
  AND job = 'postal';

Set a player's level

UPDATE job_progression
SET level = 3
WHERE char_id = ?
  AND job = 'postal';

If a player is online while you edit their row, they may need to relog for the change to apply — the server caches progression while a character is loaded.

Where the Money Moves

For reference when players ask about pay:

  • Shift pay is deposited as one lump sum at clock-out, into the account set by Config.Payment.payoutAccount (default: bank)
  • A player who disconnects or logs out on shift is paid at their next login instead, with a notification saying how much. Until then the pay waits in the job_pending_payouts table
  • The van-destroyed fine comes out of Config.Payment.fineAccount (default: cash) the moment the van is lost
  • If the resource is stopped or restarted while players are mid-shift, everyone is automatically clocked out and paid what they earned, except a shift lost to dying on shift, which pays nothing
  • Deleting a depot in /postaljob settings ends the shifts running there and pays them

Other resources can check whether a player is on shift, read or change settings, read the depots, a player's shift and their level, and show shift updates themselves, through the server exports — see the API Reference.

Next Steps