Before You Begin#
Before installing Housing Creator, make sure your server meets the requirements below. Four resources are hard dependencies: the script will not start without them.
Requirement | Status | Notes |
|---|---|---|
| Required | Database access. MariaDB is recommended: the SQL files use MariaDB syntax. |
| Required | Callbacks, zones, menus and progress bars. |
| Required | Loads the IPL interiors and their colour themes. |
| Required | Listing photos and furniture thumbnails. |
Game build 3095+ | Required | Set |
OneSync | Required | Every house interior runs in its own routing bucket. |
Framework | Optional | ESX, QBCore or Qbox — auto-detected. Standalone works with your own bridge. |
Inventory | Recommended | House stashes, furniture stashes and key items. 11 inventories are supported. |
Garage | Optional | Without a supported garage script, houses have no garage. |
Target | Optional |
|
3D sound | Optional |
|
Clothing, phone, banking, dispatch and weather scripts are picked up automatically too. The full list is on Integrations.
github.comReleases · overextended/oxmysqlMySQL resource for FXServer.github.comReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.github.comReleases · Bob74/bob74_iplIPL loader for FiveM: interiors, apartments and offices.github.comcitizenfx/screenshot-basicScreenshot resource for FiveM.Downloading Housing Creator#
After purchasing Housing Creator, the resource is linked to your CFX Portal account.
Sign in to the CFX Portal with the same account used during checkout, open Granted Assets and download the latest version.
After extracting the download, you should have the following folder:
[housing]/
├── qs-housing/ -- the script
│ ├── config/ -- what you may edit
│ ├── client/custom/ -- bridges to other resources (editable)
│ ├── server/custom/ -- bridges to other resources (editable)
│ ├── locales/ -- 41 languages
│ └── music/ -- tracks for the house music player
├── [shells]/ -- interior shells (maruii, navypanda, subhampro)
├── [props]/ -- housing-addons, housing-island, housing-sign
├── [dlc]/ -- optional furniture packs
├── [sql]/ -- database files
├── [img]/ -- inventory item images
├── qs-weed/ -- optional weed growing for houses
└── items.lua -- food and cooking itemsThe folder must be named
qs-housing. The interface paths depend on it, and a renamed copy prints You have renamed the script! and stops the server on purpose.
Installing the Resource#
Move the whole [housing] folder into your server's resources directory. [sql], [img] and items.lua are not resources — they are covered below.
Then open your server.cfg and list every resource explicitly, in this order:
sv_enforceGameBuild 3095
ensure oxmysql
ensure ox_lib
ensure bob74_ipl
ensure screenshot-basic
# Framework
ensure es_extended # or qb-core / qbx_core
# Everything Housing Creator should detect starts BEFORE it
ensure ox_inventory # your inventory
ensure ox_target # your target (optional)
ensure qs-advancedgarages # your garage, clothing, phone, sound...
# Housing assets
ensure housing-sign
ensure housing-addons
ensure housing-island
ensure maruii_shells
ensure navypanda_shells
ensure subhampro_exclusive_shells
# The script
ensure qs-housing
# These call qs-housing, so they start AFTER it
ensure qs-weed
ensure KawaiixQuasar_props
ensure KillstorexQuasar_props
ensure lunaticstudio_promo001
ensure murm_dec_packThe loading order matters. Integrations are detected once, when qs-housing starts, so an inventory or garage that starts later is ignored. The furniture packs in [dlc] add their items to the catalogue through qs-housing, so they must start after it. Avoid ensure [housing]: a folder ensure starts the packs too early.
Resource | What it streams |
|---|---|
| Cleaning robots, dust and garbage, air conditioner and fireplaces, changeable wall art and rugs, pet mess and litter tray, the smart home panel. Required for those features. |
| The "for sale" board outside houses. |
| 16 private islands you can place under a house. Optional. |
| The interior shells: Maruii, NavyPanda and the SubhamPRO exclusives. Do not rename their files. |
| Extra furniture packs (gaming setups, modern furniture, decor). Optional. |
The Database#
Import one schema file for your framework. Both files are safe to run again when you update: they only add what is missing. A few small columns are also added automatically at boot.
File | When to import it |
|---|---|
| ESX. Creates the tables and adds the |
| QBCore and Qbox. Creates the tables. The job is added in your framework (below). |
| Optional. 421 ready-made houses and apartments across Vinewood, Mirror Park, Sandy Shores, Paleto Bay, Richman, Banham Canyon and Chumash. |
| Optional. Only the 71 Mirror Park houses. They are already in |
| Deletes every housing table. Only for wiping an old or broken install before a clean start. |
Tables | Hold |
|---|---|
| Every house, and who owns, rents or holds keys to it. |
| Rent payments and utility bills. |
| Placed furniture, furniture added in game, furniture shops and their deliveries. |
| Physical key items. |
| Dust and garbage, garbage bags, and furniture stolen in robberies. |
| Exterior house models and islands, and weed plants for |
| Real estate agencies: members, ranks, listings, finances and statistics. |
The realestate job on QBCore and Qbox#
On ESX the job comes from esx.sql. On QBCore add it to qb-core/shared/jobs.lua (on Qbox, qbx_core/shared/jobs.lua) so real estate agents can open the creator:
['realestate'] = {
label = 'Real Estate',
defaultDuty = true,
offDutyPay = false,
grades = {
['0'] = { name = 'Agent', payment = 50 },
['1'] = { name = 'Senior Agent', payment = 75 },
['2'] = { name = 'Manager', payment = 100 },
['3'] = { name = 'Boss', isboss = true, payment = 150 },
},
},Registering the Items#
These items must exist in your inventory. Housing Creator registers them as usable; it does not create them.
Item | Config | Used for |
|---|---|---|
|
| A physical key. Must be unique (not stackable) so each key keeps its house. |
|
| Breaking into a house. |
|
| Police raids. |
|
| Food and water bowls for pets. |
Food items |
| 34 ingredients, dishes and delivery foods used by cooking and food delivery. |
Add to ox_inventory/data/items.lua. The key uses the export Housing Creator provides:
['housekey'] = {
label = 'House Key',
weight = 100,
stack = false,
close = true,
description = 'Your house key, do not lose it.',
server = { export = 'qs-housing.useHouseKey' },
},
['lockpick'] = { label = 'Lockpick', weight = 100, stack = true },
['police_stormram'] = { label = 'Police Storm Ram', weight = 800, stack = false },
['pet_food'] = { label = 'Pet Food', weight = 200, stack = true },
['pet_water'] = { label = 'Pet Water', weight = 200, stack = true },Add to qb-core/shared/items.lua (Qbox uses ox_inventory — see that tab):
['housekey'] = { name = 'housekey', label = 'House Key', weight = 100, type = 'item', image = 'housekey.png', unique = true, useable = true, shouldClose = true, description = 'Your house key, do not lose it.' },
['lockpick'] = { name = 'lockpick', label = 'Lockpick', weight = 100, type = 'item', image = 'lockpick.png', unique = false, useable = true, shouldClose = true, description = 'Opens doors that should stay closed.' },
['police_stormram'] = { name = 'police_stormram', label = 'Police Storm Ram', weight = 800, type = 'item', image = 'police_stormram.png', unique = false, useable = true, shouldClose = true, description = 'Opens any door, legally.' },
['pet_food'] = { name = 'pet_food', label = 'Pet Food', weight = 200, type = 'item', image = 'pet_food.png', unique = false, useable = true, shouldClose = true, description = 'Food for your companion.' },
['pet_water'] = { name = 'pet_water', label = 'Pet Water', weight = 200, type = 'item', image = 'pet_water.png', unique = false, useable = true, shouldClose = true, description = 'Water for your companion.' },Add to qs-inventory/shared/items.lua, in the same format as the root items.lua:
['housekey'] = {
['name'] = 'housekey',
['label'] = 'House Key',
['weight'] = 100,
['type'] = 'item',
['image'] = 'housekey.png',
['unique'] = true,
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Your house key, do not lose it.'
},
-- lockpick, police_stormram, pet_food and pet_water follow the same patternFor an ESX inventory that reads the items table:
INSERT IGNORE INTO `items` (`name`, `label`, `weight`) VALUES
('housekey', 'House Key', 1),
('lockpick', 'Lockpick', 1),
('police_stormram', 'Police Storm Ram', 1),
('pet_food', 'Pet Food', 1),
('pet_water', 'Pet Water', 1);The food and cooking items (bread, cheese, burger, pizza, coffee and the rest) are ready to paste from items.lua in the download. Their pictures, and most of the ones above, are in [img]: copy them into your inventory's image folder (for example ox_inventory/web/images/).
Eating the food is handled by your framework or consumables script, not by Housing Creator. If the fireplace fuel option is turned on, its wood items must exist too.
Claiming Creator Access#
The house creator (/realestate or F7) is where every property is built, so only admins and real estate jobs can open it. When a player is not allowed, the command silently does nothing.
Any job and grade listed in config/main.lua. false means every grade:
Config.CreatorJobs = {
{ job = 'realestate', grade = { 0, 1, 2, 3 } },
{ job = 'realestatejob', grade = false },
}With Config.AllowAdminsToCreateHouses = true (the default): ESX groups admin and superadmin; QBCore and Qbox god or admin permission, or the command ace.
Add the player's identifier to the Admins table at the top of server/custom/framework/standalone.lua:
Admins = {
['license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'] = true,
}Some tools are admin-only even for real estate jobs: teleporting to a house from the creator list and the furniture creator.
Configuring the Resource#
Houses, furniture shops and agencies are built in game. The files hold the rules of the economy and the features you switch on or off.
File | Contents |
|---|---|
| Language, money, fees, mortgage, rent, bills, keys, upgrades, keybinds, blips, shells, IPLs, cleaning, climate, robbery, deliveries and cooking. |
| The furniture catalogue: rooms, categories, every prop and its price. |
| Pets, their prices, needs, levels, fetch and mess. |
| Real estate agencies: the boss menu command, default rank permissions, stash size, minimum listing price. |
| Aura Voice, the house voice commands (not an AI): name, speech language, push-to-talk key. |
| The Discord webhook for logs. Server only. |
| Your FiveManage token, needed for listing photos and furniture thumbnails. Server only. |
The values worth reviewing first:
Config.Locale = 'en' -- or setr qs:locale "es" in server.cfg
Config.MoneyType = 'money' -- 'money' (cash) or 'bank'
Config.Society = 'esx_society' -- on QBCore: 'qb-management', 'qb-banking'... or 'none'
Config.UseTarget = false -- true for ox_target / qb-target
Config.MaxOwnedHouses = 15
Config.BankFee = function(price) return price / 100 * 10 end -- 10%
Config.BrokerFee = function(price) return price / 100 * 5 end -- 5%
Config.Taxes = function(price) return price / 100 * 5 end -- 5%
Config.CreditTime = 5 -- minutes between mortgage instalments
Config.Intl = { locales = 'en-US', options = { style = 'currency', currency = 'USD', minimumFractionDigits = 0 } }
Config.Debug = false -- ships as true: turn it off on a live serverThe mortgage timer ships short so you can test it in minutes. Before going live, raise
Config.CreditTimeand checkConfig.RentScheduler— see Usage.
Verifying the Installation#
Restart the server and read the console. The version check prints one of these:
You are using the latest version of qs-housing!
# or
New version available for qs-housing!
You have version 5.5.40, upgrade to version 5.5.41!Red SQL errors above it mean the schema was not imported. Then join and work through the first loop:
Open the creator
Press F7 or type
/realestate. The tablet lists every house; if you importedall_houses.sql, they are already there.Visit and buy a house
Walk to a house for sale and press [E] Property Details. Try Visit, then Buy and sign the contract.
Manage it
At the house, press F3. Place the stash and wardrobe, then open Decorate and place a piece of furniture.
Locale files in
locales/are read at start: editing a translation only needs a resource restart.



