⚙️Full Configuration Breakdown

🌍 Language Configuration

-- Set the default language for notifications
Config.Language = 'en' -- Available options: 'en', 'de', 'es', 'fr', 'it'

Adding New Languages

To add a new language, edit the shared/translation.lua file and extend the Translations.Languages and Translations.Messages sections.


📢 Notification Configuration

-- Default display duration for notifications (in milliseconds)
Config.DefaultDuration = 5000

🛠️ Framework Configuration

-- Choose the framework to use ('auto', 'esx', or 'qbcore')
Config.Framework = 'esx'

-- Set to 'true' for older ESX versions that use TriggerEvent instead of Export
Config.UseOldESX = false

⏱️ Cooldown Configuration

-- Global cooldown for automatic announcements (in seconds)
Config.AnnounceCooldown = 60

-- Cooldown for admin announcements (in seconds)
Config.AdminAnnounceCooldown = 30

-- Cooldown for internal admin announcements (in seconds)
Config.AdminInternalAnnounceCooldown = 15

-- Cooldown for job announcements (in seconds)
Config.JobAnnounceCooldown = 120

-- Cooldown for internal job announcements (in seconds)
Config.JobInternalAnnounceCooldown = 30

-- Cooldown for player-specific announcements (in seconds)
Config.PlayerAnnounceCooldown = 20

🔄 Automatic Announcement Configuration

-- Enable or disable automatic announcements
Config.EnableAutoAnnounces = true

-- Interval between automatic announcements (in seconds)
Config.AutoAnnounceInterval = 6000

-- List of automatic announcement messages
Config.AutoAnnounces = {
    {message = "Welcome to our server! Have fun playing.", type = "info", duration = 8000},
    {message = "Visit our Discord server for more information.", type = "info", duration = 6000},
    {message = "Need help? Contact an admin with /report.", type = "warning", duration = 7000},
    {message = "Respect other players and follow the rules.", type = "error", duration = 9000},
    {message = "Don't forget to read our server rules!", type = "success", duration = 5000},
}

🔒 Admin Permissions Configuration

-- Admin groups that can send announcements to ALL players
Config.AdminAnnounceAllPerms = {
    ['superadmin'] = true,
    ['admin'] = true,
    ['moderator'] = true,
    ['supporter'] = true
}

-- Admin groups that can send announcements ONLY to team members
Config.AdminAnnounceTeamPerms = {
    ['superadmin'] = true,
    ['admin'] = true,
    ['moderator'] = true,
    ['supporter'] = true
}

-- Admin groups that can send announcements to specific players
Config.AdminAnnouncePlayerPerms = {
    ['superadmin'] = true,
    ['admin'] = true,
    ['moderator'] = true,
    ['supporter'] = true
}

👮‍♂️ Job Announcements Configuration

-- Jobs that can send announcements to all players
Config.JobsWithAnnouncePerms = {
    ['police'] = true,
    ['ambulance'] = true,
    ['mechanic'] = true,
    ['taxi'] = true,
    ['reporter'] = true,
}

-- Jobs that are primarily intended for internal communication
Config.JobsWithInternalAnnounce = {
    ['police'] = true,
    ['ambulance'] = true,
    ['mechanic'] = true,
    ['taxi'] = true,
    ['reporter'] = true,
}

-- Minimum job ranks required for public announcements
Config.JobAnnounceLevels = {
    ['police'] = 3,      -- From rank 3 (e.g., Sergeant)
    ['ambulance'] = 2,   -- From rank 2 (e.g., Paramedic)
    ['mechanic'] = 1,    -- Any mechanic
    ['taxi'] = 2,        -- Only taxi managers (rank 2)
    ['reporter'] = 3,    -- Only senior reporters
}

-- Minimum job ranks required for internal announcements
Config.JobInternalAnnounceLevels = {
    ['police'] = 2,      -- From rank 2 (e.g., Officer)
    ['ambulance'] = 1,   -- Any medic
    ['mechanic'] = 0,    -- Any mechanic
    ['taxi'] = 1,        -- Taxi drivers from rank 1
    ['reporter'] = 1,    -- Reporters from rank 1
}

🔄 TxAdmin Integration

-- Enable or disable TxAdmin integration
Config.EnableTxAdminIntegration = true

