Configuration
Configuration is split into two files (same pattern as other civ scripts):
| File | Loaded on | Purpose |
|---|---|---|
config/sh_config.lua | Client + server | Gameplay, doors, features, garage, staff, real estate |
config/sv_config.lua | Server only | Staff ACE and search radius |
config/shells_defaults.lua | Shared | Shell defaults / categories |
Restart the resource after changes. Editable paths: Editable files.
Debug
Config.Debug = falseWhen true, housing uses lib.print.debug. Toggle at runtime with /housing_debug.
Doors — Config.Doorlock
Config.Doorlock = {
enabled = true,
openOnAccess = true,
namePrefix = "housing_loc",
maxDistance = 2.0,
hideUi = true,
holdOpen = true,
defaultHeading = 0.0,
autolock = false,
}| Option | Default | Description |
|---|---|---|
enabled | true | Sync exterior doors to ox_doorlock |
openOnAccess | true | With access, interact opens the door |
holdOpen | true | Keep door open while unlocked |
namePrefix | "housing_loc" | Door name prefix (housing_loc_403_door_1) |
Requires ox_doorlock before prp-housing-v2. Target options: Doors.
Features — Config.Features
Config.Features = {
apartments = true,
garages = true,
furnish = true,
openWorldFurnish = true,
warehouses = false,
perks = false,
electricity = true,
lockpick = false,
central = true,
}| Flag | When false |
|---|---|
apartments | No Lombank apartments / auto-assignment |
garages | Garage placement / detection off |
furnish | In-property furnishing off |
openWorldFurnish | Open world zones off |
warehouses | Warehouse storages / spoof item off |
lockpick | Door lockpick targets off (also Config.Lockpick.enabled) |
central | Housing Central disabled |
electricity | Furniture power drain, overload/repair, and live House Usage electricity off |
perks | Off |
Active electricity
Furniture electricity, overload, fridges, and temperature stubs are loaded when electricity = true. See Electricity & House Usage.
Electricity — Config.Electricity
Config.Electricity = {
defaultMax = 200,
upgradeCaps = {
ELECTRICITY_10 = 200,
ELECTRICITY_15 = 250,
ELECTRICITY_20 = 300,
},
minRep = 0,
repairJobs = {},
repairMinigame = {
name = "rythmClick",
options = { targetCount = 3 },
},
canRepair = function(src) end,
}| Option | Description |
|---|---|
defaultMax | Fallback kWh cap when the property has no ELECTRICITY setting |
upgradeCaps | Max kWh unlocked by electricity upgrades (highest owned wins) |
minRep / repairJobs / canRepair | Who may run the repair minigame |
repairMinigame | bridge.minigames game name + options |
Full behaviour: Electricity.
Garage — Config.Garage
Config.Garage = {
System = "auto",
MaxDistanceFromHouse = 40.0,
InteractDistance = 5.0,
DetectOrder = {
"qb-garages", "jg-advancedgarages", "cd_garage",
"okokGarage", "rcore_garage", "zerio-garage", "RxGarages", "vms_garagesv2",
},
}Housing owns client interact zones; providers handle open/store only. Full provider table and placement flow: Garages.
Lockpick — Config.Lockpick
Config.Lockpick = {
enabled = false,
tiers = { 1, 2 },
}Also gated by Config.Features.lockpick via isHousingLockpickEnabled().
Staff — Config.HousingStaff
Config.HousingStaff = {
mode = "both", -- "both" | "job" | "admin"
jobs = {
{ job = "realestate", grade = 0, duty = true },
},
}mode | Who counts as housing staff |
|---|---|
both | Configured jobs and admins (default) |
job | Configured jobs only |
admin | Admins only (job ignored) |
Job id must match your framework job name as resolved by prp-bridge (config default: realestate).
Real estate — Config.RealEstate
Config.RealEstate = {
enabled = true,
marketAccess = "public", -- or "realtor"
maxImages = 10,
commissionPercent = 0.05,
vacantProceeds = "none",
bidDepositPercent = 0.1,
defaultBidAccess = "anyone",
marketCommand = "housingmarket",
marketItem = false,
rent = {
graceDays = 7,
checkMinutes = 30,
defaultFrequency = "WEEKLY",
},
item = "realtor_tablet",
openCommand = false,
radial = {
enabled = true,
id = "housing_realestate",
label = locale("REALTOR_RADIAL_OPEN"),
icon = "building",
},
grades = { --[[ see real-estate page ]] },
}| Option | Description |
|---|---|
marketAccess | "public" or "realtor" for who can open the market |
maxImages | Max banner/gallery URLs per property |
commissionPercent | Agent cut on mediated sales |
bidDepositPercent | Default deposit for offers/auctions |
defaultBidAccess | anyone or realtor_required |
marketCommand / marketItem | How players open the market |
rent | Grace days and check interval for unpaid eviction |
item | Usable item that opens the staff panel |
openCommand | Optional chat command (false to disable) |
radial | ox_lib radial while staff (job on duty / admin per mode) |
grades | Permission maps per job grade |
Details: Real estate, Market, Rent.
Admin — config/sv_config.lua
Config.Admin = {
permission = "group.admin",
searchRadius = 150.0,
}Gameplay globals
| Variable | Default | Description |
|---|---|---|
GarageDistance | 40.0 | Legacy alias used with max house distance |
DefaultKeyholders | 5 | Default keyholder limit |
Interior.ColorEntitySet | "wall_tint" | Wall colour entity set |
Interior.DefaultIndex | 1 | Default wall tint |
Access privileges — HousingCentral.Permissions
| Privilege | Description |
|---|---|
FURNISH | Place and remove furniture |
ACCESS | Manage keyholders |
UPGRADES | Buy upgrades |
MAINTENANCE | Pay / manage maintenance fee and payer |
STORAGE | Open storage |
INNER_DOOR | Inner doors |
GARAGE | Garage |
SETTINGS | Settings / projects |
Upgrades catalog: Upgrades.
Property radial — Config.Radial
Config.Radial = {
enabled = true,
id = "housing_property",
label = locale("HOUSING_CENTRAL_OPEN"),
icon = "house-laptop",
command = "housing_menu",
}Opens Housing Central while inside a property.
Property projects — Config.Projects
Config.Projects = {
enabled = true,
includeFurniture = false,
maxPerProperty = 10,
applyOnEnter = true,
command = "housing_project",
}Property storage — Config.PropertyStorage
Base slots/weight and upgrade multiplier for storage stashes. See Upgrades — Storage sizing.
Maintenance — Config.Maintenance
Config.Maintenance = {
enabled = true,
intervalDays = 7,
percent = 0.01,
amount = 500,
seizeAfterDays = 14,
checkMinutes = 30,
}| Option | Description |
|---|---|
enabled | Turn the fee system on/off |
intervalDays | Days between fees |
percent | If > 0, fee = floor(property_price * percent) |
amount | Flat fee when percent is 0 |
seizeAfterDays | Days overdue before ownership is cleared (0 = never) |
checkMinutes | How often the server tries auto-charge / seizure |
Money uses prp-bridge character bank (HousingBridge.chargeBank). UI picks a payer from owner + keyholders. See Housing Central — Maintenance.
Shells — Config.Shells
See Shells for pack format and options (baseOrigin, spacing, bucketOffset, packsDir, …).
IPL interiors — Config.Interiors
See IPL interiors for pack format and options (enabled, bucketOffset, packsDir).
Timecycles & wall colours
Timecycles, WallColors, and Tints in sh_config.lua feed settings / creator UI. Edit labels via locales.