Skip to content

Configuration

Files: config/config.lua, config/tablet.lua

All configuration options for the wtf_group resource.

config.lua

Framework

lua
Config.Framework = 'auto'          -- 'auto', 'qbcore', 'esx', 'qbx', 'standalone'
Config.FrameworkOverride = nil     -- Override detected framework

Group Limits

lua
Config.MinMembers = 1
Config.MaxMembers = 8
Config.InviteTimeout = 30          -- seconds
Config.DefaultGroupType = 'default'

Config.GroupLimits = {
    default = { min = 1, max = 8 },
    heist = { min = 2, max = 6 },
    robbery = { min = 1, max = 4 },
    job = { min = 1, max = 3 },
    race = { min = 2, max = 12 },
}

Task Settings

lua
Config.LockOnTask = true           -- Lock group during active task
Config.FailOnDrop = false          -- Auto-fail if member drops
Config.PayDropped = false          -- Pay dropped members
Config.AutoPromote = true          -- Auto-promote on leader leave
Config.AutoRejoin = true           -- Auto-rejoin on reconnect
Config.PayoutSplit = 'equal'

Roles

lua
Config.Roles = {
    { id = 'leader',  label = 'Leader',  icon = 'crown',     color = '#e94560', permissions = { ... } },
    { id = 'driver',  label = 'Driver',  icon = 'car',       color = '#3498db', permissions = { 'drive_vehicle' } },
    { id = 'hacker',  label = 'Hacker',  icon = 'laptop',    color = '#2ecc71', permissions = { 'hack_terminal' } },
    { id = 'shooter', label = 'Shooter', icon = 'crosshairs', color = '#e67e22', permissions = { 'use_weapon' } },
    { id = 'healer',  label = 'Healer',  icon = 'medkit',    color = '#9b59b6', permissions = { 'revive_player' } },
    { id = 'member',  label = 'Member',  icon = 'user',      color = '#95a5a6', permissions = {} },
}

Reputation

lua
Config.Reputation = {
    XPPerTaskComplete = 100,
    XPPerTaskFail = 10,
    XPPerMemberBonus = 10,
    LevelThresholds = { 0, 500, 1200, 2500, 5000, 10000, 20000, 50000 },
    MaxLevel = 8,
    Perks = { ... },
}

GPS Blips

lua
Config.Blips = {
    enabled = true,
    requireItem = true,
    item = 'gps_tracker',
    color = 3,
    scale = 0.8,
    footInterval = 500,
    vehicleInterval = 500,
    sprites = { ... },
    vehicleClasses = { ... },
    vehicleModels = { ... },
}

Feature Toggles

lua
Config.Alliance = { MaxAlliances = 3, MaxWars = 2, WarDuration = 3600 }
Config.Turfs = { Enabled = true, MaxTurfs = 5, IncomeInterval = 600 }
Config.Bounties = { Enabled = true, MaxActiveBounties = 10 }
Config.Mailbox = { Enabled = true, MaxMessageLength = 5000 }
Config.Garage = { Enabled = true, MaxVehicles = 10 }

VPN

lua
Config.VpnAdminCommands = {
    enabled = true,
    ace = 'admin',
}

Config.VpnProxies = {
    { id = 'standard', name = 'Standard VPN', description = 'Basic encrypted connection', icon = 'shield', color = '#4caf50', category = 'Free', is_default = true, sort_order = 1 },
    { id = 'regional', name = 'Regional Proxy', description = 'Route through regional servers', icon = 'globe', color = '#2196f3', category = 'Free', is_default = true, sort_order = 2 },
    { id = 'darkweb', name = 'Dark Web Proxy', description = 'Anonymous routing', icon = 'skull', color = '#9c27b0', category = 'Premium', is_default = false, sort_order = 3 },
    { id = 'military', name = 'Military Grade', description = 'Military-grade encryption', icon = 'lock', color = '#ff5722', category = 'Premium', is_default = false, sort_order = 4 },
    { id = 'quantum', name = 'Quantum Encrypted', description = 'Quantum-resistant protocol', icon = 'atom', color = '#00bcd4', category = 'Premium', is_default = false, sort_order = 5 },
    { id = 'ghost', name = 'Ghost Protocol', description = 'Complete digital invisibility', icon = 'ghost', color = '#607d8b', category = 'Premium', is_default = false, sort_order = 6 },
    { id = 'phantom', name = 'Phantom Shield', description = 'Undetectable connection', icon = 'eye-off', color = '#e91e63', category = 'Premium', is_default = false, sort_order = 7 },
}

