# Configuration

Here is the full `config.lua` for **Imperium Store.**

```lua
--[[
  ___ __  __ ___  ___ ___ ___ _   _ __  __    ___  ___ ___ ___ ___ _____ ___ 
 |_ _|  \/  | _ \| __| _ \_ _| | | |  \/  |  / __|/ __| _ \_ _| _ \_   _/ __|
  | || |\/| |  _/| _||   /| || |_| | |\/| |  \__ \ (__|   /| ||  _/ | | \__ \
 |___|_|  |_|_|  |___|_|_\___|\___/|_|  |_|  |___/\___|_|_\___|_|   |_| |___/
                                                                            
  TEBEX   : https://imperium-scripts.com
  GITBOOK : https://imperiumscripts.gitbook.io/imperium-scripts/
  DISCORD : https://discord.gg/u5TxHBjQdS
--]]


Config = {}

-- ============================================================
-- [ GENERAL SETTINGS ]
-- ============================================================

Config.Debug  = false
Config.Locale = 'en' -- 'en', 'fr', 'es', 'pt', 'de', 'it'

-- ============================================================
-- [ FRAMEWORK & BRIDGE SETTINGS ]
-- ============================================================

Config.Framework          = 'auto' -- 'ESX', 'QBCore', 'auto'
Config.InventorySystem    = 'auto' -- 'ox_inventory', 'qb-inventory', 'qs-inventory', 'esx_inventory', 'auto'
Config.NotificationSystem = 'auto' -- 'ox_lib', 'esx', 'qbcore', 'mythic', 'okokNotify', 'custom', 'auto'
Config.TargetSystem       = 'auto' -- 'ox_target', 'qb-target', 'qtarget', 'auto'
Config.VehicleKeys        = 'auto' -- 'is-smartkeys', 'qb-vehiclekeys', 'qs-vehiclekeys', 'wasabi_carlock', 'jaksam-vehicles-keys', 'mk_vehiclekeys', 'cd_garage', 'okokGarage', 't1ger_keys', 'MrNewbVehicleKeys', 'Renewed', 'mx_carkeys', 'tgiann-hotwire', 'auto'

-- ============================================================
-- [ STORE SETTINGS ]
-- ============================================================

Config.Store = {
    ServerName = 'IMPERIUM', -- Change this to your server name
    DiscordLink = 'https://discord.gg/u5TxHBjQdS', -- Change this to your Discord invite link

    -- Ephemeral (Daily) Shop Settings
    Ephemeral = {
        Enabled = true,           -- Toggle to enable/disable the entire daily shop
        RefreshInterval = 24,    -- Refresh interval in hours (default 24h = midnight)
        PromoCount = 3,          -- Number of vehicles from permanent list to put on promo
        EphemeralVehicleCount = 3, -- Number of unique vehicles from ephemeral pool
        LimitDailyPurchases = true -- Only allow 1 purchase per product per day
    },

    Command = 'store',
    Keybind = {
        Enabled = true,
        DefaultKey = 'F4', -- Default key to open the store (RegisterKeyMapping)
    },
    RefreshCommand = 'refreshstore', -- Command to manually rotate the daily shop
    AdminGroup = 'admin',               -- Group allowed to use the refresh command
    
    AllowPromos = true,                 -- Whether to show discounted permanent products in the daily shop

    -- Format for vehicle plates (8 characters max). 
    -- Use placeholders: ^n for number, ^l for letter, ^x for alphanumeric.
    -- Example: 'BR ^n^n^n ^l^l' -> 'BR 123 AB'
    PlatePattern = 'IS^n^n^n^l^l', 

    -- IMPORTANT: YOUR TEBEX SECRET KEY SHOULD BE SET IN YOUR server.cfg
    -- Add this line to your server.cfg: set sv_tebexSecret "YOUR_KEY_HERE"
    -- To find your key: Tebex -> Integrations -> Game Servers -> Click on your server -> Secret Key

    -- Map Tebex Package IDs to Coins
    -- You find the ID in your Tebex panel (Packages section)
    Packages = {
        [7438066] = 1000, -- Example: Package ID 1234567 gives 1000 coins
        [7438085] = 2000,
        [1234569] = 10000,
        [7438555] = { type = 'vip', level = 'gold', days = 30 } -- VIP silver for 30 days
    },

    Webhooks = {
        Enabled = false,
        GlobalURL = "", -- If set, all logs will go here unless action-specific URL is set
        
        Actions = {
            Purchase = {
                Enabled = true,
                URL = "", -- Specific URL for purchases
                Color = 3066993 -- Green
            },
            TebexClaim = {
                Enabled = true,
                URL = "", -- Specific URL for Tebex claims
                Color = 15158332 -- Red
            },
            CodeRedeem = {
                Enabled = true,
                URL = "", -- Specific URL for promo codes
                Color = 3447003 -- Blue
            },
            AdminGive = {
                Enabled = true,
                URL = "", -- Specific URL for admin coin gives
                Color = 15105570 -- Orange
            },
            AdminRefresh = {
                Enabled = true,
                URL = "", -- Specific URL for shop refreshes
                Color = 10181046 -- Purple
            }
        }
    }
}

-- ============================================================
-- [ VIP SYSTEM ]
-- ============================================================

Config.VIP = {
    Enabled = true, -- Toggle to enable VIP system
    AllowCoinPurchase = true, -- Allow buying VIP with coins in the boutique
    ProrataTime = true -- If true, converts remaining time when switching tiers. If false, overwrites it.
}

-- ============================================================
-- [ STORE CATEGORIES ]
-- ============================================================

Config.Categories = {
    { id = 'ephemeral', label = 'Daily Shop', icon = 'clock' },
    { id = 'vehicles', label = 'Vehicles', icon = 'car' },
    { id = 'items', label = 'Items', icon = 'box' },
    { id = 'vip_shop', label = 'VIP Shop', icon = 'crown' },
    { id = 'vip', label = 'VIP Pass', icon = 'star' },
    { id = 'packs', label = 'Special Bundles', icon = 'package' },
    { id = 'profile', label = 'My Profile', icon = 'user' }, -- Added profile to nav for easier access
}

-- ============================================================
-- [ VIP PRODUCTS ]
-- ============================================================
-- Exclusive products for VIP members.
-- Access is granted to all VIPs, but individual items can be restricted to specific grades.
-- If requiredGrade is nil/missing, all VIPs can buy it.

Config.VIPProducts = {
    { 
        id = 'vip_sentinel_gold', 
        category = 'vip_shop', 
        name = 'Sentinel Gold Edition', 
        description = 'An exclusive Sentinel with tuned performance for Gold members.', 
        price = 4500, 
        image = 'itemImages/sent5stdx.png', 
        model = 'sent5stdx', 
        requiredGrade = 'gold' 
    },
    { 
        id = 'vip_blitz_silver', 
        category = 'vip_shop', 
        name = 'Blitz Silver Edition', 
        description = 'The Benefactor Blitz in special edition for our Silver members and above.', 
        price = 4200, 
        image = 'itemImages/blitz.png', 
        model = 'blitz', 
        requiredGrade = 'silver' 
    },
    { 
        id = 'vip_medikit_bundle', 
        category = 'vip_shop', 
        name = 'VIP Medical Pack', 
        description = 'A bundle of 5 medical kits at a reduced price for all our VIP members.', 
        price = 350, 
        image = 'https://cfx-nui-ox_inventory/web/images/medikit.png', 
        itemName = 'medikit', 
        amount = 5 
    },
    { 
        id = 'vip_repair_bundle', 
        category = 'vip_shop', 
        name = 'VIP Repair Pack', 
        description = 'A bundle of 5 repair kits for the city elite.', 
        price = 500, 
        image = 'https://cfx-nui-ox_inventory/web/images/repairkit.png', 
        itemName = 'repairkit', 
        amount = 5 
    }
}

-- ============================================================
-- [ LOYALTY & REWARDS ]
-- ============================================================

Config.Loyalty = {
    Enabled = true,
    PointsPerCoinSpent = 1, -- 1 Coin Spent = 1 Loyalty Point
    
    -- Tiers / Grades
    Grades = {
        { 
            id = 'bronze', 
            label = 'Bronze', 
            minPoints = 0, 
            color = '#cd7f32', 
            rewards = {'ui.profile.loyalty.bronze_reward'},
            discountPct = 0
        },
        { 
            id = 'silver', 
            label = 'Silver', 
            minPoints = 5000, 
            color = '#c0c0c0', 
            rewards = {'ui.profile.loyalty.discount_5', 'ui.profile.loyalty.silver_badge'},
            discountPct = 5
        },
        { 
            id = 'gold', 
            label = 'Gold', 
            minPoints = 15000, 
            color = '#ffd700', 
            rewards = {'ui.profile.loyalty.discount_10', 'ui.profile.loyalty.gold_badge'},
            discountPct = 10
        },
        { 
            id = 'platinum', 
            label = 'Platinum', 
            minPoints = 30000, 
            color = '#e5e4e2', 
            rewards = {'ui.profile.loyalty.discount_15', 'ui.profile.loyalty.platinum_badge', 'ui.profile.loyalty.priority_support'},
            discountPct = 15
        },
        { 
            id = 'diamond', 
            label = 'Diamond', 
            minPoints = 60000, 
            color = '#b9f2ff', 
            rewards = {'ui.profile.loyalty.discount_20', 'ui.profile.loyalty.diamond_badge'},
            discountPct = 20
        },
    }
}

-- ============================================================
-- [ PERMANENT PRODUCTS ]
-- ============================================================
-- Standard vehicles and items.

Config.PermanentProducts = {
 
    { id = 'veh_racer900', category = 'vehicles', name = 'Racer 900', description = 'Designed to dominate urban circuits.', price = 1850, image = 'itemImages/racer900.png', model = 'racer900' },
    { id = 'veh_serranostr', category = 'vehicles', name = 'Serrano STR', description = 'Luxury meets raw power.', price = 2350, image = 'itemImages/serranostr.png', model = 'serranostr' },
    { id = 'veh_sent5stdx', category = 'vehicles', name = 'Sentinel STDX', description = 'A special edition for connoisseurs.', price = 2350, image = 'itemImages/sent5stdx.png', model = 'sent5stdx' },
    { id = 'veh_blitz', category = 'vehicles', name = 'Benefactor Blitz', description = 'Fast as lightning, elegant as always.', price = 2350, image = 'itemImages/blitz.png', model = 'blitz' },
    { id = 'veh_sr3', category = 'vehicles', name = 'Obey SR3', description = 'German precision and aerodynamic design.', price = 2350, image = 'itemImages/sr3.png', model = 'sr3' },
    { id = 'veh_kerosenesr6', category = 'vehicles', name = 'Kerosene SR6', description = 'Burn asphalt with style.', price = 2350, image = 'itemImages/kerosenesr6.png', model = 'kerosenesr6' },
    { id = 'veh_velocita', category = 'vehicles', name = 'Velocita', description = 'Italian speed in all its glory.', price = 2350, image = 'itemImages/velocita.png', model = 'velocita' },
    { id = 'veh_f140r', category = 'vehicles', name = 'Ubermacht F140R', description = 'A racing beast disguised as a road car.', price = 2350, image = 'itemImages/f140r.png', model = 'f140r' },
    { id = 'veh_eregent', category = 'vehicles', name = 'Enus Eregent', description = 'The pinnacle of refinement and power.', price = 2350, image = 'itemImages/eregent.png', model = 'eregent' },
    { id = 'veh_xx2', category = 'vehicles', name = 'Pfister XX2', description = 'Precision engineering for high-speed thrills.', price = 2350, image = 'itemImages/xx2.png', model = 'xx2' },
    { id = 'veh_xx3', category = 'vehicles', name = 'Pfister XX3', description = 'The ultimate evolution of the Pfister range.', price = 2350, image = 'itemImages/xx3.png', model = 'xx3' },
    { id = 'veh_club8r', category = 'vehicles', name = 'Club 8R', description = 'Compact, nervous and incredibly fun.', price = 2300, image = 'itemImages/club8r.png', model = 'club8r' },
    { id = 'veh_ubmw10', category = 'vehicles', name = 'UBMW 10', description = 'A luxury SUV to dominate the road.', price = 2450, image = 'itemImages/ubmw10.png', model = 'ubmw10' },
    { id = 'veh_ubmw12', category = 'vehicles', name = 'UBMW 12', description = 'Bigger, stronger, more luxurious.', price = 2450, image = 'itemImages/ubmw12.png', model = 'ubmw12' },
    { id = 'veh_gbargento7fs', category = 'vehicles', name = 'Obey Argento SR7', description = 'Silver elegance, steel strength.', price = 2450, image = 'itemImages/gbargento7fs.png', model = 'gbargento7fs' },
    { id = 'veh_gbbisonhf', category = 'vehicles', name = 'Bravado Bison HF', description = 'The uncompromising off-roader.', price = 2450, image = 'itemImages/gbbisonhf.png', model = 'gbbisonhf' },
    { id = 'veh_sultan', category = 'vehicles', name = 'Sultan', description = 'A balanced sports car for everyday use.', price = 1850, image = 'itemImages/gbcyphergts.png', model = 'sultan' },
    { id = 'veh_gbharmann', category = 'vehicles', name = 'Benefactor Harmann', description = 'Sedan comfort with a sports car soul.', price = 1850, image = 'itemImages/gbharmann.png', model = 'gbharmann' },
    { id = 'veh_gbissimetro', category = 'vehicles', name = 'Issi Metro', description = 'Perfect for weaving through urban traffic.', price = 950, image = 'itemImages/gbissimetro.png', model = 'gbissimetro' },
    { id = 'veh_gbirisz', category = 'vehicles', name = 'Iris Z', description = 'Small in size, big on agility.', price = 950, image = 'itemImages/gbirisz.png', model = 'gbirisz' },
    -- Standard Items
    { id = 'item_med', category = 'items', name = 'Medical Kit', description = 'Full care for your injuries.', price = 100, image = 'itemImages/medikit.png', itemName = 'medikit', amount = 1 },
    { id = 'item_repair', category = 'items', name = 'Repair Kit', description = 'Essential for your long journeys.', price = 150, image = 'itemImages/advancedkit.png', itemName = 'repairkit', amount = 1 }
}

-- ============================================================
-- [ EPHEMERAL PRODUCTS ]
-- ============================================================
-- Daily rotation pool.

Config.EphemeralCount = 6 -- Increase to show more daily items
Config.EphemeralPool = {
    { id = 'veh_enviz', category = 'ephemeral', name = 'Envi Z', description = 'Exclusive: Aggressive lines and pure speed.', price = 1850, image = 'itemImages/enviz.png', model = 'enviz' },
    { id = 'veh_sent6', category = 'ephemeral', name = 'Ubermacht Sentinel 6', description = 'Exclusive: The flagship of Ubermacht engineering.', price = 2350, image = 'itemImages/sent6.png', model = 'sent6' },
    { id = 'veh_elegy3', category = 'ephemeral', name = 'Annis Elegy 3', description = 'Exclusive: The JDM legend revisited.', price = 1850, image = 'itemImages/elegy3.png', model = 'elegy3' },
    { id = 'veh_fx3ror', category = 'ephemeral', name = 'Ubermacht FX3 ROR', description = 'Exclusive: An off-road power monster.', price = 5000, image = 'itemImages/fx3ror.png', model = 'fx3ror' },
    { id = 'veh_gravion', category = 'ephemeral', name = 'Pegassi Gravion', description = 'Exclusive: The ultimate bike for speed lovers.', price = 1250, image = 'itemImages/gravion.png', model = 'gravion' },
    { id = 'veh_js95', category = 'ephemeral', name = 'JS 95', description = 'Exclusive: Agility pushed to its limits.', price = 1850, image = 'itemImages/js95.png', model = 'js95' },
    { id = 'veh_reblagtr', category = 'ephemeral', name = 'Ubermacht Rebla GTR', description = 'Exclusive: The fastest SUV of its generation.', price = 2350, image = 'itemImages/reblagtr.png', model = 'reblagtr' },
    { id = 'veh_super1000', category = 'ephemeral', name = 'Ubermacht Super 1000', description = 'Exclusive: An exceptional prototype for the road.', price = 2350, image = 'itemImages/super1000.png', model = 'super1000' },
    { id = 'veh_rgsx', category = 'ephemeral', name = 'RGSX', description = 'Exclusive: The quintessence of modern performance.', price = 1850, image = 'itemImages/rgsx.png', model = 'rgsx' },
    { id = 'veh_yf125', category = 'ephemeral', name = 'Nagasaki YF 125', description = 'Exclusive: A compact racing beast.', price = 1850, image = 'itemImages/yf125.png', model = 'yf125' },
    { id = 'veh_taurion', category = 'ephemeral', name = 'BF Taurion', description = 'Exclusive: Exemplary handling.', price = 1850, image = 'itemImages/taurion.png', model = 'taurion' },
    { id = 'veh_sancfc', category = 'ephemeral', name = 'Sanchez FC', description = 'Exclusive: Dominate any terrain.', price = 1850, image = 'itemImages/sancfc.png', model = 'sancfc' },
    { id = 'veh_g4m82', category = 'ephemeral', name = 'Ubermacht G4 M82', description = 'Exclusive: Raw power under an elegant hood.', price = 2350, image = 'itemImages/g4m82.png', model = 'g4m82' },
    { id = 'veh_pvita', category = 'ephemeral', name = 'Pegassi Vita', description = 'Exclusive: Italian design at its peak.', price = 2350, image = 'itemImages/pvita.png', model = 'pvita' },
    { id = 'veh_gbcomets2r', category = 'ephemeral', name = 'Pfister Comet S2R', description = 'Exclusive: Pure Comet lines.', price = 2350, image = 'itemImages/gbcomets2r.png', model = 'gbcomets2r' },
    { id = 'veh_btento', category = 'ephemeral', name = 'Btento', description = 'Exclusive: A choice of character for your outings.', price = 1850, image = 'itemImages/btento.png', model = 'btento' },
    { id = 'veh_r350', category = 'ephemeral', name = 'R350', description = 'Exclusive: The perfect balance between speed and control.', price = 1850, image = 'itemImages/r350.png', model = 'r350' },
    { id = 'veh_bkronos', category = 'ephemeral', name = 'Bkronos', description = 'Exclusive: Tame time on the road.', price = 2450, image = 'itemImages/bkronos.png', model = 'bkronos' },
    { id = 'veh_kurumar', category = 'ephemeral', name = 'Kuruma R', description = 'Exclusive: Robustness and rally power.', price = 2150, image = 'itemImages/kurumar.png', model = 'kurumar' },

    -- Bonus Ephemeral Items
    { id = 'item_armor', category = 'ephemeral', name = 'Kevlar Vest', description = 'High-quality bulletproof protection.', price = 200, image = 'https://cfx-nui-ox_inventory/web/images/armour.png', itemName = 'armour', amount = 1 }
}

-- ============================================================
-- [ PACKS CONFIGURATION ]
-- ============================================================

Config.Packs = {
    Enabled = true,
    Items = {
        {
            id = 'pack_starter',
            category = 'packs',
            name = 'Starter Pack',
            description = 'Everything you need to kickstart your journey in the city.',
            price = 3500,
            image = 'https://i.imgur.com/8X9y6Rk.png', -- Example image
            contents = {
                { type = 'vehicle', model = 'sultan', label = 'Karin Sultan' },
                { type = 'item', name = 'medikit', amount = 5, label = '5x Medical Kits' },
                { type = 'item', name = 'repairkit', amount = 5, label = '5x Repair Kits' },
                { type = 'money', amount = 50000, label = '$50,000 Cash' }
            }
        },
        {
            id = 'pack_criminal',
            category = 'packs',
            name = 'Heist Pack',
            description = 'The ideal gear for your most risky operations.',
            price = 6000,
            image = 'https://i.imgur.com/x5z2YpX.png', -- Example image
            contents = {
                { type = 'vehicle', model = 'sent6', label = 'Sentinel 6 (Modified)' },
                { type = 'item', name = 'armour', amount = 10, label = '10x Kevlar Vests' },
                { type = 'item', name = 'drill', amount = 2, label = '2x Drills' },
                { type = 'vip', level = 'silver', days = 7, label = '7 Days VIP Silver' }
            }
        }
    }
}

-- ============================================================
-- [ VEHICLE PERFORMANCE REFERENCE ]
-- ============================================================
-- Adjust this to scale the performance bars in the UI.
-- "low"     : Base 120 km/h = 100%
-- "medium"  : Base 200 km/h = 100%
-- "high"    : Base 280 km/h = 100% (Recommended)
-- "extreme" : Base 400 km/h = 100%
Config.PerformanceReference = "medium"
Config.ShowTopSpeed = true -- Show max speed in km/h in the preview modal

-- ============================================================
-- [ TEST DRIVE SETTINGS ]
-- ============================================================

Config.TestDrive = {
    Duration = 30, -- In seconds
    SpawnCoords = vector4(-914.82, -3284.14, 13.94, 60.0), -- Where the vehicle spawns
    ReturnCoords = vector3(-901.32, -3297.6, 13.94),      -- Where the player returns after test drive

    -- Zone Restriction
    UseZone = true, -- If true, player must be within TestDriveZone to start a test drive
    ZoneCoords = vector3(-901.32, -3297.6, 13.94), -- Center of the test drive zone
    ZoneRadius = 10.0,
    
    Blip = {
        Enabled = true,
        Sprite = 225, -- Car icon
        Color = 5, -- Yellow
        Scale = 0.8,
        Label = 'Test Drive Zone'
    }
}


```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://imperiumscripts.gitbook.io/imperium-scripts/scripts/imperium-store/configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
