# Config

```lua
QueueConfig = {
    Debug = {
        Enabled         = true,
        AccessDecisions = false,
        QueueJoinDump   = false,
    },
    -- Blacklist: kick players with these permission tokens on connect
    BlacklistEnabled = true,
    BlockedRoles = {
        ["ActiveLOA"] = "\n⚠️ ─────────────────── ⚠️\n\n  NORTHERN LIGHTS ROLEPLAY\n  Access Denied - Active LOA\n\n  You are temporarily restricted from joining.\n  Please contact staff if this is an error.\n\n⚠️ ─────────────────── ⚠️",
    },
    BlockedDefaultReason = "\n⛔ ACCESS DENIED\n\nYou have a restricted Discord role.\nContact staff at discord.gg/NLRPFivePD",
    -- Whitelist: only players with these permission tokens can join
    WhitelistEnabled = true,
    WhitelistRoles = {
        ["Owner"]      = true,
        ["Management"] = true,
        ["Developer"]  = true,
        ["NLRPTester"] = true,
    },
    WhitelistDefaultReason = "\n🔒 SERVER LOCKED\n\nThis server is currently in developer mode.\nJoin our main server for more info:\ndiscord.gg/NLRPFivePD",
    WhitelistNoDiscordReason = "\n⚠️ DISCORD REQUIRED\n\nYou must have Discord linked and be whitelisted to join this server.\ndiscord.gg/NLRPFivePD",
    -- Queue system
    Queue = {
        CardEnabled = true,     -- Adaptive Card OFF => queue OFF
        DebugLevel  = 1,        -- 0=off, 1=basic, 2=advanced, 3=everything
        Appearance = {
            DefaultAvatarUrl = "https://cdn.discordapp.com/embed/avatars/0.png",
        },
        -- Commands (in game + console)
        Commands = {
            EnableInGame       = true,
            EnableConsole      = true,
            HoldCommand        = "queuehold",
            ToggleQueueCommand = "queue",
            -- Permission tokens checked via nlrp_permissions export
            Permissions        = {"Owner"},
        },
        StartupWaitSeconds = 10,
        MaxQueueSlots      = 30,
        MaxEntries         = 8, -- Max people shown on Queue Screen
        -- Must have Discord linked to join
        RequireDiscordLinked = {
            Enabled     = false,
            KickMessage = "You must have a Discord account linked to FiveM to join this server.",
        },
        AutoConnect = {
            Enabled    = true,
            HoldMs     = 10000,
            AllowPlaySkip = true,
            SkipAutoConnectCountdownAfterHold = true,
        },
        Hold = {
            DefaultMinutes = 5,
            BypassEnabled  = true,
            BypassRoles    = {
                ["Owner"]      = true,
                ["Management"] = true,
                ["Developer"]  = true,
            },
        },
        DevHold = {
            EnableByDefault = false,
            SkipAutoConnectCountdownOnRelease = false,
        },
        SpamLimiter = {
            Enabled         = true,
            CooldownSeconds = 3,
        },
        ReservedSlots = {
            Enabled = true,
            Count   = 2,
        },
        -- Queue ranks / roles | Higher = better
        Ranks = {
            ["Owner"]            = {priority = 10000, reserved = true,  label = "Owner"},
            ["Management"]       = {priority = 1000,  reserved = false, label = "Management"},
            ["SeniorAdmin"]      = {priority = 700,   reserved = false, label = "Senior Admin"},
            ["Admin"]            = {priority = 600,   reserved = false, label = "Admin"},
            ["Mod"]              = {priority = 300,   reserved = false, label = "Mod"},
            ["DonatorExclusive"] = {priority = 100,   reserved = false, label = "Donator Exclusive"},
            ["Queue-Level-2"]    = {priority = 30,    reserved = false, label = "Queue Level 2"},
            ["Queue-Level-1"]    = {priority = 10,    reserved = false, label = "Queue Level 1"},
        },
        PriorityLogic = {
            BasePriority = 0,
            StackRanks   = false,
        },
        TopLeftDisplay = {
            ShowAvatar          = true,
            ShowFiveMName       = true,
            ShowDiscordName     = true,
            ShowDiscordUsername = true,
            ShowDiscordId       = true,
        },
        QueueListDisplay = {
            ShowAvatars         = true,
            ShowFiveMName       = true,
            ShowDiscordName     = true,
            ShowDiscordUsername = true,
            ShowRankName        = true,
            ShowPriority        = false,
            PriorityFormat      = "(P:%d)",
        },
        RankDisplay = {
            DefaultRankLabel = "Member",
            ReservedSuffix   = " ★",
        },
        Demo = {
            Enabled        = true,
            Command        = "queuedemo",
            DefaultCount   = 5,
            DefaultSeconds = 120,
            Priority       = 100,
        },
        Grace = {
            Enabled = false,
            Minutes = 3,
            IgnoreReasons = {
                "Exiting",
                "txAdmin",
            },
        },
        Links = {
            Discord = "https://discord.gg/NLRPFivePD",
            Store   = "https://nlrpfivepd.tip4serv.com/",
        },
        Text = {
            Connection = {
                CheckingDiscord = "Checking Discord role permissions...",
                SpamLimiter     = "You are connecting too quickly. Please wait %d second(s) before trying again.",
                QueueFull       = "The Queue is currently full, please try again shortly.",
                Connecting      = "You are being connected...",
            },
            Commands = {
                ChatPrefix     = "Queue",
                InGameDisabled = "In Game use of this command has been disabled.",
                NoPermission   = "You do not have permission to use this command.",
                DevHoldState   = "Developer Hold (DevMode) is now %s.",
                DemoAdded      = "Added %d dummy queue players for %d seconds.",
            },
            Card = {
                ServerTitle              = "Northern Lights Roleplay",
                DevBanner                = "🚧 DEVELOPER MODE ACTIVE 🚧",
                PermissionsTitle         = "Permissions Preview",
                PermissionsIntro         = "You will receive the following in game permissions:",
                PermissionsNone          = "No special in game permissions were detected for your Discord roles.",
                QueueStatusTitle         = "Queue Status",
                PlayersInQueueTitle      = "Players in Queue:",
                DevHoldBottom            = "Developer queue hold is active.\nYou will not be connected until this is disabled.",
                QueueHoldBottomNoTimer   = "Queue hold is active.\nYou will not be connected until this hold ends.",
                QueueHoldBottomWithTimer = "Queue hold is active.\nYou will be automatically connected in about %d second(s).\nYou will not be connected until this hold ends.",
                AutoConnectWithSkip      = "You will be automatically connected in about %d second(s).\nPress 'Play' to join immediately.",
                AutoConnectNoSkip        = "You will be automatically connected in about %d second(s).",
                QueueDisabledImmediate   = "Queue system is disabled.\nYou are joining immediately.",
                QueueEmptyImmediate      = "Queue is currently empty.\nYou are joining immediately.",
                StartupHeader            = "Server is starting.",
                StartupCountdown         = "Approx %d second(s) before joins are allowed.",
                CardButtonPlay           = "Play",
                CardButtonOkay           = "Okay",
                CardButtonDiscord        = "Join our Discord",
                CardButtonStore          = "Open our Store",
            },
        },
    },
    UI = {
        Colors = {
            Title          = "default",
            SectionTitle   = "default",
            YourQueueRow   = "good",
            OthersQueueRow = "accent",
            Countdown      = "default",
            HoldNotice     = "warning",
            DevMode        = "attention",
            DevModetext    = "warning",
            PermissionsText = "accent",
        },
        Buttons = {
            Align   = "Center",
            Spacing = "Medium",
        },
        Layout = {
            RightHeaderSpacing   = "Small",
            PlayersHeaderSpacing = "None",
            CompactRows          = true,
        },
    },
}

```
