Before You Begin#
Before installing Crime Creator, make sure your server meets the minimum requirements. A handful of resources are mandatory; everything else is optional and detected on its own when the server starts.
Requirement | Status | Notes |
|---|---|---|
| Required | Database access for organizations, territories, wars, missions and the rest. |
| Required | Callbacks, zones, progress bars and shared helpers. |
| Required | Declared as a dependency in the manifest. |
| Required | Captures the player's headshot for their criminal profile in the Crime Tablet. |
Framework | Required |
|
| Recommended | Needed for IPL headquarters (apartments, offices, clubhouses, labs, warehouses, mansions). |
| Included | The 11 shell interiors used for shell headquarters. Ships in the download. |
Inventory | Strongly recommended | Stashes, the black market, item rewards and the usable items all go through it. |
Target / Keys / Clothing / Dispatch / Ambulance | Optional | Each one is picked up automatically when it is running. See Integrations. |
Everything framework- or third-party-specific sits behind a small, editable bridge file, and the resource picks the right one by looking at what is already running:
Layer | Detected resources |
|---|---|
Framework |
|
Inventory |
|
Vehicle keys |
|
Clothing |
|
Dispatch |
|
Ambulance |
|
Every optional integration degrades gracefully. If a resource is missing, that part falls back to a built-in default. Integrations has the full lists and how to pin one by hand.
GitHubReleases · overextended/oxmysqlMySQL resource for FXServer.GitHubReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.GitHubReleases · Bob74/bob74_iplFix holes and customize the map.Downloading Crime Creator#
After purchasing Crime Creator, the resource is automatically linked to your CFX Portal account.
Sign in to the CFX Portal using the same account used during checkout, open Granted Assets, and download Crime Creator.
After extracting the download, you should have the following folders:
[crimecreator]/
├── qs-crime-creator/ -- the resource itself
│ ├── config/ -- main.lua, missions.lua, furniture.lua (what you may edit)
│ ├── custom/ -- framework bridges (ESX / QBCore), interaction menu, notifications
│ ├── client/custom/ -- inventory, keys, clothing, dispatch, ambulance, target bridges
│ ├── server/custom/ -- server-side bridges
│ ├── server/webhooks.lua -- Discord logs
│ ├── locales/ -- 41 languages
│ ├── stream/ -- the three graffiti fonts
│ └── web/ -- the interface, ready to use
├── [shells]/subhampro_exclusive_shells/ -- shell interiors for headquarters
├── [sql]/ -- database.sql, esx.sql, qb.sql, clean.sql
└── [items]/ -- item images and item definitionsThe resource folder must be named
qs-crime-creator. The interface path (nui://qs-crime-creator/web/), the inventory item exports and every export your other scripts call are built on that name.
Installing the Resource#
Move qs-crime-creator and subhampro_exclusive_shells into your server's resources directory. They can live anywhere inside it, including a category folder:
resources/
└── [qs]/
├── qs-crime-creator/
└── subhampro_exclusive_shells/Then open your server.cfg and make sure every dependency — and everything it should detect — starts before Crime Creator:
ensure oxmysql
ensure ox_lib
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
# Inventory, target, keys, clothing, ambulance, dispatch
ensure qs-inventory
ensure qs-vehiclekeys
ensure illenium-appearance
ensure qs-dispatch
# Interiors and headshots
ensure bob74_ipl
ensure subhampro_exclusive_shells
ensure MugShotBase64
ensure qs-crime-creatorThe loading order matters. Detection only sees resources that are already started when Crime Creator loads, so an inventory or key system that starts after it is not found and that part uses its fallback.
The Database#
Crime Creator does not create its tables on its own — import the SQL files from the [sql] folder before the first start.
Import database.sql
The main schema: every
qs_crime_*table. It only usesCREATE TABLE IF NOT EXISTSandADD COLUMN IF NOT EXISTS, so it is safe to run again after an update to pick up new columns.Import your framework's file
Import
esx.sql. It remembers which headquarters a player is inside and adds the datastore the default wardrobe uses:sql ALTER TABLE `users` ADD IF NOT EXISTS `crime_house_inside` INT(5) NULL; INSERT INTO `datastore` (`name`, `label`, `shared`) VALUES ('crime_house', 'Crime House', 0);Import
qb.sql:sql ALTER TABLE `players` ADD IF NOT EXISTS `crime_house_inside` INT(5) NULL;Start the server
There is no starter content: the server opens with no organizations, territories or zones. Everything is created in game from the creator.
Tables | Hold |
|---|---|
| The organizations, their members, ranks and permissions. |
| Clean and dirty balances, the transaction ledger and purchased upgrades. |
| Level, XP, missions and wars won — per organization and per member. |
| Territories, protection-money points and every graffiti on the map. |
| Wars, their scores, past results and pending war requests. |
| PvP battle zones, invitations and scores. |
| Active missions, completions (used for daily limits) and laundering runs. |
| The organization garage, the vehicle store and garage activity. |
| The season pass and each organization's claims and premium status. |
| Furniture placed in headquarters, and the junk that piles up inside. |
| Dark Chat history, black market listings, trades and seller payouts. |
Adding the Items#
Crime Creator uses fourteen items. Copy the images from [items] into your inventory's image folder, then register the items in the format your inventory expects.
Item | What it does |
|---|---|
| Opens the Crime Tablet: rankings, territory map, missions, wars, Dark Chat, black market, profile and season pass. |
| Sprays a graffiti in your organization's colour. |
| Removes a nearby graffiti. |
| A zoomable first-person binocular view. |
| Plants a GPS tracker on the nearest vehicle; only you see its blip. |
| The drugs players sell on street corners inside their territories. |
Add to qs-inventory/shared/items.lua or qb-core/shared/items.lua. The full list, with descriptions, is in [items]/items.md.
['tablet'] = { name = 'tablet', label = 'Tablet', weight = 800, type = 'item', image = 'tablet.png', unique = false, useable = true, shouldClose = true, description = 'Portable electronic tablet' },
['organization_paint'] = { name = 'organization_paint', label = 'Paint Can', weight = 1000, type = 'item', image = 'organization_paint.png', unique = false, useable = true, shouldClose = true, description = 'Organization Paint Can' },
['spray_cleaner'] = { name = 'spray_cleaner', label = 'Spray Cleaner', weight = 1000, type = 'item', image = 'spray_cleaner.png', unique = false, useable = true, shouldClose = true, description = 'Spray Cleaner' },
['binoculars'] = { name = 'binoculars', label = 'Binoculars', weight = 500, type = 'item', image = 'binoculars.png', unique = false, useable = true, shouldClose = true, description = 'Binoculars' },
['vehiclegps'] = { name = 'vehiclegps', label = 'Vehicle GPS', weight = 300, type = 'item', image = 'vehiclegps.png', unique = false, useable = true, shouldClose = true, description = 'Vehicle GPS tracker' },
['weed_white-widow'] = { name = 'weed_white-widow', label = 'White Widow Weed', weight = 150, type = 'item', image = 'weed_white-widow.png', unique = false, useable = true, shouldClose = true, description = 'Bag of White Widow weed' },
['weed_og-kush'] = { name = 'weed_og-kush', label = 'OG Kush Weed', weight = 150, type = 'item', image = 'weed_og-kush.png', unique = false, useable = true, shouldClose = true, description = 'Bag of OG Kush weed' },
['weed_skunk'] = { name = 'weed_skunk', label = 'Skunk Weed', weight = 150, type = 'item', image = 'weed_skunk.png', unique = false, useable = true, shouldClose = true, description = 'Bag of Skunk weed' },
['weed_amnesia'] = { name = 'weed_amnesia', label = 'Amnesia Weed', weight = 150, type = 'item', image = 'weed_amnesia.png', unique = false, useable = true, shouldClose = true, description = 'Bag of Amnesia weed' },
['weed_purple-haze'] = { name = 'weed_purple-haze', label = 'Purple Haze Weed', weight = 150, type = 'item', image = 'weed_purple-haze.png', unique = false, useable = true, shouldClose = true, description = 'Bag of Purple Haze weed' },
['weed_ak47'] = { name = 'weed_ak47', label = 'AK-47 Weed', weight = 150, type = 'item', image = 'weed_ak47.png', unique = false, useable = true, shouldClose = true, description = 'Bag of AK-47 weed' },
['crack_baggy'] = { name = 'crack_baggy', label = 'Crack Baggy', weight = 120, type = 'item', image = 'crack_baggy.png', unique = false, useable = true, shouldClose = true, description = 'Baggy of crack' },
['cocaine_baggy'] = { name = 'cocaine_baggy', label = 'Cocaine Baggy', weight = 120, type = 'item', image = 'cocaine_baggy.png', unique = false, useable = true, shouldClose = true, description = 'Baggy of cocaine' },
['meth_baggy'] = { name = 'meth_baggy', label = 'Meth Bag', weight = 120, type = 'item', image = 'meth_baggy.png', unique = false, useable = true, shouldClose = true, description = 'Bag of meth' },Add to ox_inventory/data/items.lua. The usable items call Crime Creator's client exports directly:
['tablet'] = {
label = 'Tablet', weight = 800, consume = 0,
client = { export = 'qs-crime-creator.tablet' }
},
['organization_paint'] = {
label = 'Paint Can', weight = 1000, consume = 0,
client = { export = 'qs-crime-creator.graffiti' }
},
['spray_cleaner'] = {
label = 'Spray Cleaner', weight = 1000, consume = 0,
client = { export = 'qs-crime-creator.graffitiCleaner' }
},
['binoculars'] = {
label = 'Binoculars', weight = 500, consume = 0,
client = { export = 'qs-crime-creator.binoculars' }
},
['vehiclegps'] = { label = 'Vehicle GPS', weight = 300, stack = true, close = true },
['weed_white-widow'] = { label = 'White Widow Weed', weight = 150, stack = true, close = true },
['weed_og-kush'] = { label = 'OG Kush Weed', weight = 150, stack = true, close = true },
['weed_skunk'] = { label = 'Skunk Weed', weight = 150, stack = true, close = true },
['weed_amnesia'] = { label = 'Amnesia Weed', weight = 150, stack = true, close = true },
['weed_purple-haze'] = { label = 'Purple Haze Weed', weight = 150, stack = true, close = true },
['weed_ak47'] = { label = 'AK-47 Weed', weight = 150, stack = true, close = true },
['crack_baggy'] = { label = 'Crack Baggy', weight = 120, stack = true, close = true },
['cocaine_baggy'] = { label = 'Cocaine Baggy', weight = 120, stack = true, close = true },
['meth_baggy'] = { label = 'Meth Bag', weight = 120, stack = true, close = true },For inventories that read the ESX items table:
INSERT INTO `items` (`name`, `label`, `weight`) VALUES
('tablet', 'Tablet', 800),
('organization_paint', 'Paint Can', 1000),
('spray_cleaner', 'Spray Cleaner', 1000),
('binoculars', 'Binoculars', 500),
('vehiclegps', 'Vehicle GPS', 300),
('weed_white-widow', 'White Widow Weed', 150),
('weed_og-kush', 'OG Kush Weed', 150),
('weed_skunk', 'Skunk Weed', 150),
('weed_amnesia', 'Amnesia Weed', 150),
('weed_purple-haze', 'Purple Haze Weed', 150),
('weed_ak47', 'AK-47 Weed', 150),
('crack_baggy', 'Crack Baggy', 120),
('cocaine_baggy', 'Cocaine Baggy', 120),
('meth_baggy', 'Meth Bag', 120);Black money is read from your framework: the
black_moneyaccount on ESX, themarkedbillsitem (itsworth) on QBCore, and theblack_moneyitem on Qbox. Item names can be changed inconfig/main.lua— keep them identical in your inventory.
Claiming Admin Access#
The creator is where organizations, territories, taxing points, the vehicle store, the season pass and PvP battles are made, so /crimecreator is behind a permission check. Anyone else sees "You do not have permission to do this." Either route below grants access:
Automatic, nothing to configure.
ESX: players in the
adminorsuperadmingroup.QBCore / Qbox: the
godoradminpermission, or thecommandace (txAdmin's admin group):bash add_principal identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx group.admin add_ace group.admin command allow
Jobs and grades that may open the creator without being admins, in config/main.lua. Set grade = false for every grade of that job.
Config.CreatorJobs = {
{ job = 'police', grade = { 1, 2, 3 } }, -- only these grades
{ job = 'ambulance', grade = false }, -- every grade
}Configuring the Resource#
Organizations, territories, taxing points, the vehicle store, the season pass and PvP battles are all created in game. The files hold the rules of the game — economy, limits, items, keys — and the bridges to your other resources:
File | Contents |
|---|---|
| Language, detection, drug prices, shells and IPLs, upgrades, the garage, graffiti, the tablet (wars, Dark Chat, black market), binoculars, GPS tracker, missions XP, PvP and creator jobs. |
| The mission list and rewards, money laundering, and the vehicle theft mission. |
| The furniture catalogue used to decorate headquarters. |
| The F4 interaction menu, notifications, text UI and progress bars. |
| Bridges for inventories, keys, clothing, dispatch, ambulance, target and weather. |
| Discord logging, one URL per category. |
| Every text the player sees, in 41 languages. |
The values worth reviewing first:
Config.Locale = 'en' -- 41 languages: en, es, fr, de, pt, it, ru, tr, ar, zh...
Config.InteractionKey = 'F4' -- the gang interaction menu (false to disable the key)
Config.UseTarget = false -- true = ox_target / qb-target instead of [E] prompts
Config.PoliceJobs = { 'police', 'sheriff' }
Config.RequiredCops = 0 -- police online needed to sell drugs
Config.Debug = true -- set to false on a live server
Config.Intl = { -- how money is shown in the interface
locales = 'en-US',
options = { style = 'currency', currency = 'USD', minimumFractionDigits = 0 }
}Verifying the Installation#
Restart your server and watch the console while qs-crime-creator starts. A missing table shows up as an oxmysql error naming it — import database.sql again. Then join your server and work through the first loop:
Create an organization
Type
/crimecreator, open Organizations, give it a name, a colour and an owner (yourself), draw its zone, and place its entrance and garage. Usage walks through every field.Open the interaction menu
Press
F4. Inside your organization's zone, Open Boss Menu shows the dashboard, members, ranks, finance, garage, vehicle store and management.Use the tablet
Give yourself a
tabletand use it. The Crime Tablet opens on the rankings — your organization should be on the list at level 1.



