[PAID] MD Motel - Advanced Motel Rental System [ESX/QB]

:hotel: MD Motel โ€” Advanced Motel Rental System

A fully featured motel rental system for FiveM with support for both ESX and QB-Core frameworks. Clean UI, routing bucket instancing, stash upgrades, room managers, key system and more.


:movie_camera: Preview


:camera_with_flash: Screenshots




:sparkles: Features

  • Dual Framework Support โ€” Works with both ESX and QB-Core, selectable in config
  • Routing Bucket Instancing โ€” Each room uses its own routing bucket, players in different rooms never see each other. All rooms can share the same interior coordinates
  • Custom UI โ€” Clean, minimalistic and professional interface built with pure HTML/CSS/JS. No React or Vue required
  • Room Rental System โ€” Players can rent rooms for 3 to 30 days with configurable pricing per day
  • Stash System โ€” Each room has its own persistent stash via ox_inventory with 4 upgrade tiers (configurable slots and weight)
  • Key & Lock System โ€” Players generate physical key items with metadata. Locked doors block entry for anyone without the correct key or room access
  • Room Managers โ€” Room owners can add up to 3 other players as managers who share access to the room and stash
  • Wardrobe โ€” Integration with illenium-appearance for changing clothes inside the room
  • Rent Expiration Handling โ€” Automatic cleanup of expired rentals. Items from expired stashes are saved and can be claimed by the owner through the UI
  • Reconnect Persistence โ€” Players who disconnect inside a room will spawn back in the same room on reconnect
  • Rent Extension โ€” Extend active rentals directly from the management UI
  • Expiration Warnings โ€” Configurable notifications before rental expiry
  • Localization โ€” Full locale system with Czech and English included. Easy to add more languages
  • ox_target Integration โ€” All interactions (reception, doors, stash, wardrobe) use ox_target sphere zones
  • Blips โ€” Configurable map blips for each motel location

:package: Dependencies


:inbox_tray: Installation

1. Download md_motel from your assets and put it in your resources folder
2. Import the SQL file into your database
3. Add the key item to your ox_inventory/data/items.lua
4. Edit config.lua to set your framework (esx or qb ), locale (cs or en ), motel locations, room positions and pricing
5. Add ensure md_motel to your server.cfg


:gear: Configuration Example

Config = {}

Config.Framework = 'esx'
Config.Locale = 'cs'

Config.KeyItem = 'motel_key'
Config.KeyPrice = 50
Config.MaxManagers = 3
Config.RentCheckInterval = 5
Config.RentWarningTime = 1440

Config.StashUpgrades = {
    [1] = { slots = 20, weight = 50000, price = 0, label = 'Basic' },
    [2] = { slots = 35, weight = 75000, price = 2500, label = 'Medium' },
    [3] = { slots = 50, weight = 100000, price = 5000, label = 'Large' },
    [4] = { slots = 75, weight = 150000, price = 10000, label = 'Premium' }
}

local SHARED_INTERIOR = {
    coords = vector3(266.03, -1007.47, -99.01),
    heading = 0.0,
    stashCoords = vector3(262.52, -1004.73, -99.01),
    wardrobeCoords = vector3(259.84, -1003.62, -99.01)
}

Config.Motels = {
    ['pink_cage'] = {
        label = 'Pink Cage Motel',
        blip = { enabled = true, sprite = 475, color = 8, scale = 0.8 },
        menuPosition = vector3(322.54, -226.37, 54.22),
        rooms = {
            [1] = {
                label = 'Room #101',
                price = 500,
                doorCoords = vector3(316.92, -224.21, 54.22),
                doorHeading = 160.0,
                interior = { coords = SHARED_INTERIOR.coords, heading = SHARED_INTERIOR.heading },
                stashCoords = SHARED_INTERIOR.stashCoords,
                wardrobeCoords = SHARED_INTERIOR.wardrobeCoords
            }
        }
    }
}

You can add unlimited motels and rooms. All rooms can use the same interior coordinates thanks to routing bucket instancing.


:globe_with_meridians: Localization

The script includes a full locale system. Currently available languages:

  • :czechia: Czech (cs)
  • :united_kingdom: English (en)

Adding a new language is simple โ€” copy locales/en.lua, rename it and translate the strings. Then set Config.Locale to your language.


:desktop_computer: Performance

  • Ultra optimized (0.00ms on Idle, 0.05 on use)
    image
    image

:link: Purchase

Code is accessible No
Subscription-based No
Lines (approximately) 1000
Requirements ox_lib, ox_inventory, ox_target, oxmysql, illenium-appearance
Support Yes
1 Like