Quasar Store Logo

Installation

Installation guide — please follow each step carefully and exactly as described to ensure the script works correctly on your server. Skipping or modifying steps may cause the system to not function properly, so follow it step by step.

Download Script

To download the assets needed for this script, you must access the official Cfx.re portal, where all assets purchased through Tebex are managed.

1

Access the Granted Assets Page

Open the Cfx.re granted assets page: https://portal.cfx.re/assets/granted-assets.

This page contains all assets linked to your Cfx.re purchases.

2

Log In with Your Cfx.re Account

Sign in using the same Cfx.re account you used when purchasing the asset.

If you use a different account, the assets will not appear.

3

Download the Housing Assets

In the granted assets list, locate and download:

Motels Creator [main]
Motels Creator [maps]

These two packages are required to install the full housing system.

These files include the models, materials, and visual resources required for the proper operation of the housing system.





Download Dependencies

This script requires some mandatory dependencies to function correctly. Make sure to download and extract them inside your server’s main directory, keeping their original folder structure intact.





Database Setup

Avoid using tools like XAMPP or other non-optimized local servers, as they may cause connection errors.

This script includes an essential database required for its operation.You must import it before starting your server, preferably using HeidiSQL or any other manager compatible with MariaDB/MySQL.

ESX

QB

ALTER TABLE `players` ADD COLUMN IF NOT EXISTS `current_motel_room` VARCHAR(90) NULL DEFAULT NULL; CREATE TABLE IF NOT EXISTS `qs_motels` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `label` VARCHAR(255) NOT NULL, `owner_identifier` VARCHAR(50) DEFAULT NULL, `owner_name` VARCHAR(255) DEFAULT NULL, `zone_points` LONGTEXT DEFAULT NULL, `blip_data` LONGTEXT DEFAULT NULL, `reception` LONGTEXT DEFAULT NULL, `room_management` LONGTEXT DEFAULT NULL, `rooms` LONGTEXT DEFAULT NULL, `purchasable` TINYINT(1) DEFAULT 0, `auto_system` TINYINT(1) DEFAULT 0, `sale_price` INT(11) DEFAULT 0, `sale_multiplier` DECIMAL(3,2) DEFAULT 1.00, `cost_per_minute` INT(11) DEFAULT 1, `pricing_unit` VARCHAR(10) NOT NULL DEFAULT 'day', `key_cost` INT(11) DEFAULT 100, `room_count` INT(11) DEFAULT 1, `motel_type` VARCHAR(50) DEFAULT 'mlo', `shell_data` LONGTEXT DEFAULT NULL, `ipl_data` LONGTEXT DEFAULT NULL, `shared_stashes` LONGTEXT DEFAULT NULL, `shared_wardrobes` LONGTEXT DEFAULT NULL, `entry_coords` LONGTEXT DEFAULT NULL, `room_type_overrides` LONGTEXT DEFAULT NULL, `upgrades` LONGTEXT DEFAULT NULL, `balance` INT(11) DEFAULT 0, `creator` VARCHAR(50) DEFAULT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `idx_owner_identifier` (`owner_identifier`), INDEX `idx_creator` (`creator`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ALTER TABLE `qs_motels` ADD COLUMN IF NOT EXISTS `pricing_unit` VARCHAR(10) NOT NULL DEFAULT 'day'; CREATE TABLE IF NOT EXISTS `qs_motel_workers` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `motel_id` INT(11) NOT NULL, `identifier` VARCHAR(50) NOT NULL, `name` VARCHAR(255) NOT NULL, `salary` INT(11) DEFAULT 0, `is_owner` TINYINT(1) DEFAULT 0, `permissions` LONGTEXT DEFAULT NULL, `joined_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `motel_worker` (`motel_id`, `identifier`), INDEX `idx_motel_id` (`motel_id`), INDEX `idx_identifier` (`identifier`), FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `qs_motel_rentals` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `motel_id` INT(11) NOT NULL, `room_id` INT(11) NOT NULL, `tenant_identifier` VARCHAR(50) NOT NULL, `tenant_name` VARCHAR(255) NOT NULL, `unique_key` VARCHAR(100) DEFAULT NULL, `rent_debt` INT(11) DEFAULT 0, `is_suspended` TINYINT(1) DEFAULT 0, `warning_level` INT(11) DEFAULT 0, `shared_keys` LONGTEXT DEFAULT NULL, `start_time` BIGINT DEFAULT NULL, `end_time` BIGINT DEFAULT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `motel_room` (`motel_id`, `room_id`), INDEX `idx_motel_id` (`motel_id`), INDEX `idx_tenant_identifier` (`tenant_identifier`), FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `qs_motel_stashes` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `motel_id` INT(11) NOT NULL, `room_id` INT(11) NOT NULL, `items` LONGTEXT DEFAULT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `motel_room_stash` (`motel_id`, `room_id`), INDEX `idx_motel_id` (`motel_id`), FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `qs_motel_bills` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `motel_id` INT(11) NOT NULL, `identifier` VARCHAR(50) NOT NULL, `amount` INT(11) NOT NULL, `description` VARCHAR(255) DEFAULT NULL, `is_paid` TINYINT(1) DEFAULT 0, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `paid_at` TIMESTAMP NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `idx_motel_id` (`motel_id`), INDEX `idx_identifier` (`identifier`), INDEX `idx_is_paid` (`is_paid`), INDEX `idx_identifier_paid` (`identifier`, `is_paid`), FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `qs_motel_transactions` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `motel_id` INT(11) NOT NULL, `transaction_id` VARCHAR(50) DEFAULT NULL, `type` ENUM('deposit', 'withdraw', 'rent_payment', 'salary', 'expense') NOT NULL, `amount` BIGINT NOT NULL, `original_amount` BIGINT DEFAULT 0, `description` VARCHAR(255) DEFAULT NULL, `identifier` VARCHAR(50) DEFAULT NULL, `name` VARCHAR(255) DEFAULT NULL, `reference` VARCHAR(100) DEFAULT NULL, `status` ENUM('completed', 'pending', 'failed', 'cancelled') DEFAULT 'completed', `metadata` LONGTEXT DEFAULT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `idx_motel_id` (`motel_id`), INDEX `idx_type` (`type`), INDEX `idx_status` (`status`), INDEX `idx_transaction_id` (`transaction_id`), INDEX `idx_motel_date` (`motel_id`, `created_at`), FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `qs_motel_key_shares` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `motel_id` INT(11) NOT NULL, `room_id` INT(11) NOT NULL, `owner_identifier` VARCHAR(50) NOT NULL, `guest_identifier` VARCHAR(50) NOT NULL, `guest_name` VARCHAR(255) NOT NULL, `permissions` JSON NOT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `unique_share` (`motel_id`, `room_id`, `guest_identifier`), INDEX `idx_motel_id` (`motel_id`), INDEX `idx_guest_identifier` (`guest_identifier`), INDEX `idx_guest_motel_room` (`guest_identifier`, `motel_id`, `room_id`), FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `qs_motel_notifications` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `motel_id` INT(11) NOT NULL, `room_id` INT(11) NOT NULL, `recipient_identifier` VARCHAR(50) NOT NULL, `type` ENUM('warning', 'request_response') NOT NULL, `level` INT(11) DEFAULT NULL, `status` VARCHAR(20) DEFAULT NULL, `message` TEXT NOT NULL, `is_read` TINYINT(1) DEFAULT 0, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `idx_recipient` (`recipient_identifier`), INDEX `idx_motel_room` (`motel_id`, `room_id`), INDEX `idx_recipient_motel_room` (`recipient_identifier`, `motel_id`, `room_id`), FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `qs_motel_requests` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `motel_id` INT(11) NOT NULL, `room_id` INT(11) NOT NULL, `requester_identifier` VARCHAR(50) NOT NULL, `requester_name` VARCHAR(255) NOT NULL, `message` TEXT NOT NULL, `status` ENUM('pending', 'accepted', 'rejected') DEFAULT 'pending', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `resolved_at` TIMESTAMP NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `idx_motel_id` (`motel_id`), INDEX `idx_status` (`status`), INDEX `idx_motel_status` (`motel_id`, `status`), FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT IGNORE INTO `qs_motels` (`label`, `owner_identifier`, `owner_name`, `zone_points`, `blip_data`, `reception`, `room_management`, `rooms`, `purchasable`, `auto_system`, `sale_price`, `sale_multiplier`, `cost_per_minute`, `key_cost`, `room_count`, `motel_type`, `shell_data`, `ipl_data`, `shared_stashes`, `shared_wardrobes`, `entry_coords`, `creator`, `created_at`, `updated_at`, `balance`, `room_type_overrides`, `upgrades`) VALUES ('Richman Motel', NULL, NULL, '{"points":[{"z":66,"y":221.81651306152345,"x":-1395.9300537109376},{"z":66,"y":252.6926727294922,"x":-1224.8707275390626},{"z":66,"y":385.9217224121094,"x":-1259.2569580078126},{"z":66,"y":334.61407470703127,"x":-1395.19287109375}],"thickness":117.66351656755433}', '{"label":"Richman Motel","sprite":475,"scale":0.8,"coords":{"z":63.9767837524414,"y":306.0583801269531,"x":-1279.818359375},"color":17,"enable":true}', '{"z":65.90283966064453,"y":312.4852600097656,"x":-1271.80908203125,"w":0}', NULL, '[]', 0, 0, 0, 1.00, 1, 100, 200, 'ipl', NULL, '{"tier":1,"themeId":"seductive","exit":{"z":217.63999938964845,"y":315.80999755859377,"x":-787.4400024414063}}', '[{"locked":true,"coords":{"z":216.80580139160157,"y":320.7487487792969,"x":-789.3121948242188,"w":0}}]', '[{"locked":true,"coords":{"z":220.2403259277344,"y":328.2768859863281,"x":-796.0173950195313,"w":0}}]', '{"z":65.5118179321289,"y":315.591064453125,"x":-1274.0269775390626,"w":166}', 'QUASAR', '2026-02-22 22:28:08', '2026-02-22 22:28:08', NULL, NULL, NULL);





Motel Creation Menu

Make sure you have admin permissions before using the command.

To access the motel creation menu, simply use the following command in the in-game chat:

/createmotels

This command will open the Quasar Motels Creator interface, allowing you to create, edit, and configure your motel quickly and visually.