Admin & Developer Tools
Reference for all admin commands and developer utilities in oxide-postaljob
Postal Builder
The postal builder is a single context menu that combines location creation, prop scanning, and config export into one unified tool. It replaces all previous coordinate builder and prop scanner commands.
Opening the Builder
/postalbuilder
Requires the admin.postaljob ACE permission. Opens a context menu with all builder tools.
Menu Options
| Option | Description |
|---|---|
| New Location | Creates a new location at your current position via input dialog |
| Set Vehicle Spawn | Captures current position as vehicle spawn point |
| Add Pickup Point | Captures current position as a pallet pickup point |
| Add Delivery Zone | Opens input dialog for label + min level, captures position. Label is auto-suggested from the GTA street name |
| Scan Post Boxes | Prompts for a scan radius, scans nearby GTA props for post boxes, shows results submenu with individual and batch add options |
| Scan Letterboxes | Prompts for a scan radius, scans nearby GTA props for letterboxes, shows results submenu with individual and batch add options |
| View Last Scan Results | Reopens the results submenu from the most recent scan without re-scanning |
| Clear Scan Markers | Removes all scan markers and blips from the world |
| Undo Last Action | Reverses the most recent action (up to 20 actions) |
| View Status | Shows current location progress and what's missing |
| Finish Location | Validates and saves the current location to the locations list |
| Export All | Serializes all finished locations to Lua and saves to file |
| Import Config | Imports existing Config.Locations entries into the builder's finished locations list for editing |
| Edit Location | Opens a finished location for re-editing (moves it back to active) |
| Test Prop | Toggles mail bag prop attachment on/off for testing |
Workflow
- Run
/postalbuilderto open the menu - Click New Location and enter a name — this captures your position as the depot coords
- Move to the van spawn point and click Set Vehicle Spawn
- Move to each pallet pickup point and click Add Pickup Point (at least 1 required)
- Use Scan Post Boxes and Scan Letterboxes to find nearby GTA props — select individual results or use Add All Remaining for batch add
- Move to each delivery address and click Add Delivery Zone — label is auto-suggested from the GTA street name
- Click View Status to check progress and see what's missing
- Click Finish Location when all required fields are set
- Repeat steps 2-8 for additional locations
- Use Edit Location to reopen any finished location for changes
- Click Export All to save all locations to
exported_locations.lua
To modify existing depot configurations, use Import Config to load the current Config.Locations entries into the builder, then Edit Location to modify individual locations.
Validation Rules
A location requires the following to be considered complete:
- Name (set on creation)
- Coords + heading (set on creation)
- Vehicle spawn (required)
- At least 1 pickup point (required)
- At least 1 delivery zone (required)
- Post boxes and letterboxes are optional
Scan Results
When scanning for props, the builder prompts for a scan radius (default 100m, range 10-500m) and then displays results as a submenu sorted by distance. Each result shows:
- Prop model name and distance
- Coordinates in the description
- Clicking a result adds it directly to the current location
The results submenu also provides an Add All Remaining option for batch-adding all unselected scan results at once. Already-added entries are marked with a green checkmark and disabled.
For letterboxes, after selecting a prop individually, an input dialog asks for a label and minimum level. The label is auto-suggested from the GTA street name with auto-incrementing suffixes (e.g., location.mirror_park_1, location.mirror_park_2). Batch-adding letterboxes prompts for a default minimum level and auto-names all entries using street labels.
For post boxes, clicking a result or using batch add directly captures the coordinates and heading.
Scanned props are marked with green pillar markers and map blips. Use Clear Scan Markers to remove them. Use View Last Scan Results to reopen a previous scan submenu without re-scanning.
Export Format
The export generates a complete Config.Locations block covering all 7 fields:
Config.Locations = {
{
name = 'GoPostal Depot',
coords = vector3(133.59, 96.31, 83.51),
heading = 153.7,
vehicleSpawn = vector4(70.17, 120.21, 79.16, 158.7),
pickupPoints = {
vector4(60.36, 129.25, 78.22, 245.1),
},
postBoxes = {
vector4(-238.10, 106.99, 68.66, 265.0),
},
letterBoxes = {
{ coords = vector3(924.97, -488.54, 58.69), minLevel = 1, label = 'location.mirror_park_1' },
},
deliveryZones = {
{ coords = vector3(254.99, -1013.25, 29.26), minLevel = 1, label = 'location.strawberry_ave' },
},
},
}
Copy this output into shared/config/locations.lua, updating locale keys as needed.
Permissions
ACE Permission Setup
The /postalbuilder command requires the admin.postaljob ACE permission. Add the following to your server.cfg:
add_ace group.admin admin.postaljob allow
Or for specific players:
add_principal identifier.license:xxxx group.admin
Progression Management
Player progression is stored in the postaljob_progression database table. To manage progression:
Reset a Player's Progression
UPDATE postaljob_progression
SET level = 1, total_deliveries = 0, daily_streak = 0, complaints = 0, timeout_until = NULL
WHERE char_id = ?;
Remove a Suspension
UPDATE postaljob_progression SET timeout_until = NULL WHERE char_id = ?;
Clear Complaints
UPDATE postaljob_progression SET complaints = 0 WHERE char_id = ?;
View a Player's Stats
SELECT * FROM postaljob_progression WHERE char_id = ?;