Configuration

Config = {}

-- Locale Configuration
-- Language setting (e.g., "en", "tr", "de")
Config.locales = {}
Config.locale = "en"

-- XP System Configuration
-- Amount of XP required to level up (e.g., 100 XP = level 2, 200 XP = level 3, etc.)
Config.NeedXpForLevel = 100

-- Identifier Configuration
-- Type of identifier to use (e.g., "license", "license2", "steam", etc.)
Config.Identifier = "license2"
-- Column name in database for identifier lookup
Config.IdentifierColumn = "license"

-- Character ID Column Configuration
-- Column name in database for character ID (QB uses "citizenid", ESX uses "identifier")
Config.CidColumn = "citizenid"

-- Character Slot Configuration
-- Default number of character slots per player
Config.DefaultCharCount = 3

-- Maximum number of character slots available
Config.CharSlotCount = 10

-- Routing Bucket Configuration
-- Routing bucket ID to use when character selection menu is open (set to 0 when character is selected)
Config.RoutingBucket = 1

-- Spawn Configuration
Config.LastPositionLoad = true -- Set to true to spawn at last position, false to use spawn selector
Config.UseQbApartments = false -- Set to true if you use qb-apartments
Config.DefaultSpawn = vector3(-1035.71, -2731.87, 12.86) -- Default spawn coords if apartments disabled

-- Delete Character Configuration
-- Tables that need to be cleaned before deleting a character
-- Format: ["table_name"] = "column_name"
-- Example: ["properties"] = "owner" means DELETE FROM properties WHERE owner = 'citizenid'
Config.DeletePlayersTable = {
    ["properties"] = "owner",
}

Config.PhotoLocation = vec4(-1877.34, -1210.9, 12.02, 221.67) -- Photo shoot location (x, y, z, heading)
Config.PhotoCamera = vec4(-1876.76, -1211.64, 13.6, 43.37) -- Camera position for photo
Config.PhotoCameraLookAt = vec4(-1877.34, -1210.9, 13.6, 221.67) -- Camera look at position (character head)

-- Spawn Selector Function (called when LastPositionLoad is false)
-- You can add your spawn selector logic here (qb-apartments, qb-spawn, etc.)
Config.SpawnSelector = function(src, citizenid, framework)
    -- Example: Add your spawn selector logic here
    if GetResourceState('ak4y-spawn') == 'started' then
        TriggerClientEvent('ak4y-spawn:OpenSpawnSelector', src)
    end

    if GetResourceState('ak4y-spawnselector') == 'started' then
        TriggerClientEvent('ak4y-spawnselector:openUI', src)
    end

    if GetResourceState('qb-apartments') == 'started' then
        TriggerClientEvent('apartments:client:setupSpawnUI', src, {citizenid = citizenid})
    elseif GetResourceState('qb-spawn') == 'started' then
        TriggerClientEvent('qb-spawn:client:setupSpawns', src, {citizenid = citizenid}, false, nil)
        TriggerClientEvent('qb-spawn:client:openUI', src, true)
    end
end

-- PlayerLoaded function (called after character selection for QB)
Config.PlayerLoaded = function(citizenId)
    -- Custom code here if needed
end

-- PlayerLoaded function (called after character selection for ESX)
Config.PlayerLoadedESX = function(isNew)
    -- Custom code here if needed
end

-- Voice/Sound Configuration
-- Female voice options for character creation
Config.Sounds = {}

Config.Sounds.Female = {
    [1] = { label = "Voice 1", soundName = "sound2" },
    [2] = { label = "Voice 2", soundName = "sound4" },
    [3] = { label = "Voice 3", soundName = "sound6" },
    [4] = { label = "Voice 4", soundName = "sound8" },
    [5] = { label = "Voice 5", soundName = "sound10" },
}

-- Male voice options for character creation
Config.Sounds.Male = {
    [1] = { label = "Voice 1", soundName = "sound1" },
    [2] = { label = "Voice 2", soundName = "sound3" },
    [3] = { label = "Voice 3", soundName = "sound5" },
    [4] = { label = "Voice 4", soundName = "sound7" },
    [5] = { label = "Voice 5", soundName = "sound9" },
}

