Docs

kyoVipShop

Configuration

General

Config.Framework = 'auto'            -- 'auto' | 'esx' | 'qbcore' | 'qbox'
Config.Inventory = 'auto'            -- 'auto' | 'ox_inventory' | 'framework'
Config.NotifySystem = 'kyoNotify'    -- 'framework' | 'kyoNotify' | 'vms_notifyV2'
Config.ShopKey = 38                  -- E
Config.InteractDistance = 1.5
Config.ImagePath = 'auto'            -- item images; %s = item name
  • Config.Framework = 'auto' detects qbx_core, qb-core or es_extended, in that order.
  • Config.Inventory = 'auto' delivers items with ox_inventory when it is running, otherwise with the framework inventory.
  • Config.ImagePath = 'auto' uses the image folder of ox_inventory, qs-inventory, origen_inventory, qb-inventory or ps-inventory.

With kyoNotify, the “[E] Open VIP shop” prompt uses kyoNotify’s help text; otherwise a 3D text is drawn above the NPC.

Currencies

Config.Currencies = {
    coins = { esx = 'coins', qb = 'coins', label = 'coins' },
    money = { esx = 'money', qb = 'cash',  label = '$' },
}
FieldMeaning
esxAccount name on ESX
qbMoney type on QBCore / Qbox (cash, bank, crypto, or one you added)
labelShown in the purchase notification

Any of them can be 'item:<name>' to pay with an inventory item, for example qb = 'item:vip_coin'.

Admin

Config.Admin = {
    Groups = { 'admin', 'superadmin', 'god' }, -- ESX group, or ACE on QBCore / Qbox
    Ace = 'kyovipshops.admin',
}

Config.Commands = {
    SetVip = 'setvip',
    RemoveVip = 'removevip',
    CheckVip = 'checkmyvip',
}

Shop NPCs

Config.VIPShops = {
    {
        coords = vector3(258.4548, -786.8971, 30.4296 - 1),
        heading = 19.9641,
        model = `a_m_y_business_01`,
        blip = {
            enabled = true,
            id = 52,
            color = 5,
            scale = 0.8,
            name = "VIP Shop",
        },
    },
}

Add more entries for more shops.

Items

Config.Items = {
    {
        item = "WEAPON_APPISTOL",
        label = "Pack x25 AP Pistol",
        price = 10,
        currency = "coins",       -- "coins" or anything else for cash
        amount = 25,              -- given per purchase
        description = "Pack of 25 AP pistols.",
        category = "weapon",      -- "weapon" | "ammo" | "others"
        rarity = "Rare",
        stock = 999,
    },
}
FieldDescription
itemItem name in your inventory
labelName in the shop
pricePrice per purchase
currency"coins", or anything else for cash (see Currencies)
amountHow many are given per purchase
descriptionText in the shop
categoryTab: weapon, ammo or others
rarityBadge shown on the card
stockShown on the card

Security: the client only sends which article it wants. Price, amount and currency are always read from Config.Items on the server.