Configuration
This section includes all configurable files for the selected script. Most settings are configured automatically, but each config.lua file contains a header comment explaining the purpose and usage of every configuration type. Be sure to read the header of each file carefully to fully understand how to customize and adapt the system for QBCORE, ESX, or standalone environments, ensuring seamless integration with your server.
qs-shutters-creator/shared/config.lua
--──────────────────────────────────────────────────────────────────────────────
-- Quasar Store · Configuration Guidelines
--──────────────────────────────────────────────────────────────────────────────
-- This configuration file defines all adjustable parameters for the script.
-- Comments are standardized to help you identify which sections you can safely edit.
--
-- • [EDIT] – Safe for users to modify. Adjust these values as needed.
-- • [INFO] – Informational note describing what the variable or block does.
-- • [ADV] – Advanced settings. Change only if you understand the logic behind it.
-- • [CORE] – Core functionality. Do not modify unless you are a developer.
-- • [AUTO] – Automatically handled by the system. Never edit manually.
--
-- Always make a backup before editing configuration files.
-- Incorrect changes in [CORE] or [AUTO] sections can break the resource.
--──────────────────────────────────────────────────────────────────────────────
Config = Config or {} -- [CORE]
--──────────────────────────────────────────────────────────────────────────────
-- Language Selection [EDIT]
--──────────────────────────────────────────────────────────────────────────────
-- [INFO] Main language for the asset. Locales are under locales/* — add yours if missing.
-- [INFO] Available: "ar","bg","ca","cs","da","de","el","en","es","fa","fr","hi","hu","it","ja","ko","nl","no","pl","pt","ro","ru","sl","sv","th","tr","zh-CN"
--──────────────────────────────────────────────────────────────────────────────
Config.Locale = 'en' -- [EDIT]
--──────────────────────────────────────────────────────────────────────────────
-- Framework & Inventory Detection [AUTO]
--──────────────────────────────────────────────────────────────────────────────
-- [INFO] Auto-detects ESX/QB/QBX and popular inventories. If you renamed resources,
-- extend the tables below or set values manually after adapting code hooks.
--──────────────────────────────────────────────────────────────────────────────
local frameworks = { -- [CORE]
['es_extended'] = 'esx',
['qb-core'] = 'qb',
['qbx_core'] = 'qb',
}
Config.Framework = DependencyCheck(frameworks) or 'none' -- [AUTO]
local inventories = { -- [CORE]
['qs-inventory'] = 'qs',
['ox_inventory'] = 'ox',
['qb-inventory'] = 'qb',
['tgiann-inventory'] = 'tgiann',
}
Config.Inventory = DependencyCheck(inventories) or 'standalone' -- [AUTO]
--──────────────────────────────────────────────────────────────────────────────
-- Default Stash Data [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.DefaultStashData = { -- [EDIT]
maxweight = 1000000,
slots = 30,
}
--──────────────────────────────────────────────────────────────────────────────
-- General Timings [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.AnimDuration = 3000 -- [EDIT] Milliseconds for generic animations
--──────────────────────────────────────────────────────────────────────────────
-- Target / Zones [EDIT]
--──────────────────────────────────────────────────────────────────────────────
-- [INFO] Supported targets: 'qb-target' or 'ox_target'. Others are unsupported.
--──────────────────────────────────────────────────────────────────────────────
Config.TargetWidth = 5.0 -- [EDIT]
Config.TargetHeight = 5.0 -- [EDIT]
Config.UseTarget = false -- [EDIT] Enable target interactions or disable entirely
--──────────────────────────────────────────────────────────────────────────────
-- Creator: Poly / Controls [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.MinPointLength = 70.0 -- [EDIT] Minimum polygon edge length (meters)
-- [INFO] Key mapping table 'Keys' must exist globally in your environment. [ADV]
Config.FreeModeKeys = { -- [EDIT]
ChangeKey = Keys['LEFTCTRL'],
MoreSpeed = Keys['.'],
LessSpeed = Keys[','],
MoveToTop = Keys['TOP'],
MoveToDown = Keys['DOWN'],
MoveToForward = Keys['TOP'],
MoveToBack = Keys['DOWN'],
MoveToRight = Keys['RIGHT'],
MoveToLeft = Keys['LEFT'],
RotateToTop = Keys['6'],
RotateToDown = Keys['7'],
RotateToLeft = Keys['8'],
RotateToRight = Keys['9'],
TiltToTop = Keys['Z'],
TiltToDown = Keys['X'],
TiltToLeft = Keys['C'],
TiltToRight = Keys['V'],
StickToTheGround = Keys['LEFTALT'],
}
ActionControls = { -- [EDIT]
leftClick = { label = 'Left Click', codes = { 24 } },
forward = { label = 'Forward +/-', codes = { 33, 32 } },
right = { label = 'Right +/-', codes = { 35, 34 } },
up = { label = 'Up +/-', codes = { 52, 51 } },
add_point = { label = 'Add Point', codes = { 24 } },
undo_point = { label = 'Undo Last', codes = { 25 } },
rotate_z = { label = 'RotateZ +/-', codes = { 20, 73 } },
rotate_z_scroll = { label = 'RotateZ +/-', codes = { 17, 16 } },
offset_z = { label = 'Offset Z +/-', codes = { 44, 46 } },
boundary_height = { label = 'Z Boundary +/-', codes = { 20, 73 } },
done = { label = 'Done', codes = { 191 } },
cancel = { label = 'Cancel', codes = { 194 } },
space = { label = 'Space', codes = { 22 } },
arrow_up = { label = 'Arrow Up', codes = { 172 } },
arrow_down = { label = 'Arrow Down', codes = { 173 } },
arrow_left = { label = 'Arrow Left', codes = { 174 } },
arrow_right = { label = 'Arrow Right', codes = { 175 } },
}
--──────────────────────────────────────────────────────────────────────────────
-- Camera Options (Creator) [EDIT]
--──────────────────────────────────────────────────────────────────────────────
CameraOptions = { -- [EDIT]
lookSpeedX = 1000.0,
lookSpeedY = 1000.0,
moveSpeed = 20.0,
climbSpeed = 10.0,
rotateSpeed = 20.0,
}
--──────────────────────────────────────────────────────────────────────────────
-- Object Catalog [EDIT]
--──────────────────────────────────────────────────────────────────────────────
-- [INFO] List of placeable shutter props exposed in creator UI.
--──────────────────────────────────────────────────────────────────────────────
Config.ObjectList = { -- [EDIT]
{ label = 'Small 1', object = 'qs-shutter_prop_1_small' },
{ label = 'Large 1', object = 'qs-shutter_prop_1_large' },
{ label = 'Small 2', object = 'qs-shutter_prop_2_small' },
{ label = 'Large 2', object = 'qs-shutter_prop_2_large' },
{ label = 'Small 3', object = 'qs-shutter_prop_3_small' },
{ label = 'Large 3', object = 'qs-shutter_prop_3_large' },
}
--──────────────────────────────────────────────────────────────────────────────
-- Audio / UX [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.MusicPath = 'nui://qs-shutter-creator/web/sounds/' -- [EDIT] NUI path for sounds
Config.EnableSounds = true -- [EDIT] Toggle UI/placement sounds
Config.EnableAnimation = true -- [EDIT] Toggle placement/preview animations
--──────────────────────────────────────────────────────────────────────────────
-- Lockpicking [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.LockpickItem = 'shutter_lockpick' -- [EDIT] Required item name
Config.LockpickMinigame = true -- [EDIT] Use minigame flow for lockpicking
--──────────────────────────────────────────────────────────────────────────────
-- Debug Options [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.Debug = true -- [EDIT] Verbose prints & helpers
Config.ZoneDebug = false -- [EDIT] Draw zone bounds