config.lua

Preview File Updated: v1.0.0 - 01/20/2026

Config = {}

-- Framework Configuration
Config.AutoDetectFramework = true -- Set to false to manually select framework below
Config.Framework = 'esx' -- Options: 'esx', 'qb-core', 'qbx-core'

-- Notification System
Config.Notification = 'ox_lib' -- Options: 'ox_lib', 'esx', 'qb'

-- UI System
Config.UISystem = 'ox_lib' -- Options: 'ox_lib', 'esx', 'qb'

-- Interaction System
Config.Interaction = {
    Method = 'ox_lib', -- Options: 'ox_lib', 'ox_target', 'qb-target'
    Distance = 2.5
}

-- Job Restrictions (Leave empty table {} for no restrictions)
Config.AllowedJobs = {
    -- Example ESX: ['police'] = false,   -- Police cannot access blackmarket
    -- Leave empty for everyone to access
    -- For ESX: Use job names from your database
    -- For QBCore: Use job names from your qb-core
}

-- Gang Restrictions (ESX Only - for gang frameworks)
Config.AllowedGangs = {
    -- Example: ['ballas'] = true,    -- Ballas gang can access
    -- Leave empty for everyone to access or if not using gangs
}

-- Item Whitelist (if you want to require specific items to access)
Config.RequiredItems = {
    -- Example: ['blackmarket_membership'] = true,  -- Requires membership card
    -- Leave empty for no item requirement
}

-- Logging Settings
Config.Logging = {
    enable = true,                 -- Enable logging
    webhook = '',                  -- Discord webhook URL for logs
    console = true,                -- Print logs to server console
    logPurchases = true,           -- Log all purchases
    logEntries = true,             -- Log entries/exits
    logExploits = true             -- Log exploit attempts
}

-- Blackmarket Configuration
Config.Blackmarket = {
    -- Black money account name
    BlackMoneyAccount = 'black_money', -- ESX: 'black_money', QBCore/QBox: 'markedbills'
    
    -- Entrance/Exit Locations
    EnterLocation = vector3(891.9625, -2205.6714, 30.5094), -- NEW: Outside location
    ExitLocation = vector3(576.4731, -410.5549, -69.6470), -- Inside blackmarket location
    Heading = 47.3778, -- Heading for when player exits back to entrance
    
    -- Enter Animation Settings
    KnockAnimation = {
        enabled = true,
        duration = 5000, -- milliseconds for knocking animation
        enterDuration = 3000, -- milliseconds for entering animation
        knockDict = 'timetable@jimmy@doorknock@',
        knockAnim = 'knockdoor_idle',
        enterDict = 'missheistfbi3b_ig7',
        enterAnim = 'lift_fibagent_loop'
    },
    
    -- NPCs
    WeaponsNPC = {
        model = 's_m_y_dealer_01',
        coords = vector3(575.0848, -450.1853, -70.6469),
        heading = 90.1680
    },
    
    ToolsNPC = {
        model = 'ig_trafficwarden',
        coords = vector3(574.2350, -439.6049, -70.5068),
        heading = 4.4397,
        name = 'Illegal Tools Dealer'
    },
    
    -- Items for sale
    Weapons = {
        {
            category = 'Pistols',
            items = {
                {name = 'WEAPON_PISTOL', label = 'Pistol', price = 5000},
                {name = 'WEAPON_COMBATPISTOL', label = 'Combat Pistol', price = 7500},
            }
        },
        {
            category = 'SMGs',
            items = {
                {name = 'WEAPON_MICROSMG', label = 'Micro SMG', price = 15000},
                {name = 'WEAPON_SMG', label = 'SMG', price = 20000},
            }
        },
        {
            category = 'Shotguns',
            items = {
                {name = 'WEAPON_PUMPSHOTGUN', label = 'Pump Shotgun', price = 25000},
                {name = 'WEAPON_SAWNOFFSHOTGUN', label = 'Sawed-Off Shotgun', price = 18000},
            }
        },
        {
            category = 'Rifles',
            items = {
                {name = 'WEAPON_ASSAULTRIFLE', label = 'Assault Rifle', price = 35000},
                {name = 'WEAPON_CARBINERIFLE', label = 'Carbine Rifle', price = 40000},
            }
        }
    },
    
    Ammo = {
        {name = 'pistol_ammo', label = 'Pistol Ammo', price = 100},
        {name = 'smg_ammo', label = 'SMG Ammo', price = 200},
        {name = 'shotgun_ammo', label = 'Shotgun Ammo', price = 250},
        {name = 'rifle_ammo', label = 'Rifle Ammo', price = 300},
    },
    
    Attachments = {
        {name = 'pistol_suppressor', label = 'Pistol Suppressor', price = 1500},
        {name = 'smg_suppressor', label = 'SMG Suppressor', price = 2000},
        {name = 'rifle_suppressor', label = 'Rifle Suppressor', price = 3000},
        {name = 'pistol_scope', label = 'Pistol Scope', price = 1200},
        {name = 'smg_scope', label = 'SMG Scope', price = 2500},
        {name = 'rifle_scope', label = 'Rifle Scope', price = 5000},
    },
    
    -- Illegal Tools
    IllegalTools = {
        {name = 'lockpick', label = 'Lockpick', price = 500},
        {name = 'advancedlockpick', label = 'Advanced Lockpick', price = 1500},
        {name = 'handcuffs', label = 'Handcuffs', price = 800},
        {name = 'thermite', label = 'Thermite', price = 3000},
        {name = 'c4', label = 'C4 Explosive', price = 10000},
        {name = 'armor', label = 'Bulletproof Vest', price = 2000},
        {name = 'drill', label = 'Advanced Drill', price = 7500},
        {name = 'hacking_device', label = 'Hacking Device', price = 12000},
        {name = 'bag', label = 'Duffle Bag', price = 1500},
        {name = 'rope', label = 'Rope', price = 600},
        {name = 'blowtorch', label = 'Blowtorch', price = 3500},
        {name = 'bolt_cutter', label = 'Bolt Cutter', price = 2200}
    }
}

