Multicharacter: config files
These files stay readable in every build (escrow too), so you can change them. Shown as shipped in version 1.0.3.
shared/config.lua
lua
Config = {}
Config.Debug = false
Config.Interior = vector3(-1465.2, -535.7, 55.53) -- Interior to load where characters are previewed
-- Where a brand-new character appears when no starter-apartment script runs (always on
-- ESX and standalone). Must be OUTSIDE: it used to equal Config.Interior, which left new
-- characters stuck inside the selection apartment. Default: LSIA arrivals, like stock
-- qb-multicharacter. vector4 = with heading.
Config.DefaultSpawn = vector4(-1035.71, -2731.87, 13.76, 330.0)
Config.PedCoords = vector4(-1470.19, -530.11, 55.53, 0.71)-- Create preview ped at these coordinates
Config.PedConfig = {
[1] = { coords = vector4(-1470.22, -530.41, 55.53, 20.0), anim = { dict = "timetable@ron@ig_3_couch", anim = "base" } },
[2] = { coords = vector4(-1471.67, -528.42, 55.53, 270.0), anim = { dict = "timetable@ron@ig_3_couch", anim = "base" } },
[3] = { coords = vector4(-1468.36, -529.2, 55.53, 75.0), anim = { dict = "timetable@ron@ig_3_couch", anim = "base" } },
[4] = { coords = vector4(-1474.51, -533.62, 55.55, 313.0), anim = { dict = "timetable@ron@ig_3_couch", anim = "base" } },
}
Config.HiddenCoords = vector4(-1478.0, -540.0, 45.0, 0.0) -- Hides your actual ped while you are in selection
Config.CamCoords = vector4(-1468.1, -534.96, 54.95, 38.57) -- Camera coordinates for character preview screen
Config.EnableDeleteButton = true -- Define if the player can delete the character or not
Config.DefaultNumberOfCharacters = 4 -- Define maximum amount of default characters, Max 4
Config.PlayersNumberOfCharacters = { -- Per-licence slot overrides (licence is in your players/users table)
-- { license = "license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", numberOfChars = 4 },
}
Config.coordsSequence = {
vector4(-1467.49, -534.61, 56.8, 38.68),
vector4(-1466.8, -529.5, 56.8, 120.0),
vector4(-1474.71, -530.11, 56.88, 295.98),
}
Config.duration = 35000 -- 35 seconds per transition
Config.MugshotsEnabled = true
Config.MugshotsTransparent = false
Config.MugshotsBackgroundColor = "rgba(1, 169, 143, 0.2)"
Config.MugshotsInterval = 600000
Config.MugshotsInitialDelayMs = 12000
Config.MugshotsOnJoinDelayMs = 5000
Config.ApplyScaleDelayMs = 3000
Config.ApplyScaleRepeatDelayMs = 8000
Config.customNationality = "American"
Config.idleCameraDelayMs = 60000
Config.PedModels = { male = "mp_m_freemode_01", female = "mp_f_freemode_01" }
Config.CharacterCreation = {
Height = { Min = 150, Max = 200, Default = 175 },
Weight = { Min = 50, Max = 120, Default = 80 },
Birthday = { Default = "2005-05-05", Min = "1900-01-01", Max = "2023-12-31" },
}
Config.Preview = {
RotateSensitivity = 0.25,
CameraFov = 60.0,
FocusDistance = 3.2,
FocusHeight = 0.85,
FocusTargetHeight = 0.35,
FocusDurationMs = 1400,
CreateDistance = 3.0,
CreateHeight = 0.75,
CreateTargetHeight = 0.35,
ScreenFadeInMs = 1000,
ChooseCharFadeOutMs = 10,
ChooseCharWaitMs = 1000,
ChooseCharPostWaitMs = 1500,
CloseDefaultFadeOutMs = 500,
CloseDefaultWaitMs = 2000,
CloseDefaultPreOpenWaitMs = 500,
CloseDefaultFadeInMs = 250,
}
Config.UI = {
WelcomePercentage = "30vh",
LoadingDotsIntervalMs = 500,
LoadingScreenMs = 2000,
SetupCharactersDelayMs = 500,
FadeInPositions = {
CharactersList = "80.6%",
Bar = "79%",
Bar2 = "78.92%",
Icon = "66.66%",
Text = "70.26%",
Text2 = "72.66%",
},
FadeOutPercent = "-40%",
LayoutPosition = "top",
IdentityCreationSide = "left"
}
Config.Notifications = {
CharacterSlotsFull = "Character slots are full",
CharacterDeleted = "Character deleted!",
CharacterDeleteFailed = "Could not delete that character",
DisconnectReason = "You have disconnected from the server",
}
-- QBCore, Qbox and ESX are detected automatically; with none running the
-- script runs standalone. To force one, or to wire up a custom core, edit
-- bridge/config.lua (built in; the lumo-bridge resource is not needed).
-- After an existing character is chosen this hands over to a spawn selector
-- (lumo-spawn, qb-spawn, qbx_spawn). With none of these running, the player is
-- placed at their last location instead (Config.DefaultSpawn when unknown).
-- Add your own spawn resource's name here if it listens for
-- 'qb-spawn:client:setupSpawns'.
Config.SpawnResources = { 'lumo-spawn', 'qb-spawn', 'qbx_spawn' }
Config.LastLocationFallback = true
-- Optional: share theme settings when lumo-ui is installed. Not a dependency.
Config.SyncLumoUI = truebridge/config.lua
lua
--- lumo-multicharacter — framework settings
---
--- QBCore, Qbox and ESX are detected automatically; with none of them running
--- the script runs standalone. Most servers never touch this file. The rest
--- of the settings live in shared/config.lua.
---
--- This folder (bridge/) is the script's built-in framework layer. You do NOT
--- need the separate lumo-bridge resource.
LumoBridgeConfig = {
--- 'auto' | 'qb' | 'qbx' | 'esx' | 'standalone' | 'custom'
--- auto — Qbox (qbx_core) > QBCore (qb-core) > ESX (es_extended) > Fallback
Framework = 'auto',
--- Used by 'auto' when no core is running. 'standalone' = no framework.
--- Set 'custom' only if you wire your own core in Custom below.
Fallback = 'standalone',
--- Print the detected framework and every unresolved call to the console.
Debug = false,
--- Resource names, in case yours are renamed.
Resources = {
qb = 'qb-core',
qbx = 'qbx_core',
esx = 'es_extended',
oxlib = 'ox_lib',
},
--- How long a server callback waits for its answer before giving up (ms).
CallbackTimeout = 15000,
--- Inventory used for starter items. 'auto' probes: lumo-inventory,
--- ox_inventory, qb-inventory, qs-inventory, ps-inventory.
Inventory = 'auto',
--- Appearance resource used for the preview peds and the first-time
--- creator. 'auto' probes: lumo-clothing, illenium-appearance,
--- fivem-appearance, qb-clothing, esx_skin.
Appearance = 'auto',
--- Given to new characters on Qbox and standalone (with an inventory
--- resource running). On QBCore the core's own QBShared.StarterItems wins;
--- ESX uses ESX.StarterItems below.
StarterItems = {
{ item = 'phone', amount = 1 },
{ item = 'id_card', amount = 1 },
{ item = 'driver_license', amount = 1 },
},
ESX = {
--- Starter items on ESX. These three ship in stock ESX Legacy's `items`
--- table (phone, bread, water); id_card/driver_license do not exist there.
StarterItems = {
{ item = 'phone', amount = 1 },
{ item = 'bread', amount = 3 },
{ item = 'water', amount = 3 },
},
--- How ESX multichar identifiers look. %s = slot, %l = licence hex.
IdentifierFormat = 'char%s:%l',
--- true only for an ESX build without per-slot identifiers.
SingleCharacter = false,
--- Warn at boot when esx_multicharacter is still running.
VerifyMulticharAtBoot = true,
--- Character-owned tables wiped when an ESX character is deleted.
--- Missing tables are skipped.
DeleteTables = {
{ table = 'owned_vehicles', column = 'owner' },
{ table = 'user_licenses', column = 'owner' },
{ table = 'datastore_data', column = 'owner' },
{ table = 'addon_inventory_items', column = 'owner' },
{ table = 'addon_account_data', column = 'owner' },
{ table = 'player_mugshots', column = 'citizenid' },
},
--- Override for ESX forks with a different login call:
--- function(source, identifier, newCharacterData) ... return true end
LoginHook = nil,
},
--- Resources that run the whole new-character sequence themselves
--- (pick apartment, place ped, open creator). With one running, this
--- script stands aside after creating the character.
StartingApartmentResources = {
'qbx_properties',
'qbx_apartments',
'ps-housing',
},
--- Standalone (no framework). This script stores the characters in the
--- `lumo_characters` table and is the "core" other scripts read from.
Standalone = {
OwnsCharacters = true, -- keep true in this script
CharacterResource = 'lumo-multicharacter',
SaveInterval = 60000, -- position save, ms
RememberPosition = true,
SetPedModel = true, -- freemode ped matching the gender
},
--- Only for Framework = 'custom'. See docs/CUSTOM-FRAMEWORKS.md.
Custom = {
client = {},
server = {},
inventory = {},
},
--- Before deleting a character, also delete rows that have a FOREIGN KEY
--- on it (Qbox `properties.owner`), or the database refuses the delete.
--- Found automatically from your database.
DeleteLinkedRows = true,
--- Extra character-owned tables to clean when a character is deleted
--- (any framework). Example: { table = 'my_table', column = 'citizenid' }
CharacterDeleteTables = {},
}