> For the complete documentation index, see [llms.txt](https://fantasy-scripts.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fantasy-scripts.gitbook.io/docs/coin-shop-system/configuration-file.md).

# Configuration File

```lua
Config = {}

-- Framework Settings
-- Options: 'esx', 'qbcore', 'qbox', 'standalone'
Config.Framework = 'esx'

-- Database System (e.g. 'oxmysql', 'mysql-async')
Config.Database = 'oxmysql'

-- ── Garage Integration ────────────────────────────────────────────────────────
-- Options: 'esx', 'qb', 'qbox', 'jg', 'okok', 'cd', 'quasar', 'op', 'rx', 'vms', 'ws', 'my', 'hex', 'bp', 'ak47'
Config.Garage = 'jg'

-- ── Phone Integration ─────────────────────────────────────────────────────────
-- Options: 'esx', 'qb', 'lb', 'lb-unique', 'okok', 'gks', 'gksv2', 'yseries', 'd'
Config.Phone = 'gks'

-- ── Test Drive Spawn Points ────────────────────────────────────────────────────
-- Set spawn coords per vehicle type. Players will be teleported here when a
-- test drive starts, and returned to their original position when it ends.
-- Set a type to false to spawn at the player's current location instead.
Config.TestDriveSpawns = {
    car  = { x = -1242.1538, y = -2942.0396, z = 13.9480, heading = 238.3880 }, -- LSIA runway
    boat = { x = -812.26, y = -1475.28, z = 0.0,   heading = 90.0  }, -- La Puerta harbour
    air  = { x = -1336.0, y = -3044.0,  z = 14.0,  heading = 330.0 }, -- Sandy airfield runway
}

-- General Options
Config.Currency = "coins" -- Primary monetized currency
Config.PlaytimeCurrency = "playpoints" -- Secondary currency for playtime
Config.BuyCoinsLink = 'https://fantasyscripts.tebex.io' -- Tebex link shown as "+" next to coins balance (set to '' to hide)

Config.Command = "shop" -- Command to open the UI
Config.Keybind = "F3" -- Keybind to open the UI (Set to false to disable)

-- ── Shop Branding ─────────────────────────────────────────────────────────────
Config.ShopTitle    = "Fantasy Scripts"   -- Title shown in the sidebar logo
Config.ShopSubtitle = "Coin Shop"  -- Small subtitle below the title

-- ── UI Theme ─────────────────────────────────────────────────────────────────
Config.UITheme = {
    AccentColor     = "#03f8fc",  -- Primary accent: buttons, active nav, glows
    AccentColorDark = "#03f8fc",  -- Darker shade used for gradients
    TabletBg        = "#0a0900",  -- Main tablet background
    SidebarBg       = "#0a0900",  -- Left sidebar background
    CardBg          = "#0a0900",  -- Product & VIP card surface
    CardImageBg     = "#0a0900",  -- Product card image placeholder background (shown when no image is set)
}

-- ── Admin / Redeem Codes ──────────────────────────────────────────────────────
-- /gencode <amount> [coins|playpoints]   – generate a one-use redeem code
-- /redeemcode <code>                     – players redeem a code
-- /givecoins  <id> <amount>              – give coins to a player
-- /givepoints <id> <amount>              – give playpoints to a player
--
-- Grant admin ACE in your server.cfg:
--   add_ace group.admin fs-coinsystem.admin allow
Config.RedeemCodes = {
    Enabled  = true,
    AdminAce = "fs-coinsystem.admin",
}

-- Playtime Rewards Settings
Config.Playtime = {
    Enabled = true,
    Interval = 60, -- Every X minutes of playtime
    RewardAmount = 10, -- How many playpoints granted
    Notify = true,
}

-- VIP Tiers Settings
-- VIP is subscription-based via Tebex. Players subscribe on your Tebex store, then claim
-- their VIP in-game each month using their Tebex transaction ID.
--
-- Tebex setup (per tier package):
--   Game Server Command (on purchase):  buyvipredeemcode {transaction} [tierId]
--   Game Server Command (on renewal):   buyvipredeemcode {transaction} [tierId]
--   (enable "Execute even if player is offline" for both)
--   [tierId] must match the key used below (e.g. 'silver', 'gold', 'diamond')
Config.VIP = {
    Enabled = true,
    -- Fallback store link shown when a tier has no specific TebexLink
    TebexStoreLink = 'https://fantasyscripts.tebex.io',
    Tiers = {
        ['silver'] = {
            Label         = "Silver VIP",
            MonthlyBonus  = 500,    -- Coins awarded each time player claims their monthly renewal
            StoreDiscount = 5,      -- % discount applied on all store purchases
            TebexLink     = 'https://your-store.tebex.io/package/silver-vip',
            TebexPrice    = '$4.99/mo',
        },
        ['gold'] = {
            Label         = "Gold VIP",
            MonthlyBonus  = 1200,
            StoreDiscount = 10,
            TebexLink     = 'https://your-store.tebex.io/package/gold-vip',
            TebexPrice    = '$9.99/mo',
        },
        ['diamond'] = {
            Label         = "Diamond VIP",
            MonthlyBonus  = 3000,
            StoreDiscount = 20,
            TebexLink     = 'https://your-store.tebex.io/package/diamond-vip',
            TebexPrice    = '$19.99/mo',
        },
    }
}

-- ── Currency Conversion ───────────────────────────────────────────────────────
-- Allows players to convert between coins and play points in the shop UI.
Config.CurrencyConvert = {
    Enabled      = true,
    -- Points → Coins: how many points are needed to receive 1 coin  (10 points = 1 coin)
    PointsPerCoin = 10,
    -- Coins → Points: how many points you receive per 1 coin spent  (1 coin = 10 points)
    CoinsPerPoint = 10,
    MinAmount     = 5,   -- minimum source amount per conversion
}

-- Categories & Products (Packs, Vehicles, Weapons, Items, Customizations)
Config.Categories = {
    ['vehicles'] = { Label = "Vehicles", Icon = "car" },
    ['weapons'] = { Label = "Weapons", Icon = "gun" },
    ['items'] = { Label = "Items", Icon = "box" },
    ['packs'] = { Label = "Bundles & Packs", Icon = "gift" },
    ['customizations'] = { Label = "Customizations", Icon = "edit" },
}

Config.Products = {

    -- ─────────────────────────────────────────────────────────────────────────
    -- VEHICLES — Cars
    -- ─────────────────────────────────────────────────────────────────────────
    {
        id = "adder", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Truffade Adder",
        price = 8000, currency = "coins", spawnName = "adder",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 97, handling = 82, acceleration = 93 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/adder.png"
    },
    {
        id = "zentorno", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Pegassi Zentorno",
        price = 7500, currency = "coins", spawnName = "zentorno",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 95, handling = 85, acceleration = 92 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/zentorno.png"
    },
    {
        id = "t20", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Progen T20",
        price = 7000, currency = "coins", spawnName = "t20",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 96, handling = 88, acceleration = 91 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/t20.png"
    },
    {
        id = "osiris", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Pegassi Osiris",
        price = 7200, currency = "coins", spawnName = "osiris",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 96, handling = 84, acceleration = 90 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/osiris.png"
    },
    {
        id = "reaper", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Pegassi Reaper",
        price = 7800, currency = "coins", spawnName = "reaper",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 97, handling = 86, acceleration = 93 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/reaper.png"
    },
    {
        id = "vagner", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Overflod Tyrant",
        price = 9000, currency = "coins", spawnName = "vagner",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 98, handling = 90, acceleration = 95 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/vagner.png"
    },
    {
        id = "deveste", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Deveste Eight",
        price = 9500, currency = "coins", spawnName = "deveste",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 99, handling = 87, acceleration = 96 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/deveste.png"
    },
    {
        id = "krieger", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Överflöd Krieger",
        price = 10000, currency = "coins", spawnName = "krieger",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 99, handling = 92, acceleration = 97 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/krieger.png"
    },
    {
        id = "emerus", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Pfister Comet S2",
        price = 8500, currency = "coins", spawnName = "emerus",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 97, handling = 91, acceleration = 94 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/emerus.png"
    },
    {
        id = "thrax", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Annis S80RR",
        price = 9200, currency = "coins", spawnName = "thrax",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 98, handling = 89, acceleration = 95 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/thrax.png"
    },
    {
        id = "cyclone", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Truffade Thrax",
        price = 8800, currency = "coins", spawnName = "cyclone",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 98, handling = 88, acceleration = 94 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/cyclone.png"
    },
    {
        id = "entity2", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Overflod Entity XXR",
        price = 9800, currency = "coins", spawnName = "entity2",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 99, handling = 90, acceleration = 96 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/entity2.png"
    },
    {
        id = "sultanrs", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Karin Sultan RS",
        price = 3500, currency = "coins", spawnName = "sultanrs",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 88, handling = 90, acceleration = 85 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/sultanrs.png"
    },
    {
        id = "feltzer3", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Benefactor Schlagen GT",
        price = 4500, currency = "coins", spawnName = "feltzer3",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 92, handling = 88, acceleration = 89 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/feltzer3.png"
    },
    {
        id = "pariah", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Ocelot Pariah",
        price = 6000, currency = "coins", spawnName = "pariah",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 96, handling = 87, acceleration = 91 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/pariah.png"
    },
    {
        id = "fmj", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Dewbauchee Vagner",
        price = 5500, currency = "coins", spawnName = "fmj",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 93, handling = 85, acceleration = 90 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/fmj.png"
    },
    {
        id = "scramjet", type = "vehicle", category = "vehicles", vehicleType = "car",
        label = "Declasse Scramjet",
        price = 11000, currency = "coins", spawnName = "scramjet",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 100, handling = 80, acceleration = 98 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/scramjet.png"
    },

    -- ─────────────────────────────────────────────────────────────────────────
    -- VEHICLES — Boats
    -- ─────────────────────────────────────────────────────────────────────────
    {
        id = "jetmax", type = "vehicle", category = "vehicles", vehicleType = "boat",
        label = "Shitzu Jetmax",
        price = 3000, currency = "coins", spawnName = "jetmax",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 88, handling = 72, acceleration = 80 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/jetmax.png"
    },
    {
        id = "speeder2", type = "vehicle", category = "vehicles", vehicleType = "boat",
        label = "Pegassi Speeder",
        price = 3500, currency = "coins", spawnName = "speeder2",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 85, handling = 75, acceleration = 82 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/speeder2.png"
    },
    {
        id = "tug", type = "vehicle", category = "vehicles", vehicleType = "boat",
        label = "Tug",
        price = 2000, currency = "coins", spawnName = "tug",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 55, handling = 60, acceleration = 50 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/tug.png"
    },
    {
        id = "seashark3", type = "vehicle", category = "vehicles", vehicleType = "boat",
        label = "Nagasaki Seashark",
        price = 1500, currency = "coins", spawnName = "seashark3",
        testDrive = { enabled = true, time = 60 },
        stats = { speed = 78, handling = 80, acceleration = 75 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/seashark3.png"
    },

    -- ─────────────────────────────────────────────────────────────────────────
    -- VEHICLES — Aircraft
    -- ─────────────────────────────────────────────────────────────────────────
    {
        id = "buzzard2", type = "vehicle", category = "vehicles", vehicleType = "air",
        label = "Buzzard Attack Chopper",
        price = 8000, currency = "coins", spawnName = "buzzard2",
        testDrive = { enabled = true, time = 90 },
        stats = { speed = 78, handling = 80, acceleration = 75 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/buzzard2.png"
    },
    {
        id = "swift2", type = "vehicle", category = "vehicles", vehicleType = "air",
        label = "Swift Deluxe",
        price = 6000, currency = "coins", spawnName = "swift2",
        testDrive = { enabled = true, time = 90 },
        stats = { speed = 65, handling = 78, acceleration = 60 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/swift2.png"
    },
    {
        id = "volatus", type = "vehicle", category = "vehicles", vehicleType = "air",
        label = "Buckingham Volatus",
        price = 5500, currency = "coins", spawnName = "volatus",
        testDrive = { enabled = true, time = 90 },
        stats = { speed = 60, handling = 75, acceleration = 55 },
        stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/volatus.png"
    },

    -- ─────────────────────────────────────────────────────────────────────────
    -- WEAPONS
    -- ─────────────────────────────────────────────────────────────────────────
    {
        id = "wep_heavysnipermk2", type = "weapon", category = "weapons",
        label = "Heavy Sniper MK2",
        price = 500, currency = "coins",
        weaponName = "weapon_heavysniper_mk2", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/heavysnipermk2.png"
    },
    {
        id = "wep_aug_medusa", type = "weapon", category = "weapons",
        label = "Aug Medusa",
        price = 360, currency = "coins",
        weaponName = "weapon_aug_medusa", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_AUG_MEDUSA.png"
    },
    {
        id = "wep_frpredmask", type = "weapon", category = "weapons",
        label = "Red Mask Rifle",
        price = 260, currency = "coins",
        weaponName = "weapon_frpredmask", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_FRPREDMASK.png"
    },
    {
        id = "wep_glitchpopvandal", type = "weapon", category = "weapons",
        label = "Glitch Pop Rifle",
        price = 275, currency = "coins",
        weaponName = "weapon_glitchpopvandal", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_GLITCHPOPVANDAL.png"
    },
    {
        id = "wep_frpgraverifle", type = "weapon", category = "weapons",
        label = "Grave Rifle",
        price = 240, currency = "coins",
        weaponName = "weapon_frpgraverifle", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_FRPGRAVERIFLE.png"
    },
    {
        id = "wep_frprevolver", type = "weapon", category = "weapons",
        label = "Skull Revolver",
        price = 200, currency = "coins",
        weaponName = "weapon_frprevolver", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_FRPREVOLVER.png"
    },
    {
        id = "wep_wolfrifle", type = "weapon", category = "weapons",
        label = "Wolf Rifle",
        price = 330, currency = "coins",
        weaponName = "weapon_wolfrifle", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_WOLFRIFLE.png"
    },
    {
        id = "wep_demonkilo", type = "weapon", category = "weapons",
        label = "Demon Kilo Rifle",
        price = 350, currency = "coins",
        weaponName = "WEAPON_DEMONKILO", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_DEMONKILO.png"
    },
    {
        id = "wep_glock18c_deathbite", type = "weapon", category = "weapons",
        label = "Glock 18C Deathbite",
        price = 260, currency = "coins",
        weaponName = "WEAPON_GLOCK18C_DEATHBITE", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_GLOCK18C_DEATHBITE.png"
    },
    {
        id = "wep_snakefal", type = "weapon", category = "weapons",
        label = "Snake FAL",
        price = 550, currency = "coins",
        weaponName = "WEAPON_SNAKEFAL", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_SNAKEFAL.png"
    },
    {
        id = "wep_assaultsmg_omex", type = "weapon", category = "weapons",
        label = "Assault SMG (Iron Dust)",
        price = 240, currency = "coins",
        weaponName = "WEAPON_ASSAULTSMG_OMEX_FREE01", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_ASSAULTSMG_OMEX_FREE01.png"
    },
    {
        id = "wep_specialcarbine_omex", type = "weapon", category = "weapons",
        label = "Special Carbine (Omex)",
        price = 310, currency = "coins",
        weaponName = "WEAPON_SPECIALCARBINE_MK2_OMEXFREE01", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_SPECIALCARBINE_MK2_OMEXFREE01.png"
    },
    {
        id = "wep_combatmg_graveyard", type = "weapon", category = "weapons",
        label = "Combat MG (Graveyard)",
        price = 400, currency = "coins",
        weaponName = "WEAPON_COMBATMG_MK2_GRAVEYARD", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_COMBATMG_MK2_GRAVEYARD.png"
    },
    {
        id = "wep_ak47_medusa", type = "weapon", category = "weapons",
        label = "AK47 (Medusa)",
        price = 300, currency = "coins",
        weaponName = "WEAPON_AK47_MEDUSA", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_AK47_MEDUSA.png"
    },
    {
        id = "wep_akpixel", type = "weapon", category = "weapons",
        label = "AK (Pixel)",
        price = 290, currency = "coins",
        weaponName = "WEAPON_AKPIXEL", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_AKPIXEL.png"
    },
    {
        id = "wep_awp", type = "weapon", category = "weapons",
        label = "Sniper AWP",
        price = 550, currency = "coins",
        weaponName = "WEAPON_AWP", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_AWP.png"
    },
    {
        id = "wep_cfs", type = "weapon", category = "weapons",
        label = "AK (CFS)",
        price = 300, currency = "coins",
        weaponName = "WEAPON_CFS", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_CFS.png"
    },
    {
        id = "wep_fossil74u", type = "weapon", category = "weapons",
        label = "AK (FOSSIL 74U)",
        price = 280, currency = "coins",
        weaponName = "WEAPON_FOSSIL74U", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_FOSSIL74U.png"
    },
    {
        id = "wep_glacier", type = "weapon", category = "weapons",
        label = "M4 (Glacier)",
        price = 310, currency = "coins",
        weaponName = "WEAPON_GLACIER", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_GLACIER.png"
    },
    {
        id = "wep_gys", type = "weapon", category = "weapons",
        label = "Rifle GYS",
        price = 280, currency = "coins",
        weaponName = "WEAPON_GYS", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_GYS.png"
    },
    {
        id = "wep_m4_deathbite", type = "weapon", category = "weapons",
        label = "M4 (Deathbite)",
        price = 330, currency = "coins",
        weaponName = "WEAPON_M4_DEATHBITE", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_M4_DEATHBITE.png"
    },
    {
        id = "wep_m4a1_chromium", type = "weapon", category = "weapons",
        label = "M4A1 (Chromium)",
        price = 300, currency = "coins",
        weaponName = "WEAPON_M4A1_CHROMIUM", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_M4A1_CHROMIUM.png"
    },
    {
        id = "wep_scarpu", type = "weapon", category = "weapons",
        label = "SCAR-PU",
        price = 320, currency = "coins",
        weaponName = "WEAPON_SCARPU", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_SCARPU.png"
    },
    {
        id = "wep_soulgroza", type = "weapon", category = "weapons",
        label = "Groza Soul",
        price = 330, currency = "coins",
        weaponName = "WEAPON_SOULGROZA", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_SOULGROZA.png"
    },
    {
        id = "wep_vortexak", type = "weapon", category = "weapons",
        label = "AK (VORTEX)",
        price = 290, currency = "coins",
        weaponName = "WEAPON_VORTEXAK", ammo = 250, stock = 1000,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/WEAPON_VORTEXAK.png"
    },

    -- ─────────────────────────────────────────────────────────────────────────
    -- ITEMS — Playtime rewards (currency = playpoints)
    -- ─────────────────────────────────────────────────────────────────────────
    {
        id = "pt_medkit", type = "item", category = "items",
        label = "Medkit x5",
        price = 50, currency = "playpoints",
        itemName = "medkit", amount = 5, stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/medikit.png"
    },
    {
        id = "pt_armor", type = "item", category = "items",
        label = "Body Armor",
        price = 80, currency = "playpoints",
        itemName = "armor", amount = 1, stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/armour.png"
    },
    {
        id = "c_armor", type = "item", category = "items",
        label = "Body Armor",
        price = 5, currency = "coins",
        itemName = "armor", amount = 1, stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/armour.png"
    },

    -- ─────────────────────────────────────────────────────────────────────────
    -- CUSTOMIZATIONS
    -- ─────────────────────────────────────────────────────────────────────────
    {
        id = "change_name", type = "customization", category = "customizations",
        action = "name_change",
        label = "Name Change",
        price = 1000, currency = "coins", stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/namecard.png"
    },
    {
        id = "change_plate", type = "customization", category = "customizations",
        action = "plate_change",
        label = "Vehicle Plate Change",
        price = 800, currency = "coins", stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/vehicleplate.png"
    },
    {
        id = "change_phone", type = "customization", category = "customizations",
        action = "phone_change",
        label = "Phone Number Change",
        price = 500, currency = "coins", stock = -1,
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/phone.png"
    },

    -- ─────────────────────────────────────────────────────────────────────────
    -- PACKS
    -- ─────────────────────────────────────────────────────────────────────────
    {
        id = "starter_pack", type = "pack", category = "packs",
        label = "Starter Pack",
        price = 3000, currency = "coins", stock = -1,
        packItems = {
            { type = "vehicle", spawnName = "sultanrs",       label = "Karin Sultan RS", image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/sultanrs.png" },
            { type = "weapon",  weaponName = "weapon_pistol", label = "Pistol",          ammo = 250, image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/weapon_pistol.png" },
            { type = "item",    itemName = "medkit",          label = "Medkit x5",       amount = 5, image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/medikit.png" },
        },
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/pack.png"
    },
    {
        id = "warzone_pack", type = "pack", category = "packs",
        label = "Warzone Pack",
        price = 6000, currency = "coins", stock = -1,
        packItems = {
            { type = "weapon", weaponName = "weapon_assaultrifle", ammo = 500, label = "Assault Rifle", image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/assaultrifle.png" },
            { type = "weapon", weaponName = "weapon_pumpshotgun",  ammo = 100, label = "Pump Shotgun",  image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/pumpshotgun.png"  },
            { type = "weapon", weaponName = "weapon_sniperrifle",  ammo = 50,  label = "Sniper Rifle",  image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/sniperrifle.png"  },
            { type = "item",   itemName   = "armor",  amount = 2,              label = "Body Armor",    image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/armour.png"                               },
            { type = "item",   itemName   = "medikit", amount = 5,              label = "Medkit x5",     image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/medikit.png"                              },
        },
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/pack1.png"
    },
    {
        id = "speed_pack", type = "pack", category = "packs",
        label = "Speed Pack",
        price = 12000, currency = "coins", stock = -1,
        packItems = {
            { type = "vehicle", spawnName = "pariah",   label = "Ocelot Pariah",          image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/pariah.png"   },
            { type = "vehicle", spawnName = "buzzard2", label = "Buzzard Attack Chopper", image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/buzzard2.png" },
        },
        image = "https://r2.fivemanage.com/QYeMkh7E2720BZ6Addikc/pack2.png"
    },
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://fantasy-scripts.gitbook.io/docs/coin-shop-system/configuration-file.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
