Configuration

Complete configuration reference for nox-chat.

Basic Settings

Language

Config.lang = 'en'  -- 'en' for English, 'ko' for Korean

Framework

Config.framework = 'qbcore'  -- 'standalone', 'qbcore', 'esx', 'esx-legacy'

Discord Role System

Integrate with Discord for role-based permissions:

Config.discordRoles = {
    enabled = false,  -- Enable Discord role integration
    guildId = "your_discord_server_id",
    
    -- Map Discord Role IDs to names
    roleNames = {
        ["123456789012345678"] = "Administrator",
        ["234567890123456789"] = "VIP",
        ["345678901234567890"] = "Premium",
    },
    
    -- Cache settings
    cache = {
        enabled = true,
        duration = 300,  -- 5 minutes
    },
    
    -- Feature permissions by role
    features = {
        customTag = {
            enabled = false,
            roles = { "VIP", "Premium" },
        },
        tts = {
            enabled = false,
            roles = { "Premium" },
        },
        bubbleCustom = {
            enabled = false,
            roles = { "VIP", "Premium" },
        },
        shortcuts = {
            enabled = false,
            roles = {
                ["VIP"] = 5,      -- 5 shortcut slots
                ["Premium"] = 9,  -- 9 shortcut slots
            },
        },
    },
    
    adminRoles = { "Administrator" },
}

Admin System (Standalone)

For servers not using Discord roles:

Config.admins = {
    enabled = true,
    identifierType = 'license',  -- 'license', 'steam', 'discord', 'fivem'
    list = {
        'license:your_license_here',
    },
}

Join/Leave Notifications

Config.joinLeave = {
    enabled = true,
    join = {
        enabled = true,
        message = '🟢 {name} joined the server.',
        color = '#4ade80',
    },
    leave = {
        enabled = true,
        message = '🔴 {name} left the server. ({reason})',
        color = '#f87171',
    },
    showToAll = true,  -- false = admins only
}

Whisper System

Config.whisper = {
    enabled = true,
    command = 'w',        -- /w [id] [message]
    replyCommand = 'r',   -- /r [message]
    color = '#FFB6C1',
}

Custom Tag System

Allow players to create custom name tags:

Config.customTag = {
    enabled = true,
    identifierType = 'license',
    maxLength = 20,
    colors = {
        '#ffffff', '#ff6b6b', '#4ecdc4', '#ffe66d',
        '#95e1d3', '#f38181', '#aa96da', '#fcbad3',
        '#a8d8ea', '#ffd93d',
    },
}

Speech Bubble System

3D speech bubbles above player heads:

Config.bubble = {
    enabled = true,
    duration = 5000,        -- Display time (ms)
    maxDistance = 20.0,     -- Max visible distance
    offsetZ = 0.4,          -- Height above head
    allowCustomColors = true,
    
    presets = {
        { id = 'classic', backgroundColor = 'rgba(0, 0, 0, 0.8)', textColor = '#ffffff' },
        { id = 'modern', backgroundColor = 'rgba(30, 30, 30, 0.95)', textColor = '#e0e0e0' },
        { id = 'neon', backgroundColor = 'rgba(0, 0, 0, 0.9)', textColor = '#00ff88' },
    },
}

TTS System

Text-to-Speech for chat messages:

Config.tts = {
    enabled = true,
    proximityOnly = true,  -- Only for proximity chat
    range = 20.0,
    provider = 'google',   -- 'google' or 'voicerss'
    voicerssApiKey = '',   -- Required if using voicerss
    defaultVoice = 'en',
    
    voices = {
        { id = 'ko', label = '한국어', lang = 'ko' },
        { id = 'en', label = 'English', lang = 'en' },
        { id = 'ja', label = '日本語', lang = 'ja' },
    },
}

⚠️ TTS requires the xsound resource

Anti-Spam System

Config.antiSpam = {
    enabled = true,
    threshold = 10,      -- Messages before warning
    window = 5000,       -- Detection window (ms)
    cooldownTime = 3000, -- Cooldown after warning
    maxWarnings = 3,     -- Warnings before block
    blockTime = 30000,   -- Block duration (ms)
}

Chat Settings

Config.chat = {
    defaultChannel = 'world',
    channelOrder = { 'system', 'world', 'global' },
    proximityDistance = 20.0,
    maxMessages = 100,
    historyLimit = 50,
    
    channels = {
        system = {
            enabled = true,
            type = 'global',
            color = '#4ecdc4',
            adminOnly = true,
        },
        world = {
            enabled = true,
            type = 'proximity',
            radius = 20.0,
            color = '#8b5cf6',
        },
        global = {
            enabled = true,
            type = 'global',
            color = '#a855f7',
        },
    },
}

UI Settings

Config.ui = {
    position = 'left-bottom',  -- 'left-top', 'left-bottom', 'right-top', etc.
    positionLock = false,      -- Allow player customization
    
    fade = {
        enabled = true,
        delay = 5000,
    },
    
    visibility = {
        startVisible = true,
        inactiveOpacity = 0.3,
        activeOpacity = 1.0,
    },
}

Keybinds

Config.keybinds = {
    openChat = {
        enabled = true,
        command = 'openchat',
        defaultKey = 'T',
    },
    toggleChat = {
        enabled = true,
        command = 'togglechat',
        defaultKey = '',  -- No default
    },
}

Commands

Configure RP commands:

Config.commands = {
    ['ooc'] = {
        enabled = true,
        command = 'ooc',
        target = 'global',
        category = 'global',
        prefix = 'prefix_ooc',
    },
    ['me'] = {
        enabled = true,
        command = 'me',
        target = 'proximity',
        radius = 20.0,
        category = 'world',
    },
    ['do'] = {
        enabled = true,
        command = 'do',
        target = 'proximity',
        radius = 20.0,
        category = 'world',
    },
    ['twt'] = {
        enabled = true,
        command = 'twt',
        target = 'global',
        category = 'global',
    },
    ['ad'] = {
        enabled = true,
        command = 'ad',
        target = 'global',
        category = 'global',
        requiresPlayer = true,
    },
}

Last updated: January 28, 2026

Last updated 1 month ago