πŸ§‘β€πŸ€β€πŸ§‘SLEEK MULTI CHARACTER

Here check the installation guide

INSTALLATION GUIDE

1️⃣ Download & Extract

  • Download forge-multicharacter.pack.zip from KEYMASTER.

  • Unzip it and place the forge-multicharacter folder inside your server's resources directory.

2️⃣ Add to Server Startup

  • Open your server.cfg and add the following line:

    ensure forge-multicharacter
  • Do not rename the folderβ€”it must remain as forge-multicharacter, or the resource will not work properly.

  • Ensure it is placed just below your core resources for proper loading.

3️⃣ Remove Conflicting Scripts

  • Delete or remove any other MultiCharacter script you previously installed, such as esx_multicharacter.

  • If you are using ESX + Illenium, you must also remove the following scripts:

    • esx_skin

    • skinchanger

  • ⚠ If you are using ESX + Default, do NOT delete these scripts.

4️⃣ Enable MultiCharacter in ESX_Extended

  • In es_extended, replace the MultiCharacter setting with:

    GetResourceState("forge-multicharacter") ~= "missing"
    • βœ… This must be enabled even if you are using only one character slot.

    • It should look like the screenshot provided.

5️⃣ Install SQL Database

  • You must install the correct SQL file, as there is one version for ESX and another for QB-Core.

  • Ensure you import the correct database structure for your framework.

6️⃣ Role-Based Character Access (Optional)

  • If you want to use role-based character access, you need to:

    • Create a Discord bot and add it to your Discord server.

    • Properly configure the bot token and guild ID in the config.

    • Follow the linked tutorial for setting up role-based access.

  • Bot configuration & Discord integration must be set up in:

    • sv_config.lua (first step)

    • config.lua (final adjustments)

7️⃣ Clear Cache & Restart Server

  • Clear the cache of both your server and your FiveM client.

  • Restart your entire server with forge-multicharacter properly ensured in your server.cfg.

πŸš€ Once installed, everything should be working smoothly!

CONFIG

The following will explain all the settings, one of the most important things that I recommend you spend a few minutes to understand in order to offer your users the best possible experience.

In addition, inside CLIENT and SERVER you will have the files related to the frameworks, where you will have many open ESX and QB functions for you to adapt them to your framework needs.

Config = {}
Config.MULTICHAR = {}
Config.UI = {}
Config.UI.color = {}

--  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—
-- β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β• β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘
-- β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘
-- β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘
-- β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘
--  β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β• β•šβ•β•  β•šβ•β•β•β•β•šβ•β•     β•šβ•β• β•šβ•β•β•β•β•β•  β•šβ•β•β•β•β•β• β•šβ•β•  β•šβ•β•β•šβ•β•  β•šβ•β•   β•šβ•β•   β•šβ•β• β•šβ•β•β•β•β•β• β•šβ•β•  β•šβ•β•β•β•
                                                                                                       
Config.DEBUG = true -- This will activate debug mode, with a bunch of LOGs on F8 that will corroborate the script's operation. Enable it only in necessary cases

-- GENERAL:
Config.framework =  GetResourceState('es_extended') == "started" and "ESX" or GetResourceState('qb-core') == "started" and "QB" or "CUSTOM" -- You don't need to touch this
Config.resource = nil -- nil => default resource name, normally you don't need to change this value, only if you are using a custom ESX or QB version with a different resource name than 'es_extended' or 'qb-core'
--[[
    ~id~        = character id (ESX) / citizenid (QBCore)
    ~license~   = license identifier
    ~steam~     = steam identifier
    ~discord~   = discord identifier 

    default:
        ESX: 'char~id~:~license~'
        QB:  '~id~'
]]
Config.Prefix = 'char' -- You don't need to touch this
Config.identifier = Config.framework == 'ESX' and 'char~id~:~license~' or '~id~' -- You don't need to touch this
Config.useIllenium = (GetResourceState("illenium-appearance") == "started" and true or false) -- You don't need to touch this
Config.lowPerformanceMode = false -- If you put true here. All UI animations will be removed, so there's no possible LAG. This lowers the aesthetics and beauty of the system
Config.particles = true -- If you put false here, it means there will be no particles or dark background. If you think it looks too dark when creating a character, set it to false here. This lowers the aesthetics and beauty of the system
Config.allowLogout = true -- if true, the player is allowed to logout, whithout having to quit and rejoin
Config.relogCommand = "relog" -- The command that can be used to do relog/logout
Config.relogAdmin = false -- if true, only admins can use the relog admin command on other players or themselves
Config.relogAdminCommand = "rp" -- Admin command to force relog on other players. Only if relogAdmin is true
Config.addSlotsCommand = "addslots" -- The command that can be used to add slots

