Configuration

The config/config.lua file controls all the core logic of the multicharacter system, including character slots, spawn settings, framework behavior, appearance handlers, UI content, and more Let’s break it all down.


Config File (config.lua)

This file controls the basic functionality of the multicharacter.

Locale

Sets the active language for the UI.

Config.Locale = "en"

Must match a file inside the /locales/ folder.


Framework Prefix

Prefix used in the database to distinguish character entries (mostly for ESX-based servers).

Config.Prefix = "char"

Appearance Integration

Config.AppereanceResource = "qb-clothing"

Supported options:

  • "qb-clothing"

  • "fivem-appearance"

  • "illenium-appearance"

  • "skinchanger"

  • "tgiann-clothing", "dx_clothing", "rcore_clothing", "dx-clothing", "karma-clothing"

This defines which skin/appearance resource will be used during character creation.


Spawn Settings

Config.SpawnLastLocation = false
Config.defaultSpawn = vector4(-1037.449, -2737.475, 20.1692, 329.1169)
  • SpawnLastLocation: If true, player will spawn at their last known location.

  • defaultSpawn: The default spawn location if not using apartment or housing systems.


Camera Setup

Config.CamCoords = vector4(-556.22, 286.16, 882.2, -85.00)
Config.HiddenCoords = vector4(-779.01, 326.18, 196.08, 91.04)
  • CamCoords: Where the camera is placed during character selection.

  • HiddenCoords: Where your actual ped is teleported (hidden) during selection.


Starter Items

Config.starterItems = {
    { item = "bread", count = 5 },
    { item = "water", count = 5 },
}
  • Items automatically given to the player when they create a new character.


Identifier Settings

Config.Identifier = {
    column = "license",
    type = "license"
}
  • column: The database field to use for linking players.

  • type: Accepted types: "license", "steam", "fivem", "discord".

⚠️ If you’re using Qbox, change to license2.


UI Page Animation

Config.PageAnimation = "slide"

Controls how the multicharacter pages transition.

Options: "slide", "fade", "none"


UI Settings

Config.UISettings = {
    ['serverHeader'] = "SAKA <span>ROLEPLAY</span>",
    ['storeLabel'] = "SAKA <br>STORE",
    ['serverLabel'] = "Saka Roleplay",
    ['serverLogo'] = "https://.../sakaIcon.png",
    ['serverLogoLight'] = "https://.../serverIcon.png",
}

Modify branding, labels, and logos shown in the interface.


PED Animations

Config.Animations = {
    { dict = "anim@heists@heist_corona@single_team", name = "single_team_loop_boss" },
}

Random idle animations shown during character selection.


Character Slot & Limit

Config.defaultMaxNumberCharacters = 5
Config.defaultCharactersLimit = 3
  • defaultMaxNumberCharacters: How many slots are visually shown.

  • defaultCharactersLimit: How many characters the player can actually use (unless upgraded via Discord/Tebex/etc.)


Character Options

Config.canWriteStory = true
Config.canDeleteChar = true
  • canWriteStory: Players can write a short backstory.

  • canDeleteChar: Players can delete characters themselves.


Input Limits

Config.inputsLengths = {
    firstName = { min = 2, max = 20 },
    lastName = { min = 2, max = 20 },
    height = { min = 100, max = 220 },
}
  • Minimum and maximum lengths for first name, last name, and height input.


Birthday Format

Config.birthDayType = "dd/mm/yyyy"

Available formats:

  • "mm/dd/yyyy"

  • "dd/mm/yyyy"

  • "yyyy/mm/dd"


Character Deletion Tables

Config.deleteTables = {
    esx = {
        { table = "users", column = "identifier" },
        ...
    },
    qb = {
        { table = "players", column = "citizenid" },
        ...
    }
}
  • Defines which database rows get deleted when a character is removed.

⚠️ Make sure these tables exist in your database.


Job Icons

Config.JobIcons = {
    ['police'] = 'police.png',
    ['ambulance'] = 'ambulance.png',
    ...
}
  • Maps job names to icons shown in character profiles.

  • Place icon files in the UI assets folder.


Max Music Upload

Config.MaxMusic = 5
  • The maximum number of songs that can be added via the UI.


Logout Command

Config.Commands = {
    ['logout'] = {
        enable = true,
        command = "logout",
        permission = "user"
    }
}
  • Enables a /logout command to return to character selection.

  • permission: Set required permission group.


Theme File (theme.lua)

The config/theme.lua file lets you fully style the multicharacter UI. Two built-in themes are available:

  • Light – Bright, clean look

  • Dark – Dark, high-contrast style

