Before You Begin#
Before installing Motels Creator, make sure your server meets the minimum requirements. The resource declares its hard dependencies in the manifest and will refuse to start without them; everything else is optional and detected on its own.
Requirement | Status | Notes |
|---|---|---|
FXServer build 5181+ | Required | Any recent artifact works. |
OneSync | Required | Legacy or Infinity — rooms are separated with routing buckets. |
| Required | All motels, rentals, staff and finances are stored in MySQL. |
| Required | Callbacks, zones, menus and dialogs. |
| Required | Declared as a dependency; provides the interiors for IPL motels. |
| Required | Included in the download. Streams the 16 room shells. |
Framework | Required |
|
Inventory | Optional | Needed for stashes and the metadata key. Without one, a built-in stash is used. |
Clothing | Optional | Opens your outfit menu from the room wardrobe. |
Target | Optional |
|
| Optional | Only for the raid minigame. |
The full list of supported inventories, clothing systems, sound and text UI resources is on Integrations.
GitHubReleases · overextended/oxmysqlMySQL resource for FXServer.GitHubReleases · overextended/ox_libA FiveM library and resource implementing reusable modules, methods, and UI elements.GitHubReleases · Bob74/bob74_iplIPL loader for FiveM — loads and configures GTA Online interiors.Downloading Motels Creator#
After purchasing Motels Creator, the resource is automatically linked to your CFX Portal account.
Sign in to the CFX Portal using the same account used during checkout, open Granted Assets, and download Motels Creator.
After extracting the download, you should have two folders:
[motels]/
├── K4MB1-StarterShells/ -- the 16 room shells (streamed models)
└── qs-motels-creator/ -- the motel system
├── config/ -- main.lua: every setting
├── custom/ -- framework bridges, notifications, sounds
├── client/custom/ -- editable client hooks (wardrobe, raid, stash...)
├── server/custom/ -- editable server hooks, webhooks, commands
├── database/ -- esx.sql, qb.sql and example MLO motels
├── locales/ -- 24 languages
├── music/ -- local music tracks
└── motelkey.png -- icon for the key itemDo not rename either folder. The manifest depends on
K4MB1-StarterShellsby name, and the interface loads its files fromnui://qs-motels-creator/.
Installing the Resource#
Move both folders into your server's resources directory. Keeping them together inside a bracket folder is fine:
resources/
└── [motels]/
├── K4MB1-StarterShells/
└── qs-motels-creator/Then add them to your server.cfg after the framework and its dependencies:
ensure oxmysql
ensure ox_lib
ensure es_extended # or qb-core / qbx_core
# ensure ox_inventory # your inventory, clothing and target resources
ensure bob74_ipl
ensure K4MB1-StarterShells
ensure qs-motels-creatorThe loading order matters. The framework, inventory and clothing are detected at start-up by looking at which resources are already running — anything that starts after qs-motels-creator is not seen.
The Database#
Import one SQL file from qs-motels-creator/database/, matching your framework:
Framework | File |
|---|---|
ESX |
|
QBCore · Qbox |
|
Both files are safe to run again when updating — they only create what is missing. They add:
Table | Holds |
|---|---|
| Every motel: zone, blip, reception, rooms, prices, type, owner, balance and upgrades. |
| Active rentals: tenant, key code, rent debt, suspension, warning level, start and end. |
| Owners and employees, with salary and permissions. |
| Guests a tenant shared the room with, and what each may do. |
| Unpaid bills and the motel's ledger. |
| Tenant requests to staff and the notifications shown in Room Management. |
| Room stash contents when no supported inventory is running. |
They also add a current_motel_room column to users (ESX) or players (QBCore), so a player who disconnects inside a room comes back inside it, and insert an example motel — Richman Motel, an IPL motel — so you have something to test straight away.
Running the Gabz Pinkcage MLO? Import
database/mlo motels/gabz pinkcage.sqlas well for a ready-made PinkCage Motel with every door, stash and wardrobe already placed.
Adding the Key Item#
With Config.MetaKeys = true (the default) every rental hands the tenant a physical key: an item called motelkey (Config.MetaItem) carrying the motel, the room and a unique code in its metadata. Your inventory must know the item, and motelkey.png from the resource folder goes into your inventory's image folder.
Add to ox_inventory/data/items.lua. The key is used through a client export, so the client line is required:
['motelkey'] = {
label = 'Motel Key',
weight = 10,
stack = false,
close = true,
description = 'A key to a motel room',
client = { export = 'qs-motels-creator.motels:UseKey' }
},Add to the inventory's shared/items.lua. The item must be unique (so every key keeps its own metadata) and useable:
['motelkey'] = {
name = 'motelkey',
label = 'Motel Key',
weight = 10,
type = 'item',
image = 'motelkey.png',
unique = true,
useable = true,
shouldClose = true,
description = 'A key to a motel room'
},For an ESX inventory that reads the items table:
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`)
VALUES ('motelkey', 'Motel Key', 1, 0, 1);The key only works with an inventory that stores item metadata. If yours does not, set Config.MetaKeys = false and rooms are opened by the tenant directly, without an item.
The raid item works the same way: Config.raid.item (police_stormram by default) is registered as a usable item that starts a raid. Register it in your inventory if you want police to raid by using it, or set it to false and keep only the /raid command.
Claiming Creator Access#
The creator is where motels are built, moved and deleted, so /motelcreator opens only for staff or for the jobs you trust with it. Either of these is enough:
The admin check is the framework bridge's playerIsAdmin function:
Framework | Counts as admin | File |
|---|---|---|
ESX | Group |
|
QBCore · Qbox | Permission |
|
Using other staff groups? Change that one function in the bridge — it is an editable file.
List a job, and optionally its grades, in config/main.lua. An empty grade list allows every grade:
Config.CreatorJobs = {
{ job = 'realestate', grade = {} }, -- every grade
-- { job = 'motelboss', grade = { 3, 4 } } -- only grades 3 and 4
}Configuring the Resource#
Motels themselves are built in game — the files only hold the server-wide behaviour. Every setting lives in config/main.lua, and each line is tagged with how safe it is to change:
Tag | Meaning |
|---|---|
| Safe to change for your server. |
| Advanced — understand it before touching it. |
| Internal or detected at start-up. Leave alone. |
The values worth reviewing first:
-- config/main.lua
Config.Locale = GetConvar('qs:locale', 'en') -- or: setr qs:locale "es" in server.cfg
Config.Intl = { locales = 'en-US', options = { style = 'currency', currency = 'USD', minimumFractionDigits = 0 } }
Config.MetaKeys = true -- physical key item per rental
Config.target = false -- true = ox_target / qb-target instead of markers
Config.maxRoomsPerPlayer = 5 -- rentals per player across all motels
Config.generalPurchasable = true -- players may buy motels at the reception
Config.bill.active = true -- rent is carried as debt and paid later
Config.Debug = true -- verbose console: turn OFF on a live serverOnly
config/,custom/,client/custom/main.lua,server/custom/andmusic/are open for editing. The rest of the resource is protected, and changes there are not loaded.
Verifying the Installation#
After completing the installation, restart your server and watch the console. The framework line is printed once by the server and once by each client (F8):
[INFO] Successfully loaded the framework. esxIt names esx or qb (Qbox reports as qb). If it says none, the framework started after the motels — fix the order in server.cfg. Then join your server and work through the first loop:
Open the creator
Type
/motelcreator. Richman Motel is on the list. It ships with no owner and with both Purchasable and Auto System off, so its reception has nobody to serve you yet.Turn on Auto System
Select the motel, switch Auto System on under Economic Settings and press Save Motel. The reception now rents rooms by itself.
Rent a room
Teleport to the motel from the creator list, walk to the reception, pick a room and a duration. A Motel Key appears in your inventory; use it at the entrance to go in. Usage covers the rest.
Nothing needs a restart from here on. Every motel, room, price and owner is created and edited in game, and saved straight to the database.



