Configuration

All configuration is handled through config/config.lua. Below you'll find all available options and their defaults.

Basic Settings

Config = {}

-- Language file: config/locales/[locale].lua
Config.Locale = "en"

-- Framework: "qb" | "esx"
Config.Framework = "qb"

-- Target system: "ox" | "qb-target"
Config.Target = "qb-target"

-- Notification system: "ox_lib" | "framework"
Config.Notify = "ox_lib"

Local Chat

Control behavior when players use local chat (default message without a command):

Config.LocalChat = {
    template = 'cmd:ooc',  -- Template to use (or nil to skip)
    range = false,          -- false = global, number = proximity range
}

Module Control

Enable or disable features:

Config.Modules = {
    mask    = true,   -- /mask command and identity masking
    friends = true,   -- Friends list system
    bubble  = true,   -- 3D chat bubbles above heads
}

3D Bubble Configuration

Settings for the 3D chat bubble feature (when /me or /do is used):

Config.Bubble = {
    duration = 5.0,   -- seconds the bubble stays visible
    range    = 15.0,  -- metres — broadcast range & max render distance
    offsetZ  = 0.20,  -- metres above the head bone
}

Announcements

Control server join/leave messages:

Config.Announce = {
    joins  = true,  -- Show "[Player] joined" message
    leaves = true,  -- Show "[Player] left" message
}

Built-in Commands

Each built-in command has extensive customization:

Config.Commands = {

    me = {
        enabled     = true,
        command     = "me",
        description = "In-character roleplay action",
        range       = 10.0,        -- Proximity range
        los         = true,        -- Require line-of-sight
        badge       = { 
            label = 'ME', 
            color = '#E8A838' 
        },
        author      = '{Framework:GetName}',  -- Placeholder
    },

    do_ = {
        enabled     = true,
        command     = "do",
        description = "Describe the environment",
        range       = 10.0,
        los         = true,
        bubble      = true,  -- Use 3D bubble instead of chat
        badge       = { label = 'DO', color = '#5B8DD9' },
        author      = '{Masked:Framework.Functions.GetPlayerName}',
    },

    ooc = {
        enabled     = true,
        command     = "ooc",
        description = "Out-of-character chat",
        range       = 50.0,  -- Can be heard further away
        author      = '{Framework.Functions.GetPlayerName}',
    },

    msg = {
        enabled     = true,
        command     = "msg",
        description = "Private message · /msg [id] [text]",
        author      = '{Framework.Functions.GetPlayerName}',
    },

    twitter = {
        enabled     = true,
        command     = "twitter",
        channel     = "twitter",  -- Channel it belongs to
        description = "Post a tweet · /twitter [text]",
        author      = '{Framework.Functions.GetPlayerName}',
    },

    dice = {
        enabled     = true,
        command     = "dice",
        description = "Roll the dice · /dice [max]",
        range       = 15.0,
    },

    try = {
        enabled     = true,
        command     = "try",
        description = "Attempt an action · /try [action]",
        range       = 15.0,
    },

    adminchat = {
        enabled     = true,
        command     = "adminchat",
        channel     = "admin",
        description = "Admin chat · /adminchat [text]",
    },
}

Job Whisper System

Configure job-specific radio/dispatch channels:

Config.JobWhisper = {

    policeRadio = {
        enabled     = true,
        command     = "r",
        description = "Police radio",
        channel     = 'police',
        template    = T.Presets.jobWhisper('RADIO', '#3498db'),
        sender      = { job = "police", grade = 0 },
        receivers   = {
            { job = "police", grade = 0 },
        },
    },

    policeDispatch = {
        enabled     = true,
        command     = "despacho",
        description = "Police dispatch to EMS",
        channel     = 'police',
        template    = T.Presets.jobWhisper('DESPACHO', '#e67e22'),
        sender      = { job = "police", grade = 0 },
        receivers   = {
            { job = "police", grade = 0 },
            { job = "ambulance", grade = 0 },
        },
    },
}

Job Ads System

Post server-wide announcements from specific job grades:

Config.JobAds = {
    {
        job         = "police",
        description = "",
        command     = "taxiad",
        grade       = { 0, 1, 2, 3 },      -- Grades that can post
        template    = "dont_register:taxi",
        visibility  = { "all" }
    }
}

Framework Hooks

Custom integrations with other resources:

Config.Hooks = {
    ["LB-PHONE"] = {
        birdy = true,  -- Send Birdy posts as /twitter command
    },
}

Creating Templates
../templates/
Channels Setup
../channels/
Commands Setup
../commands/