Config = {}
Locales = {}
Config.Framework = 'esx'
Config.Locale = 'en'
Config.ESX = {
SharedObject = 'esx:getSharedObject'
}
Config.QBCore = {
CoreName = 'qb-core'
}
Config.ClientNotification = function(type, title, description)
exports['ox_lib']:notify({type = type, title = title, description = description, duration = 5000, position = 'top-right'})
end
Config.ServerNotification = function(source, type, title, description)
TriggerClientEvent('fs_chat:notify', source, type, title, description)
end
Config.ServerNotificationAll = function(type, title, description)
TriggerClientEvent('fs_chat:notify', -1, type, title, description)
end
Config.AdminGroups = {
'owner',
'admin',
'superadmin',
'mod',
'moderator'
}
Config.ChatSettings = {
MaxMessages = 10,
MessageDuration = 20000,
FadeAnimation = true,
EnableSound = true,
MaxCharacters = 256,
ShowPlayerID = true,
ShowIDToAll = false,
}
Config.ProximityRanges = {
normal = 20.0,
shout = 40.0,
whisper = 5.0
}
Config.ICNameDisplay = 'firstname'
Config.Enable3DText = true
Config.ThreeDText = {
DrawDistance = 50.0,
DisplayTime = 5000,
Font = 0,
Scale = 0.35,
Color = {r = 255, g = 255, b = 255, a = 215},
BackgroundColor = {r = 0, g = 0, b = 0, a = 100},
EnabledCommands = {'me', 'do', 'melow', 'dolow', 'try', 'trylow', 'roll', 'coin', 'status'}
}
Config.EnableStatus = true
Config.Status = {
Duration = 600000,
DrawDistance = 30.0,
Font = 4,
Scale = 0.3,
Color = {r = 255, g = 200, b = 100, a = 200},
BackgroundColor = {r = 0, g = 0, b = 0, a = 80},
MaxLength = 50,
ShowInChat = true,
AllowClear = true
}
Config.AntiSpam = {
enabled = true,
maxMessages = 3,
timeWindow = 5000,
muteTime = 30000
}
Config.Badges = {
enabled = true,
badges = {
{
name = 'owner',
label = 'OWNER',
icon = 'fa-crown',
color = '#fbbf24',
groups = {'owner'},
priority = 100,
enabled = true
},
{
name = 'admin',
label = 'ADMIN',
icon = 'fa-shield-alt',
color = '#ef4444',
groups = {'admin', 'superadmin'},
priority = 90,
enabled = true
},
{
name = 'moderator',
label = 'MOD',
icon = 'fa-gavel',
color = '#3b82f6',
groups = {'mod', 'moderator'},
priority = 80,
enabled = true
},
{
name = 'vip',
label = 'VIP',
icon = 'fa-star',
color = '#a855f7',
groups = {'vip'},
priority = 70,
enabled = true
},
{
name = 'developer',
label = 'DEV',
icon = 'fa-code',
color = '#10b981',
groups = {'developer', 'dev'},
priority = 95,
enabled = true
}
}
}
Config.AutoMessages = {
enabled = true,
interval = 60000,
randomOrder = false,
messages = {
{
message = 'Text example of auto messages',
icon = 'fa-brands fa-discord',
color = '#5865F2'
},
{
message = 'Text example of auto messages',
icon = 'fa-book',
color = '#3b82f6'
},
{
message = 'Text example of auto messages',
icon = 'fa-question-circle',
color = '#f59e0b'
},
{
message = 'Text example of auto messages',
icon = 'fa-heart',
color = '#ec4899'
}
}
}
Config.UtilityCommands = {
{
name = 'clear',
description = 'Clear your chat messages',
icon = 'fa-eraser',
iconColor = '#6366f1',
color = '#6366f1'
},
{
name = 'hide',
description = 'Toggle chat visibility',
icon = 'fa-eye-slash',
iconColor = '#8b5cf6',
color = '#8b5cf6'
},
{
name = 'pm',
description = 'Send private message (Usage: /pm [id] [message])',
icon = 'fa-envelope',
iconColor = '#ec4899',
color = '#ec4899'
}
}
Config.DiscordWebhook = {
enabled = true,
logCommands = true,
embedFields = {
player = {
name = 'Player',
inline = false
},
steam = {
name = 'Steam',
inline = false
},
discord = {
name = 'Discord',
inline = false
}
},
includeTimestamp = true,
webhooks = {
{
enabled = true,
name = 'General Chat',
url = 'Your Webhook Link',
webhookName = 'FS Chat - General',
webhookAvatar = 'https://i.imgur.com/4M34hi2.png',
footerText = 'General Chat',
footerIcon = '',
logTypes = {'ooc', 'me', 'do', 'try', 'pm', 'anonymous', 'ad', 'announce'}
},
{
enabled = true,
name = 'Emergency Services',
url = 'Your Webhook Link',
webhookName = 'FS Chat - Emergency',
webhookAvatar = 'https://i.imgur.com/police-icon.png',
footerText = 'Emergency Services',
footerIcon = '',
logTypes = {'police', 'ems', 'doc'}
},
{
enabled = false,
name = 'Jobs',
url = '',
webhookName = 'FS Chat - Jobs',
webhookAvatar = '',
footerText = 'Job Chat',
footerIcon = '',
logTypes = {'mechanic', 'taxi', 'job'}
},
{
enabled = false,
name = 'Social Media',
url = '',
webhookName = 'FS Chat - Social',
webhookAvatar = '',
footerText = 'Social Media',
footerIcon = '',
logTypes = {'twitter', 'twitch', 'youtube'}
}
}
}
Config.MessageTypes = {
ooc = {
icon = 'fa-comment',
color = '#3b82f6',
iconColor = '#2563eb',
label = 'OOC',
format = '{player}: {message}'
},
me = {
icon = 'fa-user-circle',
color = '#8b5cf6',
iconColor = '#7c3aed',
label = 'ME',
format = '{player}: {message}'
},
["do"] = {
icon = 'fa-book',
color = '#f59e0b',
iconColor = '#d97706',
label = 'DO',
format = '{player}: {message}'
},
doc = {
icon = 'fa-file-medical',
color = '#ef4444',
iconColor = '#dc2626',
label = 'DOC',
format = '[DOC] {message}'
},
system = {
icon = 'fa-server',
color = '#6366f1',
iconColor = '#4f46e5',
label = 'SYSTEM',
format = '[SYSTEM] {message}'
},
announce = {
icon = 'fa-bullhorn',
color = '#ec2424ff',
iconColor = '#ec2424ff',
label = 'Server',
format = '[SERVER] {message}'
},
staff = {
icon = 'fa-user-shield',
color = '#8b5cf6',
iconColor = '#7c3aed',
label = 'STAFF',
format = '{player}: {message}'
},
police = {
icon = 'fa-shield-alt',
color = '#3b82f6',
iconColor = '#2563eb',
label = 'POLICE',
format = '[POLICE] {message}'
},
ems = {
icon = 'fa-ambulance',
color = '#ef4444',
iconColor = '#dc2626',
label = 'EMS',
format = '[EMS] {message}'
},
mechanic = {
icon = 'fa-wrench',
color = '#f59e0b',
iconColor = '#d97706',
label = 'MECHANIC',
format = '[MECHANIC] {message}'
},
taxi = {
icon = 'fa-taxi',
color = '#eab308',
iconColor = '#ca8a04',
label = 'TAXI',
format = '[TAXI] {message}'
},
try = {
icon = 'fa-dice',
color = '#a855f7',
iconColor = '#9333ea',
label = 'TRY',
format = '{player} {message}'
},
melow = {
icon = 'fa-user-circle',
color = '#6b7280',
iconColor = '#4b5563',
label = 'ME',
format = '{player} (quietly): {message}'
},
dolow = {
icon = 'fa-book',
color = '#78716c',
iconColor = '#57534e',
label = 'DO',
format = '{player} (quietly): {message}'
},
trylow = {
icon = 'fa-dice',
color = '#71717a',
iconColor = '#52525b',
label = 'TRY',
format = '{player} (quietly) {message}'
},
roll = {
icon = 'fa-dice-d20',
color = '#14b8a6',
iconColor = '#0d9488',
label = 'ROLL',
format = '{player} {message}'
},
coin = {
icon = 'fa-coins',
color = '#f59e0b',
iconColor = '#d97706',
label = 'COIN',
format = '{player} {message}'
},
status = {
icon = 'fa-user-injured',
color = '#fbbf24',
iconColor = '#f59e0b',
label = 'STATUS',
format = '{player} sets status: {message}'
},
clearstatus = {
icon = 'fa-times-circle',
color = '#6b7280',
iconColor = '#4b5563',
label = 'STATUS',
format = '{player} cleared their status'
},
twitter = {
icon = 'fa-brands fa-twitter',
color = '#1da1f2',
iconColor = '#0c85d0',
label = 'TWITTER',
format = '@{player}: {message}'
},
twitch = {
icon = 'fa-brands fa-twitch',
color = '#9146ff',
iconColor = '#7928e0',
label = 'TWITCH',
format = '{player}: {message}'
},
youtube = {
icon = 'fa-brands fa-youtube',
color = '#ff0000',
iconColor = '#cc0000',
label = 'YOUTUBE',
format = '{player}: {message}'
},
ad = {
icon = 'fa-ad',
color = '#22c55e',
iconColor = '#16a34a',
label = 'AD',
format = '[ADVERTISEMENT] {message}'
},
anonymous = {
icon = 'fa-user-secret',
color = '#6b7280',
iconColor = '#4b5563',
label = 'ANONYMOUS',
format = '[ANONYMOUS] {message}'
},
job = {
icon = 'fa-briefcase',
color = '#06b6d4',
iconColor = '#0891b2',
label = 'JOB',
format = '{player}: {message}'
},
pm = {
icon = 'fa-envelope',
color = '#f472b6',
iconColor = '#ec4899',
label = 'PM',
format = '{message}'
}
}
Config.Commands = {
{
enabled = true,
name = 'ooc',
description = 'Send an Out of Character message',
type = 'ooc',
restricted = false,
allowedJobs = {},
distance = -1
},
{
enabled = true,
name = 'me',
description = 'Describe your action',
type = 'me',
restricted = false,
allowedJobs = {},
distance = 20.0
},
{
enabled = true,
name = 'do',
description = 'Describe the environment or situation',
type = 'do',
restricted = false,
allowedJobs = {},
distance = 20.0
},
{
enabled = true,
name = 'doc',
description = 'Emergency medical announcement',
type = 'doc',
restricted = true,
allowedJobs = {'ambulance', 'doctor'},
distance = -1
},
{
enabled = true,
name = 'police',
description = 'Police department announcement',
type = 'police',
restricted = true,
allowedJobs = {'police', 'sheriff'},
distance = -1
},
{
enabled = true,
name = 'ems',
description = 'EMS department announcement',
type = 'ems',
restricted = true,
allowedJobs = {'ambulance', 'doctor'},
distance = -1
},
{
enabled = true,
name = 'mechanic',
description = 'Mechanic announcement',
type = 'mechanic',
restricted = true,
allowedJobs = {'mechanic'},
distance = -1
},
{
enabled = true,
name = 'taxi',
description = 'Taxi announcement',
type = 'taxi',
restricted = true,
allowedJobs = {'taxi'},
distance = -1
},
{
enabled = true,
name = 'try',
description = 'Try an action (random success/fail)',
type = 'try',
restricted = false,
allowedJobs = {},
distance = 20.0
},
{
enabled = true,
name = 'melow',
description = 'Describe your action (whisper - short range)',
type = 'melow',
restricted = false,
allowedJobs = {},
distance = 5.0
},
{
enabled = true,
name = 'dolow',
description = 'Describe the environment (whisper - short range)',
type = 'dolow',
restricted = false,
allowedJobs = {},
distance = 5.0
},
{
enabled = true,
name = 'trylow',
description = 'Try an action quietly (whisper - short range)',
type = 'trylow',
restricted = false,
allowedJobs = {},
distance = 5.0
},
{
enabled = true,
name = 'roll',
description = 'Roll a dice (usage: /roll or /roll 20 for d20)',
type = 'roll',
restricted = false,
allowedJobs = {},
distance = 20.0
},
{
enabled = true,
name = 'coin',
description = 'Flip a coin (heads or tails)',
type = 'coin',
restricted = false,
allowedJobs = {},
distance = 20.0
},
{
enabled = true,
name = 'status',
description = 'Set a status above your head (e.g., /status injured)',
type = 'status',
restricted = false,
allowedJobs = {},
distance = -1
},
{
enabled = true,
name = 'clearstatus',
description = 'Clear your current status',
type = 'clearstatus',
restricted = false,
allowedJobs = {},
distance = -1
},
{
enabled = true,
name = 'twitter',
description = 'Send a Twitter message',
type = 'twitter',
restricted = false,
allowedJobs = {},
distance = -1,
allowedUsers = {}
},
{
enabled = true,
name = 'twitch',
description = 'Send a Twitch announcement',
type = 'twitch',
restricted = false,
allowedJobs = {},
distance = -1,
allowedUsers = {}
},
{
enabled = true,
name = 'youtube',
description = 'Send a YouTube announcement',
type = 'youtube',
restricted = false,
allowedJobs = {},
distance = -1,
allowedUsers = {}
},
{
enabled = true,
name = 'ad',
description = 'Place an advertisement',
type = 'ad',
restricted = false,
allowedJobs = {},
distance = -1,
price = 500,
cooldown = 300000
},
{
enabled = true,
name = 'anonymous',
description = 'Send an anonymous message',
type = 'anonymous',
restricted = false,
allowedJobs = {},
distance = -1,
price = 1000,
cooldown = 600000,
blockedJobs = {'police', 'sheriff'}
},
{
enabled = true,
name = 'job',
description = 'Send a job message',
type = 'job',
restricted = false,
allowedJobs = {},
distance = -1
},
{
enabled = true,
name = 'announce',
description = 'Server announcement (admin only)',
type = 'announce',
restricted = true,
allowedJobs = {},
requireAdmin = true,
distance = -1
},
{
enabled = true,
name = 'staff',
description = 'Staff only chat',
type = 'staff',
restricted = true,
allowedJobs = {},
requireAdmin = true,
distance = -1
},
{
enabled = true,
name = 'cash',
description = 'Check your cash balance',
type = 'system',
restricted = false,
allowedJobs = {},
distance = -1
},
{
enabled = true,
name = 'bank',
description = 'Check your bank balance',
type = 'system',
restricted = false,
allowedJobs = {},
distance = -1
},
{
enabled = true,
name = 'showid',
description = 'Show your ID card to nearby players',
type = 'system',
restricted = false,
allowedJobs = {},
distance = 5.0
},
{
enabled = true,
name = 'showlicense',
description = 'Show your license to nearby players',
type = 'system',
restricted = false,
allowedJobs = {},
distance = 5.0
}
}