-- Language Configuration
Config.Language = {
    -- Notifications
    notEnoughBlackMoney = 'Not enough black money! Need $%s',
    notEnoughSpace = 'Not enough inventory space!',
    purchaseSuccessful = 'Purchased %sx %s for $%s black money',
    
    -- ox_target/QB-Target Labels (clean labels without [E])
    enterBlackmarket = 'Knock on Door',
    exitBlackmarket = 'Exit Blackmarket',
    buyWeapons = 'Weapons Dealer',
    buyIllegalTools = 'Illegal Tools Dealer',
    
    -- ox_lib TextUI (Shows [E] prompt)
    textuiEnterBlackmarket = '[E] Knock on Door',
    textuiExitBlackmarket = '[E] Exit Blackmarket',
    textuiBuyWeapons = '[E] Weapons Dealer',
    textuiBuyIllegalTools = '[E] Illegal Tools Dealer',
    
    -- Progress Bar/Animation Text
    weaponsDealer = 'Weapons Dealer',
    illegalToolsDealer = 'Illegal Tools Dealer',
    knockingOnDoor = 'Knocking on door...',
    enteringBlackmarket = 'Entering blackmarket...',
    negotiating = 'Negotiating with dealer...',
    purchaseCancelled = 'Purchase cancelled',
    exploitDetected = 'Exploit detected!',
    mustBeInside = 'You must be inside the blackmarket!',
    knockSuccess = 'Door opened, entering...',
    doorLocked = 'The door appears to be locked... try again',
    
    -- Menu Titles
    weaponsDealerMenu = 'Weapons Dealer',
    illegalToolsDealerMenu = 'Illegal Tools Dealer',
    weaponCategoriesMenu = 'Weapon Categories',
    
    -- Additional messages
    enteredBlackmarket = 'You entered the blackmarket',
    leftBlackmarket = 'You left the blackmarket',
    npcsRespawned = 'NPCs respawned',
    notInBlackmarket = 'You are not in the blackmarket',
    frameworkNotLoaded = 'Framework not loaded yet',
    knockingCancelled = 'Knocking cancelled',
    waitCooldown = 'Wait %s seconds before trying again'
}

-- Debug Mode
Config.Debug = false

-- Anti-exploit settings
Config.AntiExploit = {
    cooldownTime = 1500, -- 1.5 seconds between purchases
    maxPurchaseQuantity = 50, -- Max items per purchase
    requireInsideFlag = false, -- Set to false so anyone can exit from inside
    blackmarketRadius = 50.0, -- Radius around blackmarket center (for exit detection)
    kickOnExploit = true -- Kick players who try to exploit
}

-- Map Blip Configuration (Optional)
Config.Blip = {
    enable = true,
    coords = vector3(891.9625, -2205.6714, 30.5094), -- Same as entrance
    sprite = 110, -- Gun store blip
    color = 1, -- Red
    scale = 0.8,
    name = 'Blackmarket'
}

Last updated