Installation

Quasar Appearance is the all-in-one customization system for FiveM, combining clothing shops, barbers, tattoos, surgeons, and masks in a single script. Players can save outfits, change looks, and enjoy dynamic features like height variation and auto clothing previews.


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. Go to the following link: 🔗 https://portal.cfx.re/assets/granted-assets

  2. Log in with the same Cfx.re account you used to make the purchase.

  3. In the list of granted assets, find and download the following:

    • Appearance


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.


Remove Other Scripts

This script may cause conflicts or errors if you use other clothing or appearance systems on your server. Common examples include: esx_skin, skinchanger, fivem-appearance, esx_barbershop, esx_clotheshop, illenium-appearance, and rcore_clothing.

It’s strongly recommended to completely remove these resources before installation to ensure proper functionality and prevent compatibility issues. Also, delete any tattoo shop resources such as esx_tattooshop from your server’s resources folder.


Server.cfg Placement

This script must always start after es_extended or qb-core, never before. We recommend placing it below them in your server.cfg, ensuring all dependencies are loaded first to prevent errors or unexpected behavior.


Database Setup

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.

DATABASE ESX/QBCORE
DROP TABLE IF EXISTS `clothing_stores`;
DROP TABLE IF EXISTS `clothing_player_outfits`;
DROP TABLE IF EXISTS `clothing_job_outfits`;
DROP TABLE IF EXISTS `management_outfits`;
DROP TABLE IF EXISTS `player_outfits`;
DROP TABLE IF EXISTS `playerskins`;

CREATE TABLE IF NOT EXISTS `clothing_stores` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`creator` VARCHAR(80) NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
	`name` VARCHAR(50) NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
	`type` VARCHAR(50) NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
	`zone` TEXT NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
	`show_blip` TINYINT(1) NULL DEFAULT '0',
	`config` TEXT NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
	PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb3_general_ci'
ENGINE=InnoDB
;

CREATE TABLE IF NOT EXISTS `clothing_player_outfits` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`owner` VARCHAR(80) NOT NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
	`label` VARCHAR(80) NOT NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
	`model` VARCHAR(80) NOT NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
	`components` TEXT NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
	`props` TEXT NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
	PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb3_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;

CREATE TABLE IF NOT EXISTS `clothing_job_outfits` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`creator` VARCHAR(80) NOT NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
	`label` VARCHAR(80) NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',
	`job` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
	`grades` TEXT NOT NULL COLLATE 'utf8mb3_general_ci',
	`model` VARCHAR(80) NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',
	`components` TEXT NOT NULL COLLATE 'utf8mb3_general_ci',
	`props` TEXT NOT NULL COLLATE 'utf8mb3_general_ci',
	PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb3_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;

CREATE TABLE IF NOT EXISTS `player_outfits` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `citizenid` varchar(50) DEFAULT NULL,
  `outfitname` varchar(50) NOT NULL DEFAULT '0',
  `model` varchar(50) DEFAULT NULL,
  `props` varchar(1000) DEFAULT NULL,
  `components` varchar(1500) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `citizenid_outfitname_model` (`citizenid`,`outfitname`,`model`),
  KEY `citizenid` (`citizenid`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `playerskins` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `citizenid` varchar(255) NOT NULL,
  `model` varchar(255) NOT NULL,
  `skin` text NOT NULL,
  `active` tinyint(4) NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`),
  KEY `citizenid` (`citizenid`),
  KEY `active` (`active`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

Saving Clothing Images & Token

When you finish generating and saving clothing images, you must disable the option:

Config.ImageSaver.enable = false

If you leave it enabled, your FiveManage token could be exposed and players may steal it.

Your token must be placed here:

-- qs-appearance/config/fivemanage.lua  
Config.FiveManageToken = "your_token_here"

Always make sure to keep your token private and disable the image saver once the process is complete.


Compatibility With esx_skin and skinchanger

Old systems like esx_skin or skinchanger can conflict with qs-appearance, so you have two options:

  1. Remove them completely – Go through your server files and delete any references to esx_skin or skinchanger inside your fxmanifest.lua files.

  2. Redirect them – Open the file qs-appearance/fxmanifest.lua and add this line at the end:

    provides { "esx_skin", "skinchanger" }

This makes qs-appearance act as a replacement for those old systems, fixing any dependency issues automatically.