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
},
}