What goes wrong most often, what it actually means, and what to do about it. Most of these are configuration, not faults — the server refuses something on purpose and the message on screen says which rule stopped it. Turn on Config.Debug while you investigate: the console then names the exact check that failed.
Installation and Access#
"Successfully loaded the framework. none" or "attempt to index a nil value (global 'sfr')"
The framework was not running when the motels started. Put ensure qs-motels-creator after es_extended, qb-core or qbx_core in server.cfg. If your core has another name, add it to the frameworks table in config/main.lua — see Integrations.
"Couldn't start resource: dependency K4MB1-StarterShells / bob74_ipl"
Both are hard dependencies. K4MB1-StarterShells comes in the download — keep its folder name and ensure it before the motels. bob74_ipl is required even if you never build an IPL motel.
"You do not have permission to use the creator"
The player is neither an admin nor in Config.CreatorJobs. On ESX the group must be admin or superadmin; on QBCore and Qbox the permission god or admin, or the ACE command. Other staff groups are added in playerIsAdmin inside custom/esx/server.lua or custom/qb/server.lua — listing them in Config.adminSettings alone does not grant creator access.
"Table 'qs_motels' doesn't exist" or "Unknown column 'current_motel_room'"
The SQL was not imported, or the wrong file was. ESX uses database/esx.sql, QBCore and Qbox use database/qb.sql. On ESX, if the import stopped at the datastore line, remove that line and import again — the file is safe to re-run.
"Cannot add or update a child row: a foreign key constraint fails"
A row points at a motel that no longer exists — usually after deleting from qs_motels by hand while the server was running. Delete motels from the creator: it removes the rentals, staff and finances with them.
I edited a Lua file and nothing changed
Only config/, custom/, client/custom/main.lua, server/custom/ and music/ are editable; the rest is protected and edits there are not loaded. Config changes need a resource restart. Motels themselves are edited in the creator, not in files.
The interface is blank or never opens
The resource folder was renamed, or files under web/ were changed or lost in the upload. Keep the folder named qs-motels-creator and replace web/ and fxmanifest.lua with the ones from a fresh download.
"Locale xx does not exist" or "Locale xx is missing key …"
The first means Config.Locale (or qs:locale) names a file that is not in locales/, so English is used. The second is a warning after an update: copy the named key from locales/en.json into your file. Until then that line shows in English.
Motels and the Creator#
"No owner is assigned yet and the auto system is not active"
Correct behaviour. A motel with no owner, no Auto System and not purchasable has nobody to rent rooms. In the creator either switch on Auto System, make it purchasable, or give it an owner.
"Staffed reception only. Ask a motel employee…"
Correct behaviour. In an owned motel rooms are rented by the owner or staff from the Nearby tab — unless the owner bought and switched on the Auto System upgrade.
"The point you selected is in another zone"
Motel zones cannot overlap. Draw the outline inside the property, away from neighbouring motels.
Players fall through the floor in a shell
The shell model did not load. Check that K4MB1-StarterShells is started and that the model in Config.Shells matches a .ydr in its stream/ folder — or in the resource that streams your custom shell.
An IPL motel has no interior
bob74_ipl is missing, starts too late, or the export in Config.IplData calls a getter your bob74_ipl version does not have. Compare the function name with your installed version.
Only the first rooms of a motel can be rented
The motel is owned and its Room Capacity upgrade is at level 1 — 25 % of its rooms, rounded up. Buy the next level, change Config.Upgrades.roomCapacity.levels, or disable the upgrade.
A player stays inside a room after the motel was deleted
They are moved to Config.teleport when they next connect. Set it to a sensible public spot on your map.
Renting and Bills#
Every rental is refused with "You have unpaid bills"
Correct behaviour with Config.existBillThenBlock = true. The player pays at the Bill Payment Center (Config.bill.pos), or set it to false.
"You already have a room here" or "maximum rooms reached"
A player holds one room per motel and at most Config.maxRoomsPerPlayer in total.
"You can't leave your room without paying your rent!"
The rental still has debt. Pay it from Room Management, then leave.
The room was rented but no money was taken
Correct behaviour with Config.bill.active = true: the price is carried as rent debt and paid later. Warnings raise it and suspend the room if it is not paid. Set it to false to charge in cash up front.
"Your motel room was suspended…"
A warning found unpaid debt and suspendOnDebt is on. Paying the whole debt reactivates the room; staff with Update Motel Status can also lift it.
Keys and Stashes#
Using the key does nothing
The item is not registered in your inventory — see Installation.
On ox_inventory the item needs
client = { export = 'qs-motels-creator.motels:UseKey' }; on the others it must beuseable.The player is not close to a door, stash or wardrobe — the key acts on the nearest point.
"You do not have a valid motel key in your inventory"
The key no longer matches the rental: the room was rented again, a newer key was made, the tenant changed room, or the room is suspended. Make a new key from Room Management.
Keys lose their data, or every key looks the same
The inventory does not store metadata, or the item is stackable. Make it unique / non-stacking, use a metadata inventory, or set Config.MetaKeys = false.
Stashes are not emptied when a tenant leaves
Check Config.wipeStashOnLeave = true and that an adapter exists for your inventory. With debug on, MotelStashWipe No adapter for inventory: <name> means one is missing — see Adding a Bridge on Integrations.
Personal stashes do nothing
Config.personalStashes needs a real inventory — it is ignored on the built-in standalone stash.
The wardrobe opens nothing
No supported clothing resource was running at start-up, so the console prints Invalid wardrobe config. Start it before the motels, or call your menu from OpenWardrobe in client/custom/main.lua.
Owned Motels and Staff#
An employee cannot see a tab or use a button
Correct behaviour. Tabs and actions follow the employee's permissions — the owner turns them on in Employees. Upgrades and Sell Motel are owner-only.
Salaries are never paid
Config.employee.active must be on and autoSalary not false. With takeSalary on and obligatorySalary off, a salary is skipped while the motel balance is too low — deposit money in Finance. The owner never receives a salary.
An upgrade cannot be bought
Upgrades are paid from the motel balance, not the owner's pocket — deposit first. "This upgrade is not available" means it is disabled in Config.Upgrades or already at its last level.
Tenants cannot share keys
In an owned motel key sharing is an upgrade the owner buys. Also check Config.keySharing.enabled and that the room has fewer guests than maxGuests.
Nobody can buy the motel
It must have no owner, be Purchasable, not use Auto System, and Config.generalPurchasable must be on. The price is paid in cash.
Raids#
/raid or the ram item does nothing
The player's job is not in Config.raid.jobs, or they are not next to a room point ("You are not near the room"). In a shell or IPL motel stand at the entrance; the list only shows rented rooms. The item only works if it exists in your inventory.
The raid minigame errors
Config.raid.minigame = true needs ps-ui running. Install it or turn the minigame off.
Console Messages#
Message | Means |
|---|---|
Lots of [DEBUG] lines |
|
| Music was requested with no 3D sound resource running. |
| The track is not in |
Version check errors | The server could not reach GitHub to compare versions. Harmless. |
Still stuck? Open a ticket and include your framework and its version, your inventory, the console output from start-up with
Config.Debug = true, and a screenshot of the F8 console for anything about the interface.