--Dimensions that should not be used selecting the character.
---Dimension 0 is locked by default since this is the default server dimension with the city and players should not be visible during character selection.
Config.lockedDimensions = {
    0, --- default server dimension
}

-- INTERFACE:
Config.UI.volume = 30 -- 0 - 100
Config.UI.color.primary = "0, 224, 255" -- primary UI color
Config.UI.color.secondary = "49, 175, 212" -- secondary UI color
Config.UI.color.hover = "0, 150, 196" -- hover UI color
-- DISCORD ROLES

Config.noDiscordSlots = 3   -- amount of slots unlocked, when no discord bot is connected.
Config.MULTICHAR.slots = { -- Each discord role will access the number of slots you want
    {
        groupId = "your-groupId",
        name = "Premium",
        slots = 3
    },
    {
        groupId = "your-groupId",
        name = "Premium+",
        slots = 4
    },
    {
        groupId = "1233795374641189018",
        name = "Member",
        slots = 2
    },
}
Config.MULTICHAR.buy_new_slot_url = "https://discord.gg/my-server" -- Add the invitation link to your discord. When you want to purchase a new slot, this one will be opened
-- CHARACTER SETTINGS
Config.MULTICHAR.Animations = { -- When you select a character, the character will make an animation from this list 
    {
        animation   = "gestures@f@standing@casual gesture_hello",
        time        = 1000
    },
    {
        animation   = "gestures@m@standing@casual gesture_hello",
        time        = 1000
    },
    {
        animation   = "gestures@m@standing@fat gesture_hello",
        time        = 1000
    }
}
Config.MULTICHAR.canDelete = true -- If true players are allowed to delete their characters. If false, they can only be deleted from the database
Config.MULTICHAR.spawn = vector4(-284.2856, 562.4627, 172.9182, 19.9895) -- The position, where the player will be while in the menu
-- TRANSLATES
Config.language = "en"
Language = {}
Language.en = {
    ['delete_character']    = "DELETE CHARACTER",
    ['playtime']            = "PLAYTIME",
    ['play']                = "PLAY",
    ['yes']                 = "YES",
    ['no']                  = "NO",
    ['you_sure']           = "ARE YOU SURE?",
    ['deleted']             = "Character deleted !",
    ['last_spawn']          = "Here is some information about this character the last spawn point was at ~lsp~", -- ~lsp~ = The players last location (Street [crossing Street])
    ['ls_citizien']         = "Los Santos - Citizien",
    ['gender']              = "Gender",
    ['gender_male']         = "MALE",
    ['gender_female']       = "FEMALE",
    ['job']                 = "JOB",
    ['create_char']         = "CREATE A NEW CHARACTER",
    ['free']                = "FREE",
    ['create']              = "CREATE",
    ['buy_slot']            = "BUY A NEW CHARACTER SLOT",
    ['please_restart']      = "To do this, you must perform a full restart.",
    ['charcard_gender']     = "GENDER",
    ['cash']                = "CASH",
    ['bank']                = "BANK",
    ['nationality']         = "NATIONALITY",
    ['select']              = "SELECT",
    ['please_wait']          = "PLEASE WAIT..."
}

Language.de = {
    ['delete_character']    = "CHARACTER LΓ–SCHEN",
    ['playtime']            = "SPIELZEIT",
    ['play']                = "SPIELEN",
    ['yes']                 = "JA",
    ['no']                  = "NEIN",
    ['you_sure']           = "BIST DU DIR SICHER?",
    ['deleted']             = "Character gelΓΆscht!",
    ['last_spawn']          = "Hier sind ein paar information ΓΌber den character. Die letze position war bei ~lsp~", -- ~lsp~ = The players last location (Street [crossing Street])
    ['ls_citizien']         = "Los Santos - BΓΌrger",
    ['gender']              = "Gender",
    ['gender_male']         = "MΓ„NNLICH",
    ['gender_female']       = "WEIBLICH",
    ['job']                 = "BERUF",
    ['create_char']         = "NEUEN CHARACTER ERSTELLEN",
    ['free']                = "FREI",
    ['create']              = "ERSTELLEN",
    ['buy_slot']            = "NEUEN SLOT KAUFEN",
    ['please_restart']      = "Um diese aktion auszufΓΌhren, musst du dein spiel neu starten.",
    ['charcard_gender']     = "GESCHLECHT",
    ['cash']                = "BARGELD",
    ['bank']                = "BANK",
    ['nationality']         = "NATIONALITΓ„T",
    ['select']              = "AUSWΓ„HLEN",
    ['pease_wait']          = "BITTE WARTE..."
}

Last updated