shared/config.lua. The file is split into 18 numbered sections - search by number to jump to a section.
Section 1 - Framework
string
default:"qbox"
Which framework to integrate with.
string
default:"ox"
Which inventory script handles the apartment stash.
Inventory options
To add a custom inventory not in this list, edit
server/inventory.lua and client/inventory.lua - those are the only two files you need to touch.
string[]
default:"{\"police\",\"sheriff\",\"swat\"}"
Job names treated as law enforcement. Used for PD door entry and MLO item unlock.
boolean
default:"false"
Verbose console logging + enables
/aptbill debug command. Disable for production.Section 2 - Motel
spawnPos is the fallback exterior spawn for players who decline the “spawn inside” prompt or whose apartment can’t be entered.
Section 3 - Tiers
Tier 1 is always free regardless of
monthlyCost. New characters are always assigned to a free Tier 1 slot.[4], [5], …) - the admin panel auto-detects them.
Section 4 - Billing
Rent cycle
- Player upgrades to Tier 2+ via a motel NPC → pays transfer fee + first month’s rent
- A billing record is created in
awoken_apartment_billingwithnext_bill_date = now + 30 daysandslot_index - Every
checkIntervalseconds (and once on login), the server checks if rent is due - If yes + can pay: deduct rent, reset
next_bill_datetonow + 30 days - If yes + can’t pay:
- Try a free Tier 1 in the same motel → move them there
- If none → “pay now or be moved” prompt
- Decline → move to any free Tier 1, or fully evict if none exist
Slot persistence
While billing is active (next_bill_date in the future):
Transfers between motels
SQL schema (auto-created)
identifier = citizenid on qbox/qbcore, license on ESX.
Manual fixes
Player stuck on Tier 2 they shouldn't have
Player stuck on Tier 2 they shouldn't have
Reset all billing data
Reset all billing data
Force-bill a player (debug)
Force-bill a player (debug)
With
Config.Debug = true:Section 5 - New Character Spawn
boolean
default:"true"
Universal mode - bypass any spawn selector, force-teleport new characters directly inside their assigned apartment.
boolean
default:"false"
Only used when
forceSpawnInApartment = false. Shows an “enter your apartment?” dialog.number
default:"2000"
Milliseconds before the prompt fires (ignored when
forceSpawnInApartment = true).New character detection by framework
Manual trigger works on any framework:
Section 5b - Spawn Selector Integration
Got a spawn selector? (That’s the screen where players pick where to spawn -qbx_spawn, qb-spawn, um-spawn, etc.) This section makes Awoken play nice with it instead of force-teleporting new characters straight into their apartment.
string
default:"auto"
Which spawn selector you use.
'auto' figures it out for you (recommended). Only set it by hand if auto-detect guesses wrong: 'none', 'qbx_spawn', 'qb-spawn', 'um-spawn', 'vms_spawnselector', 'okokSpawnSelector', 'lc_spawnselector', or 'esx_skin'.boolean
default:"true"
When
true and a spawn selector is found, Awoken stops force-spawning new characters and lets your selector decide where they go. They still get assigned a room quietly in the background.boolean
default:"true"
When
true, your spawn selector is allowed to offer the player’s apartment as one of the spawn choices. Set it to false to hide the apartment from the selector completely.Out of the box (
deferToSelector = true) this just works - new characters go through your spawn selector like normal. You only need the extra setup below if you want “My Apartment” to actually show up as a pick inside the selector.Making the apartment show up as a spawn choice
Listing the apartment in the selector’s menu needs a small one-time patch to your spawn selector (it has to ask Awoken for the player’s room). Step-by-step patches for each popular selector are in Installation → Spawn selector coexistence.Section 6 - Doors & Doorbell
awoken:primaryColor convar.
Section 7 - Keys
Section 8 - Stash
prefix is prepended to the resident’s identifier to form the unique stash ID (e.g., awoken_stash_ABC1234).
Section 9 - Blips
Section 10 - /aptshow Command
/aptshow drops a temporary blip + 3D marker on the player’s own apartment door.
Section 11 - Motel NPC Blips
Section 12 - Animations
lib.progressBar with the matching duration + animation.
Section 13 - MLO Support
boolean
default:"true"
Auto-hook ox_inventory and qb-inventory so the
pdItem triggers MLO door unlock for police. For other inventories, fire TriggerClientEvent('awoken_apartments:usePdItem', src) from your item-use callback.Section 14 - Police Access
item = '' to remove the item requirement entirely. Set knock.enabled = false to skip the knock animation and go straight to the access request.
Section 15 - Discord Logging
Webhooks can point at the same or different channels.
Section 16 - Locale
Section 18 - Locale Strings
All in-game text lives underConfig.Locales[Config.Locale]. To add a translation:
Primary colour convar
In yourserver.cfg:
- All 3D world markers (door zones, stash markers, /aptshow chevron)
- The admin panel UI (tabs, buttons, borders, glow)
Wardrobes & clothing
Awoken Apartments does not come with its own wardrobe or clothing menu. That’s on purpose - it keeps out of your appearance system so the two never clash. If you want players to change outfits inside their apartment, you add the wardrobe yourself using your own clothing script (illenium-appearance, fivem-appearance, qb-clothing, etc.). The normal way is to add a small interaction point inside the apartment interior that opens your clothing menu. Here’s the shape of it usingox_target:
1
Get the interior coordinates
In
/aptmanager, the interior spawn point is set per room (MLO) or per tier (IPL). Use those same coords for the wardrobe spot. Stand where you want it and read off your position, or grab it with the panel’s 🎯 Pick.2
Swap in your clothing script's command
Replace the
exports['illenium-appearance']:openOutfitMenu() line with whatever your clothing script uses to open its wardrobe - check that script’s own docs for the exact export or event name.3
Put it in your own resource
Add the code to one of your own resources (or your clothing script’s config), not inside the encrypted awoken files. Restart it and the wardrobe point appears.
IPL apartments share one interior per tier (each player is isolated in their own routing bucket), so a single wardrobe point at that interior covers every room of that tier automatically. MLO apartments each have their own physical interior, so add one per MLO.