Configuration — ns-houserobbery
Everything is in config.lua (left readable by the escrow). Chances are 0.0 .. 1.0, times are in the unit the
key name says (Ms, Seconds, Minutes, Hours), money is whole dollars.
General
| Key | Default | Meaning |
|---|
Config.Framework | 'auto' | 'qbox' / 'qbcore' / 'esx' / 'standalone' |
Config.Locale | 'en' | 'en' or 'tr' (add locales/<code>.lua for more) |
Config.Debug | false | debug log + /hrcontract, /hrtest for admins |
Config.UseOxLib, Config.UseOxTarget, Config.Inventory | | which optional resources are used |
Config.Features.* | all true | Lockpick, Crowbar, Alarm, Residents, Safe, Pickups, Unplug, Crew, Fence, Progression, PoliceEntry, OpenHouse |
Config.Job | required = false | optional job lock for burglars |
Config.Police.jobs | { 'police' } | who counts as police (alerts, minimum on duty) |
Config.Police.minOnDuty | low 0, mid 1, high 2 | police on duty needed per house type |
Items
| Key | Default | Meaning |
|---|
Config.Items.lockpick / advancedLockpick | lockpick / advancedlockpick | door items (advanced is used first) |
Config.Items.crowbar | 'ns_hr_crowbar' | crowbar item, false = no crowbar |
Config.Items.listenUseEvent | 'lockpicks:UseLockpick' | server event other resources fire when a lockpick is used |
Config.Items.loot | | stolen goods: price (fence base price), big = true + prop for carried items, optional carry = { bone, offset, rotation } |
Config.LootPools | drawer, wardrobe, kitchen, desk, safe | weighted tables: { item, weight, min, max } |
Contracts
| Key | Default | Meaning |
|---|
hours | 21 → 5 | game hours the informant gives jobs (wraps midnight) |
travelMinutes | 30 | time to open the door before the job expires |
lootMinutes | 15 | time inside after the door is open (then the job ends: completed with loot, expired without) |
leaveDistance | 60.0 | the job also ends once the whole crew is out of the house, this many metres from the door and not carrying a big item (completed with loot, off without). false = only the door option and lootMinutes |
leaveCheckMs | 3000 | how often the server checks that while a house is open |
houseCooldownMinutes | 60 | a house is not given out again for this long |
playerCooldownMinutes | 20 | every member waits this long after a job ends (also after a cancel) |
informant, informantModel, informantDistance | | where the informant stands |
House types (Config.Tiers.low / mid / high)
| Key | low / mid / high | Meaning |
|---|
minLevel | 1 / 5 / 12 | burglar level that unlocks the type |
xp, safeXp | 20 / 40 / 75, 0 / 15 / 30 | XP for every member who went inside a completed job, extra XP for cracking the safe |
lockpick | pins 1 / 2 / 3 … | pins, toleranceDeg, falloffDeg, pickHealth, timeMs |
crowbarMs | 6000 / 7500 / 9000 | crowbar time |
panel | 3 / 4 / 5 digits | digits, attempts, timeMs, repeatChance (chance a digit repeats an earlier one) |
safe | 2 / 3 / 4 numbers | numbers, tolerance, falloff, timeMs, cash = { min, max } (timeMs is per attempt: the set numbers stay on the safe, a new attempt gets a new clock; the noise of every listen is what limits trying) |
alarmChance, safeChance | 0.25 / 0.6 / 0.9, 0 / 0.4 / 0.85 | chance a house has an armed alarm / a safe (needs the point) |
residents | 0–1 / 1–2 / 1–3 | sleeping residents (needs bed points) |
noiseWake | 70 / 60 / 50 | noise level that wakes them |
searchItems | 1–2 / 1–3 / 2–3 | loot picks per searched spot |
illegalMinLevel | 0 / 5 / 10 | ns-illegal career level that unlocks the type while ns-illegal runs (instead of minLevel) |
ns-illegal link (Config.Integrations)
| Key | Default | Meaning |
|---|
illegal | 'auto' | 'auto': while ns-illegal is started, its career level counts (tiers, minigame bonus), its house contacts give contracts and completed contracts are reported for career XP (house_robbery by house tier, house_safe for the safe cracker; the amounts live in ns-illegal). false: never. The burglar XP keeps counting either way. |
unregisteredLowOnly | true | linked, but the player has no Dark Tablet name: only the cheapest type and no career XP (false: their local burglar level counts) |
Lock, noise, residents
| Key | Default | Meaning |
|---|
Config.Lockpick | | maxDistance, minTurnMs, stressDamage, advanced = { toleranceMul, healthMul }, breakRemovesItem, retryCooldown |
Config.Noise.max / decayPerSecond | 100 / 3 | scale and how fast it calms down |
Config.Noise.sampleMs | 500 | how often the server measures moving burglars (only while a house is open) |
Config.Noise.walkSpeed / walkPerSecond | 0.5 / 0.5 | walking: almost silent |
Config.Noise.jogSpeed / jogPerSecond | 2.5 / 4 | the normal pace (W): quiet, adds up next to a bed |
Config.Noise.sprintSpeed / sprintPerSecond | 5.8 / 22 | sprinting (Shift): very loud |
Config.Noise.landingSpeed / landing | 4.0 / 8 | landing after a jump or a fall |
Config.Noise.near / far / farMul | 4.0 / 14.0 / 0.2 | a resident hears a noise fully up to near m, farMul of it from far m on |
Config.Noise.floorHeight / floorMul | 2.5 / 0.5 | a noise from another floor counts half |
Config.Noise.stirShare / settleShare / stirMul | 0.6 / 0.3 / 1.5 | a sleeper stirs at 60 % of the tier's noiseWake, falls asleep again below 30 %, hears 1.5x while stirring |
Config.Noise.wakeShout | 45 | noise a resident makes at their bed when they wake up |
Config.Noise.safeProbe / panelWrong / pickupDrop / crowbarEntry | 3 / 5 / 15 / 35 | noise per action |
Config.Residents.behaviour[tier] | | weights of flee, call, fight |
Config.Residents.weaponChance[tier], weapons, models | | armed residents and their looks |
Config.Residents.watchMs | 500 | client: how often a player inside checks the resident peds it shows (only inside) |
Config.Alarm.siren | true | a triggered alarm sounds until the job ends (false = silent: only the police alert and the LED) |
Config.Alarm.volume | 0.6 | siren volume inside the house (0..1); outside it fades with the distance to the door |
Config.Alarm.doorRadius | 35.0 | metres around the street door where players outside hear it |
Config.Alarm.wakeNoise | 100 | the siren's noise, heard in the whole house: 100 (Config.Noise.max) wakes everyone, 0 nobody |
Config.Alarm.checkMs | 1500 | how often the server looks for players near a sounding door (only while one sounds) |
Police reports
| Key | Default | Meaning |
|---|
Config.Dispatch.provider | 'auto' | ps-dispatch, cd_dispatch, rcore_dispatch, core_dispatch, builtin, custom, none |
witness.lockpick[tier] / witness.crowbar[tier] | 0.05–0.15 / 0.4–0.6 | a neighbour sees the break-in |
alarm | 1.0 | chance the silent alarm reaches the police |
resident[behaviour] | flee 1, call 1, fight 0.5 | chance a woken resident calls (once per house) |
alertOffset, alertBlipSeconds | 15–50 m, 90 | police get the area, not the door |
custom | | function(coords, kind, message) return true end with provider = 'custom' |
Once a house is reported, on-duty Config.Instance.serviceJobs see its door (Features.PoliceEntry).
With Features.OpenHouse anyone may walk into a house whose door a crew has opened. Guests keep what they find
(search, safe, big items) but get no XP, no share of the job and no ns-illegal career XP. Set it to false to keep
houses for the crew (and the police) only.
Safe, search, big items
| Key | Default | Meaning |
|---|
Config.Safe | minProbeMs 400, cashAccount 'cash', pool 'safe' | listen rate, where safe cash goes, loot table |
Config.Search.timeMs[type] | 60000–75000 | the spot types (drawer, wardrobe, kitchen, desk) and how long the search window may stay open |
Config.Search.quietMs[type] / rushNoise[type] | 3000–4000 / 12–22 | taking something sooner than quietMs after opening is a rush and makes rushNoise |
Config.Search.minTakeGapMs | 300 | time between two items taken |
Config.Search.noise | creak 6, slam 12, rattle 5, clink 8, drop 10, paper 1, lid 8 | noise of fast moves in the search window (× how fast, 0..1) |
Config.Search.noiseCapPerOpen / maxPulses | 60 / 16 | most noise one opening can add / noise reports per message |
Config.Search.minMsShare | 0.85 | the crowbar: the server accepts it after this share of crowbarMs |
Config.Pickups | | loadDistance, pickupDistance, loadControl (E), dropControl (X), carry |
Config.Pickups.dropReach | 1.5 | metres: a dropped item lands on the floor this close in front of the player |
Config.Unplug.rigs[item] | TV, microwave, speaker, PC, painting | big items with cables: scene (tv, microwave, speaker, pc, painting), always cables, extraCount min..max more from extra. An item without a rig is taken at once |
Config.Unplug.cables[kind] | how, quietMs 700–2000 | how: pull / latch (press the tab first) / screw (turn it loose first) / lift (off a hook); a cable pulled sooner than quietMs after the previous one is a rush |
Config.Unplug.timeMs / rushNoise / minPullGapMs | 45000 / 8 / 250 | how long the window may stay open / noise of a rushed cable / time between two cables |
Config.Unplug.noise | yank 10, rattle 6, clatter 8, scrape 3 | noise of fast moves in the unplug window (× how fast, 0..1); clatter = pulling another device's plug |
Config.Unplug.noiseCapPerOpen / maxPulses | 45 / 16 | most noise one opening can add / noise reports per message |
Editor (/hredit)
| Key | Default | Meaning |
|---|
Config.Editor.range | 40.0 | metres: points must stay this close to the interior entry (the camera may fly 5 m further) |
Config.Editor.camera | fov 60, speed 3.0, fast 4.0, slow 0.25, look 0.25 | free camera: field of view, m/s, Shift / Alt factors, degrees per pixel |
Config.Editor.models[item / kind] | TVs, microwaves, paintings, speakers, PCs, keypads, safes | prop choices shown in the editor per big item (ns_hr_tv ...) and for panel, safe, search; any other model name can be typed in |
Fence
| Key | Default | Meaning |
|---|
locations | 3 examples | where the buyer may stand (vector4) |
hours | 22 → 6 | game hours he is there |
rotateHours | 6 | real hours between moves (prices change with it) |
variance | 0.15 | prices ±15 % around Config.Items.loot[item].price |
dailyLimit | 25000 | money per character per real day (server date, kept in the database across restarts), 0 = no limit |
account, hintMinutes, model, distance | | payout account, GPS hint time after a job |
Crew, progression, instance, clock
| Key | Default | Meaning |
|---|
Config.Crew | maxSize 4, inviteSeconds 30, inviteDistance 5.0 | |
Config.Progression | xpPerLevel 100, maxLevel 30, maxBonusLevels 20 | + per-level minigame help: toleranceDegPerLevel, panelMsPerLevel, safeTolerancePerLevel |
Config.Instance.bucketBase | 7300 | routing buckets bucketBase + n are used for open houses |
Config.Instance.serviceJobs | police, ambulance | may enter a reported house |
Config.Instance.fallbackSpawn | Legion Square | crash recovery when a house no longer exists |
Config.Clock.provider | 'auto' | 'auto' / 'renewed' / 'globalstate' / 'real' |
Interiors and houses
Config.Interiors.<name> = { tier, entry = vector4, search = { { coords, type } }, pickups = { { coords, heading, item } }, panel = {}, safe = {}, beds = {} }; every point but a bed may add model = '<prop>' (spawned there
during a job). Place and move points in game with the editor, /hredit (see INSTALLATION): its changes are saved
in the database and override the config entries, the file itself is never written. Config.Houses =
{ key, tier, interior, door = vector4 }; more with /hrhouse add.
Look and feel
Config.Anims (lockpick, crowbar, search, panel, safe, carry, unplug, sleep, stir, phone), Config.Blips, Config.Ui
(volume, showLevel), Config.Notifications, Config.Target.