-- Configuration for displaying TxAdmin announcements
Config.TxAdminConfig = {
    -- General TxAdmin announcement configuration
    announce = {
        enabled = true,             -- Enable/disable TxAdmin general announcements
        prefix = "[TXADMIN]",       -- Prefix for TxAdmin announcements
        duration = 10000,           -- Display duration in milliseconds
    },
    
    -- Restart announcement configuration
    scheduledRestart = {
        enabled = true,              -- Enable/disable TxAdmin restart announcements
        prefix = "[SERVER RESTART]", -- Prefix for restart announcements
        duration = 12000,            -- Display duration in milliseconds
        showCountdown = true,        -- Whether to show countdown in the message
        message = "Server will restart in %d minutes"  -- Message format for restart announcement
    },
    
    -- Warning announcement configuration
    warnings = {
        enabled = true,              -- Enable/disable TxAdmin warning announcements
        prefix = "[ADMIN WARNING]",  -- Prefix for warning announcements
        duration = 15000,            -- Display duration in milliseconds
        message = "You have been warned by %s. Reason: %s", -- Format for the warning message (admin, reason) - direct to player
        staffMessage = "Player %s was warned by %s. Reason: %s", -- Format for staff notification
        notifyStaff = true           -- Whether to notify all staff members about warnings
    },
    
    -- Direct message configuration
    directMessage = {
        enabled = true,              -- Enable/disable TxAdmin direct messages
        prefix = "[ADMIN DM]",       -- Prefix for direct messages
        duration = 10000,            -- Display duration in milliseconds
        notifyStaff = true,          -- Whether to notify all staff members about direct messages
        message = "%s", -- Format for direct message to player (just the message)
        staffMessage = "Admin %s sent DM to %s: %s" -- Format for staff notification (sender, target, message)
    }
}

📤 Discord Logging

Config.DiscordLogs = {
    enabled = false,                                  -- Enables/Disables Discord logging in general
    forceDisableIfNoHTTP = false,                     -- Don't touch
    -- Discord Webhook URLs for different announcement types
    webhooks = {
        admin = "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE",       -- Admin announcements to all
        team = "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE",        -- Team-internal announcements
        player = "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE",      -- Player-specific announcements
        job = "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE",         -- Job announcements to all
        jobInternal = "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE", -- Job-internal announcements
        auto = "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE",        -- Automatic announcements
        txadmin = "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE"      -- TxAdmin announcements
    },
    
    -- Bot name displayed in Discord
    botName = "X_HUD_Announce",
    
    -- Avatar URL for the bot (optional)
    botAvatar = "https://i.imgur.com/.png",    -- URL to an image for the bot avatar
    
    -- Embed colors for different message types (decimal value of the color)
    colors = {
        admin = 15105570,       -- Orange
        team = 16727113,        -- Red
        player = 16766720,      -- Gold
        job = 3447003,          -- Blue
        jobInternal = 2067276,  -- Dark Blue
        auto = 5763719,         -- Green
        txadmin = 10181046,     -- Purple
        
        -- Colors for different notification types
        info = 3447003,         -- Blue
        success = 5763719,      -- Green
        error = 15548997,       -- Red
        warning = 16776960      -- Yellow
    },
    
    -- General settings
    serverName = "Your Server Name",   -- Name of the server displayed in logs
    includeTimestamp = true,          -- Add timestamp to embed
    
    -- Content displayed in logs
    logContent = {
        showPlayerId = true,          -- Shows player ID in logs
        showPlayerIdentifiers = false, -- Shows player identifiers (steam, license, etc.) in logs
        includeType = true            -- Shows the type of announcement in the log
    }
}

🎨 Notification Appearance and Styles

Notification Types

