Skip to content

Configuration

Configuration is split into two files (same pattern as other civ scripts):

FileLoaded onPurpose
config/sh_config.luaClient + serverGameplay, doors, features, garage, staff, real estate
config/sv_config.luaServer onlyStaff ACE and search radius
config/shells_defaults.luaSharedShell defaults / categories

Restart the resource after changes. Editable paths: Editable files.

Debug

lua
Config.Debug = false

When true, housing uses lib.print.debug. Toggle at runtime with /housing_debug.

Doors — Config.Doorlock

lua
Config.Doorlock = {
    enabled = true,
    openOnAccess = true,
    namePrefix = "housing_loc",
    maxDistance = 2.0,
    hideUi = true,
    holdOpen = true,
    defaultHeading = 0.0,
    autolock = false,
}
OptionDefaultDescription
enabledtrueSync exterior doors to ox_doorlock
openOnAccesstrueWith access, interact opens the door
holdOpentrueKeep 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

lua
Config.Features = {
    apartments = true,
    garages = true,
    furnish = true,
    openWorldFurnish = true,
    warehouses = false,
    perks = false,
    electricity = true,
    lockpick = false,
    central = true,
}
FlagWhen false
apartmentsNo Lombank apartments / auto-assignment
garagesGarage placement / detection off
furnishIn-property furnishing off
openWorldFurnishOpen world zones off
warehousesWarehouse storages / spoof item off
lockpickDoor lockpick targets off (also Config.Lockpick.enabled)
centralHousing Central disabled
electricityFurniture power drain, overload/repair, and live House Usage electricity off
perksOff

Active electricity

Furniture electricity, overload, fridges, and temperature stubs are loaded when electricity = true. See Electricity & House Usage.

Electricity — Config.Electricity

lua
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,
}
OptionDescription
defaultMaxFallback kWh cap when the property has no ELECTRICITY setting
upgradeCapsMax kWh unlocked by electricity upgrades (highest owned wins)
minRep / repairJobs / canRepairWho may run the repair minigame
repairMinigamebridge.minigames game name + options

Full behaviour: Electricity.

Garage — Config.Garage

lua
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

lua
Config.Lockpick = {
    enabled = false,
    tiers = { 1, 2 },
}

Also gated by Config.Features.lockpick via isHousingLockpickEnabled().

Staff — Config.HousingStaff

lua
Config.HousingStaff = {
    mode = "both", -- "both" | "job" | "admin"
    jobs = {
        { job = "realestate", grade = 0, duty = true },
    },
}
modeWho counts as housing staff
bothConfigured jobs and admins (default)
jobConfigured jobs only
adminAdmins only (job ignored)

Job id must match your framework job name as resolved by prp-bridge (config default: realestate).

Real estate — Config.RealEstate

lua
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 ]] },
}
OptionDescription
marketAccess"public" or "realtor" for who can open the market
maxImagesMax banner/gallery URLs per property
commissionPercentAgent cut on mediated sales
bidDepositPercentDefault deposit for offers/auctions
defaultBidAccessanyone or realtor_required
marketCommand / marketItemHow players open the market
rentGrace days and check interval for unpaid eviction
itemUsable item that opens the staff panel
openCommandOptional chat command (false to disable)
radialox_lib radial while staff (job on duty / admin per mode)
gradesPermission maps per job grade

Details: Real estate, Market, Rent.

Admin — config/sv_config.lua

lua
Config.Admin = {
    permission = "group.admin",
    searchRadius = 150.0,
}

Gameplay globals

VariableDefaultDescription
GarageDistance40.0Legacy alias used with max house distance
DefaultKeyholders5Default keyholder limit
Interior.ColorEntitySet"wall_tint"Wall colour entity set
Interior.DefaultIndex1Default wall tint

Access privileges — HousingCentral.Permissions

PrivilegeDescription
FURNISHPlace and remove furniture
ACCESSManage keyholders
UPGRADESBuy upgrades
MAINTENANCEPay / manage maintenance fee and payer
STORAGEOpen storage
INNER_DOORInner doors
GARAGEGarage
SETTINGSSettings / projects

Upgrades catalog: Upgrades.

Property radial — Config.Radial

lua
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

lua
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

lua
Config.Maintenance = {
    enabled = true,
    intervalDays = 7,
    percent = 0.01,
    amount = 500,
    seizeAfterDays = 14,
    checkMinutes = 30,
}
OptionDescription
enabledTurn the fee system on/off
intervalDaysDays between fees
percentIf > 0, fee = floor(property_price * percent)
amountFlat fee when percent is 0
seizeAfterDaysDays overdue before ownership is cleared (0 = never)
checkMinutesHow 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.