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.
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.
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
sql
ALTER TABLE
`users`
ADDCOLUMN IF NOTEXISTS `current_motel_room` VARCHAR(90) NULLDEFAULTNULL;
INSERT INTO `datastore` (`name`, `label`, `shared`) VALUES ('property', 'Property', 0) ON DUPLICATE KEY UPDATE name = name;
CREATE TABLE IF NOTEXISTS `qs_motels` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`label` VARCHAR(255) NOT NULL,
`owner_identifier` VARCHAR(50) DEFAULTNULL,
`owner_name` VARCHAR(255) DEFAULTNULL,
`zone_points` LONGTEXT DEFAULTNULL,
`blip_data` LONGTEXT DEFAULTNULL,
`reception` LONGTEXT DEFAULTNULL,
`room_management` LONGTEXT DEFAULTNULL,
`rooms` LONGTEXT DEFAULTNULL,
`purchasable` TINYINT(1) DEFAULT0,
`auto_system` TINYINT(1) DEFAULT0,
`sale_price` INT(11) DEFAULT0,
`sale_multiplier` DECIMAL(3,2) DEFAULT1.00,
`cost_per_minute` INT(11) DEFAULT1,
`pricing_unit` VARCHAR(10) NOT NULLDEFAULT'day',
`key_cost` INT(11) DEFAULT100,
`room_count` INT(11) DEFAULT1,
`motel_type` VARCHAR(50) DEFAULT'mlo',
`shell_data` LONGTEXT DEFAULTNULL,
`ipl_data` LONGTEXT DEFAULTNULL,
`shared_stashes` LONGTEXT DEFAULTNULL,
`shared_wardrobes` LONGTEXT DEFAULTNULL,
`entry_coords` LONGTEXT DEFAULTNULL,
`room_type_overrides` LONGTEXT DEFAULTNULL,
`upgrades` LONGTEXT DEFAULTNULL,
`balance` INT(11) DEFAULT0,
`creator` VARCHAR(50) DEFAULTNULL,
`created_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`updated_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_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` ADDCOLUMN IF NOTEXISTS `pricing_unit` VARCHAR(10) NOT NULLDEFAULT'day';
CREATE TABLE IF NOTEXISTS `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) DEFAULT0,
`is_owner` TINYINT(1) DEFAULT0,
`permissions` LONGTEXT DEFAULTNULL,
`joined_at` TIMESTAMPDEFAULTCURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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) DEFAULTNULL,
`rent_debt` INT(11) DEFAULT0,
`is_suspended` TINYINT(1) DEFAULT0,
`warning_level` INT(11) DEFAULT0,
`shared_keys` LONGTEXT DEFAULTNULL,
`start_time` BIGINTDEFAULTNULL,
`end_time` BIGINTDEFAULTNULL,
`created_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`updated_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `qs_motel_stashes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`items` LONGTEXT DEFAULTNULL,
`created_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`updated_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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) DEFAULTNULL,
`is_paid` TINYINT(1) DEFAULT0,
`created_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`paid_at` TIMESTAMPNULLDEFAULTNULL,
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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `qs_motel_transactions` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`transaction_id` VARCHAR(50) DEFAULTNULL,
`type` ENUM('deposit', 'withdraw', 'rent_payment', 'salary', 'expense') NOT NULL,
`amount` BIGINTNOT NULL,
`original_amount` BIGINTDEFAULT0,
`description` VARCHAR(255) DEFAULTNULL,
`identifier` VARCHAR(50) DEFAULTNULL,
`name` VARCHAR(255) DEFAULTNULL,
`reference` VARCHAR(100) DEFAULTNULL,
`status` ENUM('completed', 'pending', 'failed', 'cancelled') DEFAULT'completed',
`metadata` LONGTEXT DEFAULTNULL,
`created_at` TIMESTAMPDEFAULTCURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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` TIMESTAMPDEFAULTCURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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) DEFAULTNULL,
`status` VARCHAR(20) DEFAULTNULL,
`message` TEXT NOT NULL,
`is_read` TINYINT(1) DEFAULT0,
`created_at` TIMESTAMPDEFAULTCURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`resolved_at` TIMESTAMPNULLDEFAULTNULL,
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`) ONDELETE 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);
QB
sql
ALTER TABLE
`players`
ADDCOLUMN IF NOTEXISTS `current_motel_room` VARCHAR(90) NULLDEFAULTNULL;
CREATE TABLE IF NOTEXISTS `qs_motels` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`label` VARCHAR(255) NOT NULL,
`owner_identifier` VARCHAR(50) DEFAULTNULL,
`owner_name` VARCHAR(255) DEFAULTNULL,
`zone_points` LONGTEXT DEFAULTNULL,
`blip_data` LONGTEXT DEFAULTNULL,
`reception` LONGTEXT DEFAULTNULL,
`room_management` LONGTEXT DEFAULTNULL,
`rooms` LONGTEXT DEFAULTNULL,
`purchasable` TINYINT(1) DEFAULT0,
`auto_system` TINYINT(1) DEFAULT0,
`sale_price` INT(11) DEFAULT0,
`sale_multiplier` DECIMAL(3,2) DEFAULT1.00,
`cost_per_minute` INT(11) DEFAULT1,
`pricing_unit` VARCHAR(10) NOT NULLDEFAULT'day',
`key_cost` INT(11) DEFAULT100,
`room_count` INT(11) DEFAULT1,
`motel_type` VARCHAR(50) DEFAULT'mlo',
`shell_data` LONGTEXT DEFAULTNULL,
`ipl_data` LONGTEXT DEFAULTNULL,
`shared_stashes` LONGTEXT DEFAULTNULL,
`shared_wardrobes` LONGTEXT DEFAULTNULL,
`entry_coords` LONGTEXT DEFAULTNULL,
`room_type_overrides` LONGTEXT DEFAULTNULL,
`upgrades` LONGTEXT DEFAULTNULL,
`balance` INT(11) DEFAULT0,
`creator` VARCHAR(50) DEFAULTNULL,
`created_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`updated_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_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` ADDCOLUMN IF NOTEXISTS `pricing_unit` VARCHAR(10) NOT NULLDEFAULT'day';
CREATE TABLE IF NOTEXISTS `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) DEFAULT0,
`is_owner` TINYINT(1) DEFAULT0,
`permissions` LONGTEXT DEFAULTNULL,
`joined_at` TIMESTAMPDEFAULTCURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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) DEFAULTNULL,
`rent_debt` INT(11) DEFAULT0,
`is_suspended` TINYINT(1) DEFAULT0,
`warning_level` INT(11) DEFAULT0,
`shared_keys` LONGTEXT DEFAULTNULL,
`start_time` BIGINTDEFAULTNULL,
`end_time` BIGINTDEFAULTNULL,
`created_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`updated_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `qs_motel_stashes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`items` LONGTEXT DEFAULTNULL,
`created_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`updated_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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) DEFAULTNULL,
`is_paid` TINYINT(1) DEFAULT0,
`created_at` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`paid_at` TIMESTAMPNULLDEFAULTNULL,
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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `qs_motel_transactions` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`transaction_id` VARCHAR(50) DEFAULTNULL,
`type` ENUM('deposit', 'withdraw', 'rent_payment', 'salary', 'expense') NOT NULL,
`amount` BIGINTNOT NULL,
`original_amount` BIGINTDEFAULT0,
`description` VARCHAR(255) DEFAULTNULL,
`identifier` VARCHAR(50) DEFAULTNULL,
`name` VARCHAR(255) DEFAULTNULL,
`reference` VARCHAR(100) DEFAULTNULL,
`status` ENUM('completed', 'pending', 'failed', 'cancelled') DEFAULT'completed',
`metadata` LONGTEXT DEFAULTNULL,
`created_at` TIMESTAMPDEFAULTCURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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` TIMESTAMPDEFAULTCURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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) DEFAULTNULL,
`status` VARCHAR(20) DEFAULTNULL,
`message` TEXT NOT NULL,
`is_read` TINYINT(1) DEFAULT0,
`created_at` TIMESTAMPDEFAULTCURRENT_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`) ONDELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOTEXISTS `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` TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
`resolved_at` TIMESTAMPNULLDEFAULTNULL,
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`) ONDELETE 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);