Configuration

Every config file is escrow-ignored, so you can edit it directly. Set these for your server before going live.

Config file reference

FileControls
config/shared/tiers.luaPer-tier loot, required tools, rewards, owner/pet/vehicle spawns, alarm, lasers, and all three minigames.
config/shared/properties.luaStreet properties per tier (coords + interior).
config/shared/interiors.lua, furniture.luaInterior definitions and furniture spots.
config/shared/trader.luaTrader ped placement/model and the sell list/prices.
config/shared/tablet.luaTablet branding (name, suffix, default accent) and open-method flags.
config/shared/skills.lua, milestones.luaStandalone XP curve and milestone rewards, used whenever jj-perks integration is off.
config/server/perks.luaenabled switches between jj-perks integration and standalone milestones mode.
config/server/dispatch.luaDispatch system (defaults to auto), enabled, codes, blip, loot-noise weights.
config/server/phone.luaPhone push notifications: enabled, system, the phone app, and per-event toggles.
config/server/access.luaAllowlist toggle and robbery cooldown (default 5 min).
config/server/groups.luaCrew system (tablet/phone), phoneResource, max crew, reward splits, leader bonus, lookout XP.
config/server/profile.luaStarting coins (default 1000) and the photo-host allowlist.
config/server/market.lua, queue.lua, contracts.lua, store.luaMarketplace, queue, contracts and the in-tablet store.
config/client/*.luaBlips, noise bar, progress bars, safe and UI visuals, minigame backends.

Required tools per tier

Door tools are defined per tier in config/shared/tiers.lua under each tier's requiredItems.list. By default every tier requires advancedlockpick.

advancedlockpick is a standard item in most economies. The store (config/server/store.lua) stocks both lockpick and advancedlockpick as examples — swap the required tool per tier if you want cheaper tiers to use a basic lockpick.

jj-perks pairing, or standalone milestones

Only applies if you install and enable jj-perks. Without it (or with enabled = false), house-robbery XP/leveling runs standalone via config/shared/milestones.lua. The tablet's Milestones tab replaces the perks progression view, and the admin tablet's Rank/XP controls write straight to the player's own profile.

Wired and enabled by default:

enabled  = true,
resource = 'jj-perks',
category = 'houserobbery',

Loot, contract and XP bonuses scale with the player's jjhr_r* perks. Tier gating: medium = 'jjhr_r3', garage/office = 'jjhr_r5', hard = 'jjhr_r6', extreme = 'jjhr_r10'. Edit perkBonuses / tierUnlocks to change what each perk grants.

Tablet customisation

Owner-side branding (resource name, suffix, default accent colour) lives in config/shared/tablet.lua. Each player sets their own accent on the Profile tab.

The same file has keybind and command blocks (both disabled by default) for extra ways to open the tablet, on top of the jj_robbery_tablet item.

Translation

Every player-facing string lives in locales/en.json (ox_lib format, flat snake_case keys). The file is escrow-ignored.

To translate, copy en.json to your language key and edit the values:

locales/en.json  ->  locales/de.json

ox_lib picks the file up from its own language setting (setr ox:locale "de"), falling back to en for any key you leave out. Keys with %s / %d are format slots — keep them, in the same order.

Database tables

TablePurpose
jj_houserobbery_profilesPer-character coins, XP, level, counters, tablet name/photo/accent.
jj_houserobbery_historyCompleted/failed contract log (tablet history feed).
jj_houserobbery_editorIn-game editor placements.
jj_houserobbery_marketContract marketplace listings.
jj_houserobbery_allowlistRobbery access gate.
jj_houserobbery_metaInternal key/value store.

Discord logging

Configured in config/server/logging.lua. Each event has its own webhook. Paste a URL to enable it, leave it "" to skip.

Events covered: break-ins, security disabled, completions, abandons, fence sales, marketplace list/buy, admin panel actions, runtime config edits, allowlist changes, and anti-exploit flags.

Run /jjlogs (admin/console) to post a test embed to every webhook you've set and list any still empty.