Proxy fields:

  • id — Unique identifier (used in exports and DB)
  • name — Display name in VPN app
  • description — Tooltip text
  • icon — Icon identifier (shield, globe, skull, lock, atom, ghost, eye-off)
  • color — Hex color for the icon
  • categoryFree or Premium
  • is_defaulttrue = free (no key needed), false = requires license key
  • sort_order — Display order in the app

Darkweb Category

lua
Config.DarkWeb = {
    requiredProxyId = 'darkweb',   -- Which proxy ID triggers darkweb access
    apps = { 'vpn', 'auction' },   -- Apps gated by darkweb VPN connection
}

Fields:

  • requiredProxyId — Must match an id from Config.VpnProxies. When the player is connected to this proxy, the Darkweb category appears in the App Store.
  • apps — List of app IDs that require darkweb VPN to install. These apps are hidden from the App Store and cannot be installed unless connected to the required proxy. Already-installed apps remain accessible.

Behavior:

  • Darkweb category tab only visible when connected to the required proxy
  • Darkweb apps filtered out when not connected
  • Install blocked for darkweb apps without VPN
  • Uninstall always works regardless of VPN
  • VPN app reconnection correctly restores connected view after minimize/restore

Contracts

lua
Config.Contracts = {
    enabled = true,
    maxPerPlayer = 3,
    restockInterval = 3600,
    restockAmount = 5,
    requireGroup = true,
    requireLeaderToStart = true,
    cooldownActivity = 'contract',
    showStock = true,
    showPlayerCount = true,
    globalLock = true,

    categories = {
        { id = 'all', label = 'All', icon = '📋' },
        { id = 'heist', label = 'Heists', icon = '💀' },
        { id = 'robbery', label = 'Robberies', icon = '🔫' },
        { id = 'job', label = 'Jobs', icon = '💼' },
    },

    contracts = {
        gruppe6_heist = {
            name = 'Gruppe6 Armored Truck',
            description = 'Rob a Gruppe6 Stockade armored truck.',
            category = 'heist',
            price = 50000,
            initialStock = 10,
            cooldown = 3600,
            failCooldown = 600,
            minPlayers = 1,
            minLevel = 1,
            enabled = true,
            integration = {
                resource = 'gruppe6-heist',
                startEvent = 'gruppe6_heist:client:startFromContract',
                startTarget = 'client',
            },
        },
    },
}

Fields:

  • enabled — Master toggle for the Contracts app
  • maxPerPlayer — Max owned contracts per player per type
  • restockInterval — Seconds between automatic stock restocks
  • restockAmount — How many units added per restock tick
  • requireGroup — Must be in a group to purchase contracts
  • requireLeaderToStart — Only the group leader can start a purchased contract
  • cooldownActivity — Cooldown key used with Bridge.SetCooldown
  • showStock — Show stock info on contract cards
  • showPlayerCount — Show how many players own each contract
  • globalLock — Only ONE active instance per contract type server-wide
  • categories — Filter tabs in the Browse view
  • contracts — Table of available contract types

Contract fields:

  • name — Display name
  • description — Short description
  • category — Must match a category ID
  • price — Cost to purchase
  • initialStock — Starting stock (restocks to this)
  • cooldown — Seconds after completion before same player can buy again
  • failCooldown — Seconds after failure before same player can buy again
  • minPlayers — Minimum group members required to start
  • minLevel — Minimum group reputation level to start
  • enabled — Toggle individual contract
  • integration — Optional external resource integration

Integration fields:

  • resource — External resource name
  • startEvent — Event name fired on the client when contract starts
  • startTarget'client' or 'server' (where the event is triggered)

tablet.lua

Tablet Settings

lua
Config.Tablet = {
    enabled = true,
    command = 'tablet',
    keybind = 'F7',
    animation = 'phone',
    iconSize = 'medium',
}

Taskbar

lua
Config.Tablet.taskbar = {
    position = 'bottom',
    autoHide = false,
    height = 48,
    showClock = true,
    clockFormat = '24h',
}

Window Manager

lua
Config.Tablet.windows = {
    snapEnabled = true,
    snapThreshold = 30,
    animateWindows = true,
    defaultWidth = 700,
    defaultHeight = 500,
    minWidth = 300,
    minHeight = 200,
}

Themes

3 built-in themes: dark, light, cyberpunk

Notifications

lua
Config.Tablet.notifications = {
    enabled = true,
    sound = true,
    toastDuration = 4000,
    maxVisible = 5,
}

Permissions

lua
Config.Tablet.permissions = {
    requireGroup = false,
    adminOnly = false,
    allowedJobs = {},
}

AIFAZI — FiveM Resources