Config.notificationTypes = {
    'info': {
        accentColor: '#3498db',   -- Blue
        icon: {
            fontawesome: 'fas fa-info-circle',
            ionicons: 'information-circle'
        }
    },
    'success': {
        accentColor: '#2ecc71',   -- Green
        icon: {
            fontawesome: 'fas fa-check-circle',
            ionicons: 'checkmark-circle'
        }
    },
    'error': {
        accentColor: '#e74c3c',   -- Red
        icon: {
            fontawesome: 'fas fa-times-circle',
            ionicons: 'close-circle'
        }
    },
    'warning': {
        accentColor: '#f39c12',   -- Orange
        icon: {
            fontawesome: 'fas fa-exclamation-triangle',
            ionicons: 'warning'
        }
    },
    'default': {
        accentColor: '#7f8c8d',   -- Light Grey
        icon: {
            fontawesome: 'fas fa-bell',
            ionicons: 'notifications'
        }
    },
    'txadminrestart': {
        accentColor: '#c0392b',   -- Darker Red for restart warnings
        icon: {
            fontawesome: 'fas fa-power-off',
            ionicons: 'power'
        }
    },
    'txadminwarning': {
        accentColor: '#d35400',   -- Dark Orange for admin warnings
        icon: {
            fontawesome: 'fas fa-exclamation-circle',
            ionicons: 'alert-circle'
        }
    },
    'txadmindm': {
        accentColor: '#8e44ad',   -- Purple for direct messages
        icon: {
            fontawesome: 'fas fa-comment',
            ionicons: 'chatbubble-ellipses'
        }
    },
    'txadminannounce': {
        accentColor: '#2980b9',   -- Blue for general TxAdmin announcements
        icon: {
            fontawesome: 'fas fa-bullhorn',
            ionicons: 'megaphone'
        }
    },
    'police': {
        accentColor: '#1a237e',   -- Dark Blue
        icon: {
            fontawesome: 'fas fa-shield-alt',
            ionicons: 'shield'
        }
    },
    'ambulance': {
        accentColor: '#b71c1c',   -- Dark Red
        icon: {
            fontawesome: 'fas fa-ambulance',
            ionicons: 'medkit'
        }
    },
    'mechanic': {
        accentColor: '#424242',   -- Dark Grey
        icon: {
            fontawesome: 'fas fa-wrench',
            ionicons: 'construct'
        }
    }
}

Sound Settings

Config.sound = {
    enabled = true,              -- Enable or disable notification sounds
    volume = 0.5,                -- Volume from 0.0 to 1.0
    sounds = {
        'adminannounce': 'sound1.mp3',      -- Sound for admin public announcements
        'admininternal': 'sound2.mp3',  -- Sound for admin internal team announcements
        'jobannounce': 'sound1.mp3',        -- Sound for job public announcements
        'jobinternal': 'sound2.mp3',    -- Sound for job internal announcements
        'playerannounce': 'sound3.mp3',     -- Sound for player-specific announcements
        'txadmin': 'sound4.mp3',            -- Sound for TxAdmin announcements
        'txadminrestart': 'sound5.mp3',     -- Sound for TxAdmin restart announcements
        'txadminwarning': 'sound5.mp3',     -- Sound for TxAdmin warning announcements
        'txadmindm': 'sound5.mp3',          -- Sound for TxAdmin direct messages
        'autoannounce': 'sound1.mp3',       -- Sound for automatic server announcements
        'announce': 'sound1.mp3',           -- Sound for general announcements (fallback)
        'notification': 'sound5.mp3'         -- Sound for normal notifications (fallback)
    }
}

🔄 Feature Toggles

Config.Features = {
    adminAnnounce = true,           -- Admin announcements to all players
    adminInternalAnnounce = true,   -- Admin announcements only for team members
    jobAnnounce = true,             -- Job announcements to all players
    jobInternalAnnounce = true,     -- Job announcements only for members of the same job
    autoAnnounce = true,            -- Automatic announcements
    txAdminIntegration = true,      -- TxAdmin integration
    testCommand = true,             -- Test command for displaying different message types
    showAdminName = true,           -- Shows the admin's name in admin announcements
    showAdminGroup = true,          -- Shows the admin's group in admin announcements
    useRoleplayNames = true         -- Uses RP names instead of Steam names in job announcements
}

📊 Notification Duration

Config.AdminDuration = 7000       -- Display duration for admin announcements
Config.TeamDuration = 6000        -- Display duration for team announcements
Config.PlayerDuration = 10000     -- Display duration for player-specific announcements

📊 Notification Prefixes

-- Prefix for admin announcements to all players
Config.GetAdminPrefix = function(adminName, adminGroup, showName, showGroup)
    local prefix = "[ADMIN"
    if showGroup then
        prefix = prefix .. " " .. adminGroup:upper()
    end
    if showName then
        prefix = prefix .. ": " .. adminName
    end
    prefix = prefix .. "]"
    return prefix
end

-- Prefix for admin announcements to team members
Config.GetTeamPrefix = function(adminName, adminGroup)
    return "[TEAM INTERNAL " .. adminGroup:upper() .. ": " .. adminName .. "]"
end

-- Prefix for admin announcements to specific players
Config.GetPlayerAnnouncePrefix = function(adminName, adminGroup, showName, showGroup)
    local prefix = "[ADMIN"
    if showGroup then
        prefix = prefix .. " " .. adminGroup:upper()
    end
    if showName then
        prefix = prefix .. ": " .. adminName
    end
    prefix = prefix .. " → YOU]"
    return

Last updated