Skip to content

Properties

Properties in the panel (and the in-game menu) lists the houses and apartments of your housing script: owner, location on the map, key holders, price and rent. The player card has a Properties tab with the houses a character owns or holds a key to. Everything works while the owner is offline.

ActionPermissionNotes
See the list and the player card tabproperties
Change owner, vacatepropertyOwnerKeys are reset unless you keep them.
Give and take keyspropertyKeysOnly scripts that store key holders.
DeletepropertyDeleteBacked up first, see below.
Restore a deleted or vacated propertypropertyRestoreProperties → Deleted.
Go to the door (in game)gotoProperty

Every action is written to the Properties log channel.

ResourceOwnerKeysNotes
ps-housingproperties.owner_citizenidhas_access (live)Reads owners at start: owner changes show after a restart.
qbx_propertiesproperties.ownerkeyholdersReads the database on every action.
qs-housingplayer_houses (through its exports)—Owner changes go through the script, live. Delete in game.
qb-housesplayer_houses.citizenidkeyholdersReads owners at start: changes show after a restart.
qb-apartmentsapartments.citizenid—One apartment per character; delete instead of vacate.
esx_property 1.xowned_properties.owner—
propertys (Creative vRP)propertys.Passport—Access is the key item; location comes from the config.
origen_housingorigen_housing.citizenid—Changes show after a restart.
ox_propertyox_property.owner—Changes show after a restart.
ND_Propertiesnd_properties.owneraccess

Not supported: esx_property 2.x (keeps properties in properties.json), bcs_housing and loaf_housing (ownership tables are not published; map them yourself if you know them) and ND_Property (properties belong to groups). The Properties page says which one it found.

Delete backs up every row of the property (and rows linked to it by foreign keys) and deletes them in one database transaction; nothing is deleted if the backup fails. When owners live in their own table (qb-houses, esx_property), Vacate backs up and removes the ownership row the same way. Backups stay 30 days in your database (fiveops_deleted_properties) and come back from Properties → Deleted. A restore is refused if the property was rebuilt or someone else owns it now.

Deleting a character takes its houses with it (the owner rows of the detected housing script go into the character backup) and restoring the character brings them back.

editable/framework.lua
EditableServer.propertyTables = {
custom = true,
fn = function()
return {
name = 'my_housing',
table = 'houses', id = 'id', label = 'label',
coords = 'entrance', -- JSON { "x", "y", "z" }; coordsKey = 'enter' for a nested key
price = 'price',
owner = 'owner', -- character id: citizenid / users.identifier / charId / charid / user_id
keys = 'keyholders', -- JSON list of character ids (keyField for a list of objects)
}
end,
}

When owners live in their own table, use ownership = { table, property, owner, keys?, license? } instead of owner/keys. Return a list of tables for several scripts. While the entry is on, built-in detection is off.