[PAID] vsShop
[ESX & QBcore]
vsShop – Advanced Shop & Weapon Shop System for FiveM
Modern UI shop system with weapon licenses, categories, cart system and full framework support.
Showcase
What is vsShop?
vsShop is a modern and fully configurable shop & weapon shop system for FiveM.
It combines a clean UI, shopping cart system, weapon license handling, and full framework compatibility into one optimized and immersive solution.
Players can buy items, tools, weapons, and licenses through an intuitive interface while server owners get full control over pricing, categories, locations, and permissions.
Features
Modern Shop UI
• Clean and optimized user interface
• Shopping cart system
• Category filtering
• Server name or logo display
• Custom color & UI styling support
Weapon Shop System
• Integrated weapon shop
• Optional weapon license requirement
• License purchasable directly in shop
• Custom license price
• ESX & QBCore compatible
Shop Locations
• Unlimited shop locations
• Normal shops & weapon shops
• Custom markers & blips
• Fully configurable positions
Economy & Payments
• Cash & bank payments
• Configurable item pricing
• Weapon pricing per item
• License purchase system
Items & Categories
• Unlimited items & weapons
• Custom categories (max 7 per shop)
• Separate categories for weapon shop
• Tools, food, electronics, healing items etc.
Framework Support
• ESX (es_extended)
• QBCore (qb-core + qb-menu support)
Localization
• English & German ready
• Fully editable locale texts
UI Customization
• Custom shop colors & gradients
• Logo or server name display
• CSS editable design
• Shopping cart styling included
Configuration Options
• Framework selection (ESX/QBCore)
• Weapon license settings & price
• Shop & weapon shop locations
• Item & weapon lists
• Category setup
• Marker & blip customization
• Payment methods
• UI display options
• Language & text configuration
Everything is easily configurable via config.lua.
Perfect For
• Roleplay Servers
• Economy Servers
• Serious RP Communities
• Crime & Police Servers
• Public & Whitelist Servers
• Any server needing a modern shop system
[CENTER][SIZE=6]
Upgrade your server economy with vsShop[/SIZE]
[SIZE=4]Modern. Clean. Fully Configurable.[/SIZE][/CENTER]
Get this Script at our Store for just 19.99 € !
Config
Config = {}
-- ========================================
-- FRAMEWORK SETTINGS
-- FRAMEWORK EINSTELLUNGEN
-- ========================================
-- Framework Selection / Framework-Auswahl
-- Options: 'esx' or 'qbcore' | ESX: es_extended | QBCore: qb-core + qb-menu (weapon license menu)
-- Optionen: 'esx' oder 'qbcore' | ESX: es_extended | QBCore: qb-core + qb-menu (Waffenlizenz-Menü)
Config.Framework = "esx"
-- ========================================
-- GENERAL / SERVER DISPLAY
-- ALLGEMEIN / SERVER-ANZEIGE
-- ========================================
-- Use Server Name in UI / Servername in UI anzeigen
-- If true: display Config.ServerName | If false: display logo (file must be named "Logo.png")
-- Wenn true: Config.ServerName anzeigen | Wenn false: Logo anzeigen (Datei muss "Logo.png" heißen)
Config.SName = true
-- Server Name / Server-Name
-- Displayed in shop UI (max. 5 characters recommended) / Wird in der Shop-UI angezeigt (max. 5 Zeichen empfohlen)
Config.ServerName = "VS"
-- ========================================
-- WEAPON LICENSE SETTINGS
-- Waffenlizenz EINSTELLUNGEN
-- ========================================
-- Require Weapon License for Weapon Shop / Waffenlizenz für Waffenshop erforderlich
-- If true: players need weapon license to open weapon shop | Wenn true: Spieler brauchen Waffenlizenz für Waffenshop
Config.UseWeaponlicense = true
-- Weapon License Type (Database) / Waffenlizenz-Typ (Datenbank)
-- ESX: user_licenses.type | QBCore: often "weapon"
-- ESX: user_licenses.type | QBCore: oft "weapon"
Config.WLName = "weapon"
-- Allow Buying Weapon License at Shop / Waffenlizenz im Shop kaufbar
-- If true: players without license can buy one at weapon shop
-- Wenn true: Spieler ohne Lizenz können sie im Waffenshop kaufen
Config.WLCanBuy = true
-- Weapon License Price / Waffenlizenz-Preis
-- Price in $ / Preis in $
Config.WLPrice = 10000
-- QBCore only: License table name / Nur QBCore: Lizenz-Tabellenname
-- Database table for licenses (e.g. player_licenses) / Datenbank-Tabelle für Lizenzen (z.B. player_licenses)
Config.QBLicenseTable = "player_licenses"
-- QBCore only: Player ID column in license table / Nur QBCore: Spieler-ID-Spalte in Lizenz-Tabelle
-- Column name (e.g. citizenid) / Spaltenname (z.B. citizenid)
Config.QBLicenseKey = "citizenid"
-- ========================================
-- MARKER SETTINGS
-- MARKER EINSTELLUNGEN
-- ========================================
-- Marker Size / Marker-Größe
Config.MarkerSize = { x = 1.1, y = 1.1, z = 0.9 }
-- Marker Type / Marker-Typ
-- GTA blip/marker type ID / GTA Blip-/Marker-Typ-ID
Config.MarkerType = 29
-- Marker Color (RGBA) / Marker-Farbe (RGBA)
Config.MarkerColor = { r = 102, g = 102, b = 204, a = 255 }
-- ========================================
-- SHOP LOCATIONS
-- SHOP-STANDORTE
-- ========================================
-- Shop Positions / Shop-Positionen
-- store = 'normal' (24/7 shop) | store = 'weapon' (weapon shop)
-- store = 'normal' (24/7-Shop) | store = 'weapon' (Waffenshop)
Config.Shops = {
-- Normal Shops / Normal-Shops
{ x = 25.8335, y = -1346.2628, z = 29.4899, store = 'normal' },
{ x = -707.5080, y = -914.0214, z = 20.7232, store = 'normal' },
{ x = -1224.1044, y = -906.4043, z = 13.5816, store = 'normal' },
{ x = -3040.7375, y = 587.7500, z = 9.7457, store = 'normal' },
{ x = 1965.3651, y = 3743.2637, z = 33.8295, store = 'normal' },
{ x = 2557.8013, y = 385.1545, z = 110.5377, store = 'normal' },
{ x = 1163.6528, y = -323.8320, z = 69.2051, store = 'normal' },
{ x = -48.2948, y = -1757.9192, z = 29.4210, store = 'normal' },
{ x = -1487.1084, y = -379.2255, z = 40.1634, store = 'normal' },
{ x = 373.8839, y = 326.5635, z = 103.5664, store = 'normal' },
{ x = 4467.9063, y = -4464.6924, z = 4.2984, store = 'normal' },
-- Weapon Shops / Waffen-Shops
{ x = 21.8129, y = -1106.6866, z = 31, store = 'weapon' },
{ x = 252.4857, y = -50.2413, z = 69.9410, store = 'weapon' }
}
-- ========================================
-- NORMAL SHOP ITEMS
-- NORMAL-SHOP ITEMS
-- ========================================
-- Items for 24/7 Shops / Items für 24/7-Shops
-- Type: "n" = item | "w" = weapon | Givename = item/weapon name in database or framework
-- Typ: "n" = Item | "w" = Waffe | Givename = Item-/Waffenname in Datenbank oder Framework
Config.ShopItems = {
{ Name = 'Medikit', Price = '2700', Category = "3", Givename = "medikit", Type = "n" },
{ Name = 'Phone', Price = '3500', Category = "6", Givename = "phone", Type = "n" },
{ Name = 'Tracker', Price = '12500', Category = "6", Givename = "tracker", Type = "n" },
{ Name = 'RepairKit', Price = '5500', Category = "4", Givename = "fixkit", Type = "n" },
{ Name = 'Wine', Price = '500', Category = "2", Givename = "wine", Type = "n" },
{ Name = 'Bread', Price = '500', Category = "2", Givename = "bread", Type = "n" },
{ Name = 'EHK', Price = '50000', Category = "3", Givename = "ehk", Type = "n" },
{ Name = 'EHK2', Price = '50000', Category = "3", Givename = "ehk2", Type = "n" },
{ Name = 'EHK3', Price = '50000', Category = "3", Givename = "ehk3", Type = "n" },
{ Name = 'EHK4', Price = '50000', Category = "3", Givename = "ehk4", Type = "n" },
{ Name = 'EHK5', Price = '50000', Category = "3", Givename = "ehk5", Type = "n" },
{ Name = 'EHK6', Price = '50000', Category = "3", Givename = "ehk6", Type = "n" },
}
-- ========================================
-- WEAPON SHOP ITEMS
-- Waffen-Shop ITEMS
-- ========================================
-- Items for Weapon Shops / Items für Waffen-Shops
-- Type: "n" = item | "w" = weapon
-- Typ: "n" = Item | "w" = Waffe
Config.WeaponShopItems = {
{ Name = 'Pistol', Price = '35000', Category = "2", Givename = "WEAPON_PISTOL", Type = "w" },
{ Name = 'Heavy Pistole', Price = '50000', Category = "2", Givename = "WEAPON_HEAVYPISTOL", Type = "w" },
{ Name = 'Knife', Price = '10000', Category = "3", Givename = "WEAPON_KNIFE", Type = "w" },
{ Name = 'Flashlight', Price = '3000', Category = "3", Givename = "WEAPON_FLASHLIGHT", Type = "w" },
{ Name = 'SNS-Pistol', Price = '15000', Category = "2", Givename = "WEAPON_SNSPISTOL", Type = "w" },
}
-- ========================================
-- SHOP CATEGORIES (NORMAL SHOP)
-- SHOP-KATEGORIEN (NORMAL-SHOP)
-- ========================================
-- Category list (max. 7) / Kategorienliste (max. 7)
-- Value '1' = show all items | Other values match "Category" on items
-- Value '1' = alle Items anzeigen | Andere Werte entsprechen "Category" bei Items
Config.CategoryShop = {
{ Name = 'All', Value = '1' },
{ Name = 'Food', Value = '2' },
{ Name = 'Healing', Value = '3' },
{ Name = 'Tools', Value = '4' },
{ Name = 'Gambling', Value = '5' },
{ Name = 'Electronics', Value = '6' },
{ Name = 'Other', Value = '7' }
}
-- ========================================
-- WEAPON SHOP CATEGORIES
-- Waffen-Shop KATEGORIEN
-- ========================================
-- Weapon shop categories (max. 7) / Waffen-Shop-Kategorien (max. 7)
Config.CategoryWeaponShop = {
{ Name = 'All', Value = '1' },
{ Name = 'Shot', Value = '2' },
{ Name = 'Melee', Value = '3' }
}
-- ========================================
-- LOCALES / TRANSLATIONS
-- SPRACHEN / ÜBERSETZUNGEN
-- ========================================
-- UI and notification texts (DE/EN in one table; adjust to your server language)
-- UI- und Benachrichtigungstexte (DE/EN in einer Tabelle; an Server-Sprache anpassen)
Config.Locales = {
['open_notify'] = "Press E to open the shop", -- DE: "Drücke E um den Shop zu öffnen"
['successfully_purchased'] = "You have shopped successfully.", -- DE: "Du hast erfolgreich eingekauft."
['not_enough_money_notify'] = "You can't afford the purchase.", -- DE: "Du kannst dir den Einkauf nicht leisten."
['no_weaponlicense'] = "You don't have a weapon license", -- DE: "Du hast keine Waffenlizenz"
['not_enough_money_for_weaponlicense'] = "You don't have enough money to buy a weapon license.", -- DE: "Du hast nicht genug Geld für eine Waffenlizenz."
['successfully_licence'] = "You have bought the firearms licence.", -- DE: "Du hast die Waffenlizenz gekauft."
['weapon_licence'] = "Buy weapon licence for: ", -- DE: "Waffenlizenz kaufen für: "
['buy_licence'] = "Buy a licence", -- DE: "Lizenz kaufen"
['cancel'] = "Cancel", -- DE: "Abbrechen"
['shopping_cart'] = "Shopping Cart", -- DE: "Warenkorb"
['cash'] = "Cash", -- DE: "Bargeld"
['bank'] = "Card", -- DE: "Karte"
['add'] = "Add" -- DE: "Hinzufügen"
}
-- ========================================
-- BLIP SETTINGS
-- BLIP EINSTELLUNGEN
-- ========================================
-- Normal Shop Blip / Normal-Shop Blip
Config.ShopBlipName = "Shop"
Config.ShopBlip = 59 -- Blip sprite ID / Blip-Sprite-ID
Config.ShopBlipColour = 2 -- Blip color / Blip-Farbe
-- Weapon Shop Blip / Waffen-Shop Blip
Config.WeaponBlipName = "WeaponShop"
Config.WeaponBlip = 110
Config.WeaponBlipColour = 0
-- ========================================
-- INPUT / KEY
-- EINGABE / TASTE
-- ========================================
-- Key to open shop / Taste zum Shop öffnen
-- Default: 38 (E) | List: https://gist.github.com/KingCprey/d40f6deb8ac2949d95524448596e2f37
-- Standard: 38 (E) | Liste: https://gist.github.com/KingCprey/d40f6deb8ac2949d95524448596e2f37
Config.OpenKey = 38
CSS-Config
.greenbg {
background-image: linear-gradient(to right, #1a0000, #2c0000 50%, #330000);
}
.logo { /* Change the size of your logo */
width: 150px;
height: 150px;
}
.example {
-webkit-text-stroke: 0.104vw rgb(255, 0, 0);
background-image: radial-gradient(circle at 50% 50%, rgb(255, 0, 0), #000 230%);
}
.roleplay {
color: #fff;
}
.Warenkorb {
background: rgba(0, 0, 0, 0.3);
border: 0.052vw solid #ff0000;
}
.Warenkorb_title {
color: #FFFFFF;
}
.Warenkorb_bar,
.Warenkorb_karte {
background: linear-gradient(94.9deg, #474800 0%, #ABB900 50.41%, #474800 100%);
border: 0.052vw solid #F4FF00;
color: #FFFFFF;
}
.kat {
background-color: #000;
}
.radio1, .radio2, .radio3, .radio4, .radio5, .radio6, .radio7 {
color: #ffffff;
}
.radio1:last-child, .radio2:last-child, .radio3:last-child, .radio4:last-child, .radio5:last-child, .radio6:last-child, .radio7:last-child {
margin-bottom: 0;
}
.radio_txt1, .radio_txt2, .radio_txt3, .radio_txt4, .radio_txt5, .radio_txt6, .radio_txt7 {
color: #FFFFFF;
}
input[type='radio']:after {
background: radial-gradient(286% 286% at 50% 50%, #202020 0%, #E9E9E9 100%);
border: 0.104vw solid #ffffffb6;
}
input[type='radio']:checked:after {
background: radial-gradient(141.19% 141.19% at 50% 50%, #600202 0%, #990000 100%);
border: 0.104vw solid rgba(255, 0, 0, 0.7);
}
.item{
background: linear-gradient(94.9deg, rgba(30, 0, 0, 0.6) 0%, rgba(152, 0, 0, 0.6) 50.41%, rgba(30, 0, 0, 0.6) 100%);
border: 0.052vw solid #ff0000;
}
.item_price {
color: #FFFFFF;
}
#item_korbhinzu {
background: linear-gradient(94.9deg, #1e0000 0%, #980000 50.41%, #1e0000 100%);
border: 0.052vw solid #ff0000;
color: #FFFFFF;
}
#item_korbhinzu:hover {
border: 0.052vw solid #ff0000;
background: linear-gradient(94.9deg, #1e0000 0%, #980000 50.41%, #1e0000 100%);
}
.Items::-webkit-scrollbar-thumb,
.Warenkorb_bg::-webkit-scrollbar-thumb {
background: #ff0000;
}
.Warenkorb_bg {
background: #ffffff00;
}
.Warenkorb_item {
background: linear-gradient(94.9deg, #1e0000 0%, #980000 50.41%, #1e0000 100%);
border: 0.052vw solid #ff0000;
}
.Warenkorb_name {
color: #FFFFFF;
}
.Warenkorb_pos,
.Warenkorb_neg {
background: linear-gradient(94.9deg, #474800 0%, #ABB900 50.41%, #474800 100%);
border: 0.052vw solid #F4FF00;
color: #FFFFFF;
}
.Warenkorb_neg {
background: linear-gradient(94.9deg, #480000 0%, #FF0000 52%, #480000 100%);
border: 0.052vw solid #FF0000;
}
.Warenkorb_geskost {
background: rgba(217, 217, 217, 0.1);
border: 0.052vw solid #ff0000;
color: #ffffff;
}
Optimization
- IDLE: 0.00ms
- Running: 0.00ms
Further Information
SHOP: vsShop
This resource is using the FiveM Asset Escrow system
| Code is accessible | No |
| Subscription-based | No |
| Lines (approximately) | 2400 |
| Requirements | ESX & QBCore |
| Support | Yes |