-- Character Photo Options
-- Predefined photos that players can select for their characters
-- Add image paths here to add more photo options
-- You can use local paths (./img/filename.jpg) or online URLs
-- Recommended: Square images (1:1 ratio) work best, around 512x512px or larger
Config.Photos = {
    [1] = "https://i.pravatar.cc/512?img=1",
    [2] = "https://i.pravatar.cc/512?img=5",
    [3] = "https://i.pravatar.cc/512?img=12",
    [4] = "https://i.pravatar.cc/512?img=18",
    [5] = "https://i.pravatar.cc/512?img=22",
    [6] = "https://i.pravatar.cc/512?img=27",
    [7] = "https://i.pravatar.cc/512?img=33",
    [8] = "https://i.pravatar.cc/512?img=38",
    [9] = "https://i.pravatar.cc/512?img=42",
    [10] = "https://i.pravatar.cc/512?img=47",
    [11] = "https://i.pravatar.cc/512?img=52",
    [12] = "https://i.pravatar.cc/512?img=57",
    [13] = "https://i.pravatar.cc/512?img=62",
    [14] = "https://i.pravatar.cc/512?img=68",
    [15] = "https://i.pravatar.cc/512?img=70",
}

-- Music Configuration
-- Supported sites: YouTube
-- Example format: Just paste the URL of the music/video
Config.Music = {
    [1] = "https://www.youtube.com/watch?v=dQw4w9WgXcQ", -- Rick Astley - Never Gonna Give You Up
    [2] = "https://www.youtube.com/watch?v=kJQP7kiw5Fk", -- Luis Fonsi - Despacito
    [3] = "https://www.youtube.com/watch?v=9bZkp7q19f0", -- PSY - GANGNAM STYLE
    [4] = "https://www.youtube.com/watch?v=OPf0YbXqDm0", -- Mark Ronson - Uptown Funk
    [5] = "https://www.youtube.com/watch?v=fJ9rUzIMcZQ", -- Queen - Bohemian Rhapsody
    [6] = "https://www.youtube.com/watch?v=kXYiU_JCYtU", -- Linkin Park - Numb
    [7] = "https://www.youtube.com/watch?v=IcrbM1l_BoI", -- Eminem - Lose Yourself
    [8] = "https://www.youtube.com/watch?v=y6120QOlsfU", -- Survivor - Eye of the Tiger
    [9] = "https://www.youtube.com/watch?v=StTqXEQ2l-Y" -- AC/DC - Thunderstruck
}

-- Character Animation Options
-- Animations that players can preview on their characters in the character selection screen
-- Format: { label = "Display Name", dict = "animation dictionary", anim = "animation name", duration = milliseconds }
Config.Animations = {
    [1] = {
        label = "Hand Shake",
        dict = "gestures@m@standing@casual",
        anim = "gesture_hello",
        duration = 4500,
    },
    [2] = {
        label = "Salute",
        dict = "anim@mp_player_intincarsalutestd@ds@",
        anim = "idle_a",
        duration = 4500,
    },
    [3] = {
        label = "Thumbs Up",
        dict = "anim@mp_player_intupperthumbs_up",
        anim = "idle_a",
        duration = 4500,
    },
    [4] = {
        label = "Celebration Salute",
        dict = "anim@mp_player_intcelebrationmale@salute",
        anim = "salute",
        duration = 2500,
    },
    [5] = {
        label = "Blow Kiss",
        dict = "anim@mp_player_intcelebrationfemale@blow_kiss",
        anim = "blow_kiss",
        duration = 4500,
    },
    [6] = {
        label = "Facepalm",
        dict = "anim@mp_player_intupperface_palm",
        anim = "idle_a",
        duration = 4000,
    },
    [7] = {
        label = "Clap",
        dict = "anim@mp_player_intcelebrationmale@slow_clap",
        anim = "slow_clap",
        duration = 3000,
    },
}

Last updated