Each theme includes four sections:

General Appearance

Controls core colors for text, backgrounds, buttons, and more.

general = {
    textColor = "#000000",
    textColorSecondary = "#000000",
    background = "#FFFFFFBF",
    musicPlayerBackground = "#FFFFFF",
    musicPlayerFill = "#000000",
    musicPlayerText = "#000000",
    musicPlayerTrack = "#00000042",
    musicPlayerTrackProgress = "#000000",
    closeBackground = "#0000003D",
    closeBorder = "#0000001C",
    closeFill = "#000000",
    characterSelectedBackground = "#00000033",
    inputBorder = "#00000026",
    inputPlaceholder = "#00000057",
    heredityBg = "#00000014",
    selectedHeredityBg = "#0000000D",
    heredityText = "#00000080",
}
  • textColor / textColorSecondary: Primary and secondary text colors

  • background: Overlay or panel background

  • closeBackground, closeBorder, closeFill: Close-button styling

  • characterSelectedBackground: Highlight for selected character slot

  • inputBorder / inputPlaceholder: Styling for input fields


Shortcuts

Styles for on-screen key hints and shortcut prompts.

shortcuts = {
    default = "#FFFFFF5C",
    active = "#FFFFFF",
    textColor = "#00000066",
    activeTextColor = "#00000099",
}
  • default / active: Inactive vs. active key color

  • textColor / activeTextColor: Label colors


Stories

If you use multi-step creation with story prompts, these control the buttons and highlights.

story = {
    buttonBackground = "#FFFFFF24",
    buttonBorder = "#FFFFFF1C",
    buttonFill = "#FFFFFF",
    buttonText = "#FFFFFFCC",
}
  • buttonBackground / buttonBorder: Button container styling

  • buttonFill / buttonText: Button icon/text colors


Settings

Used in any internal settings panels (e.g., Loading Screen, Multicharacter etc.).

settings = {
    boxBackground = "#FFFFFF33",
    switchBackground = "#FFFFFF1C",
    switchCircle = "#FFFFFF",
    activeSwitchBackground = "#FFFFFF66",
    themeBackground = "#FFFFFF1C",
    svgFill = "#FFFFFF",
    dividerColor = "#0000001A",
}
  • boxBackground: Panel container color

  • switchBackground / activeSwitchBackground: Toggle switch styling

  • switchCircle: The knob color on switches

  • svgFill: Color for inline SVG icons


Creating Your Custom Theme

1 - Duplicate either the light or dark block in Config.Themes.

2 - Rename the key (e.g., "custom").

3 - Adjust color codes per section.


Camera Configuration (camLocations.lua)

This file defines the locations, positions, and angles of the camera and ped during character selection or creation.

Basic Options

Config.Cam.FOV = 30.0
Config.Cam.DefaultLocation = 'downtown'
  • FOV: Camera Field of View (zoom level)

  • DefaultLocation: The key of the default camera position used when opening the interface


Camera Presets

You can define multiple camera locations for aesthetic or immersive effects.

Config.Cam.camLocations = {
    ['downtown'] = {
        ['Label'] = "Downtown",
        ['camCoord'] = vector4(69.11, -238.78, 48.50, 249.91),
        ['pedCoord'] = vector4(71.97, -239.84, 48.19, 59.53),
    },
    ['campSide'] = {
        ['Label'] = "Camp Side",
        ['camCoord'] = vector4(3604.75, 4733.33, 6.02, 325.13),
        ['pedCoord'] = vector4(3606.76, 4736.15, 5.65, 147.65),
    },
    ...
}

  • Label: Display name on UI

  • camCoord: Where the camera floats

  • pedCoord: Where the ped (character) stands

You can add as many locations as you want. All appear in a dropdown selector (if supported by the UI).


Camera Movements

Config.Cam.Effect = {
    rotations = {
        x = 0.0,
        y = -10.0,
        z = -70.0,
    },
    offsets = {
        x = 1.0,
        y = 0.0,
        z = 0.5,
    }
}
  • rotations: Adjust camera tilt/angle

  • offsets: Slightly shift the camera from its base position (for dynamic camera effects)


API Keys

Used to integrate third-party services like Spotify.

Spotify Song Catcher Integration

APIKeys = {
    ['clientId']     = "YOUR_CLIENT_ID",
    ['clientSecret'] = "YOUR_CLIENT_SECRET",
}
  • These keys allow integration with the Spotify Web API

  • Use them to fetch songs and their artcovers.

Get your keys here:

🔗 https://developer.spotify.com/dashboard

⚠️ Never share this file publicly. Keep it server-side only!

Last updated