SHOPPING CART

Onex

Command Palette

Search for a command to run...

SHOP & ZONES#

The shop configuration (config/shop.lua) defines shop zones, types, job outfits, and interaction settings.

Interaction Settings#

Configure how players interact with shop zones:

config/shop.lua
Shop.Interaction = { onex_interaction = true, interaction_type = 'midcontext' -- or 'leftinteraction' }
OptionTypeDefaultDescription
onex_interactionbooleantrueUse onex-interaction system
interaction_typestring'midcontext'Interaction menu style

Interaction Types:

  • 'midcontext' - Centered context menu (default)
  • 'leftinteraction' - Left-side interaction menu

Shop Types#

Define available shop configurations:

config/shop.lua
Shop.Types = { newchar = { label = "Character Creation", categories = { "EditFamily", "EditFace", "EditClothes", "EditHair", "EditMakeup" }, allowSave = true, allowOutfits = false }, admin = { label = "Admin Menu", categories = { "EditFamily", "EditFace", "EditClothes", "EditHair", "EditMakeup", "EditTattoos" }, allowSave = true, allowOutfits = true }, clothes = { label = "Clothing Store", categories = { "EditClothes", "EditMakeup" }, allowSave = true, allowOutfits = true }, barber = { label = "Barber Shop", categories = { "EditHair" }, allowSave = true, allowOutfits = false }, tattoos = { label = "Tattoo Parlor", categories = { "EditTattoos" }, allowSave = true, allowOutfits = false }, family_edit = { label = "Plastic Surgery", categories = { "EditFamily", "EditFace" }, allowSave = true, allowOutfits = false }, pol_closet = { label = "Police Closet", categories = { "EditClothes" }, allowSave = false, allowOutfits = true, jobRestricted = "police" } }
PropertyTypeDescription
labelstringDisplay name in UI
categoriestableAvailable editing categories
allowSavebooleanAllow saving appearance to database
allowOutfitsbooleanShow outfit management options
jobRestrictedstringRestrict to specific job (optional)

Available Categories:

  • EditFamily - Heritage/parents selection
  • EditFace - Face features and overlays
  • EditClothes - Clothing components and props
  • EditHair - Hair style and color
  • EditMakeup - Makeup and overlays
  • EditTattoos - Tattoo management

Zone Debug#

Enable zone visualization for placement:

config/shop.lua
Shop.ZoneDubg = false

Set to true to see zone boundaries while configuring shop locations.

Shop Zones#

Pre-configured shop locations (26 total):

config/shop.lua
Shop.Zones = { -- Clothing Stores { id = "clothes_1", type = "clothes", coords = vector3(72.25, -1399.10, 29.37), size = vector3(10.0, 10.0, 4.0), rotation = 0, blip = { enabled = true, sprite = 73, color = 47, scale = 0.7, label = "Clothing Store" } }, -- Barber Shops { id = "barber_1", type = "barber", coords = vector3(-814.31, -183.82, 37.57), size = vector3(6.0, 6.0, 3.0), rotation = 0, blip = { enabled = true, sprite = 71, color = 0, scale = 0.7, label = "Barber Shop" } }, -- Tattoo Parlors { id = "tattoo_1", type = "tattoos", coords = vector3(1322.64, -1651.97, 52.27), size = vector3(8.0, 8.0, 3.0), rotation = 0, blip = { enabled = true, sprite = 75, color = 1, scale = 0.7, label = "Tattoo Parlor" } } -- ... more zones }
PropertyTypeDescription
idstringUnique zone identifier
typestringShop type reference
coordsvector3Zone center position
sizevector3Zone dimensions (x, y, z)
rotationnumberZone rotation (degrees)
bliptableMap blip configuration

Blip Configuration:

PropertyTypeDescription
enabledbooleanShow blip on map
spritenumberBlip sprite ID
colornumberBlip color ID
scalenumberBlip size
labelstringBlip hover text

Pre-Configured Locations#

TypeCountSample Locations
Clothing Stores14Strawberry, Vespucci, Del Perro, etc.
Barber Shops7Rockford Hills, Mirror Park, etc.
Tattoo Parlors6Downtown, Chumash, etc.

All 26 locations are pre-configured with optimal zone sizes and blip settings.

Outfit Save Components#

Configure which components are saved with outfits:

config/shop.lua
Shop.SaveOutfit_Things = { "face_skin", "mask", "hair", "arms", "pants", "bag", "shoes", "accessory", "shirt", "vest", "decals", "torso", "hat", "glass", "ear", "watch", "bracelet" }

Persist Uniforms#

Keep job uniforms across reconnects:

config/shop.lua
Shop.PersistUniforms = true
ValueDescription
trueRestore job uniform on player spawn
falseReset to saved appearance on spawn

Job Outfits#

Define job-specific uniforms with grade restrictions:

config/shop.lua
Shop.JobOutfits = { ["police"] = { label = "Police Department", outfits = { { label = "Patrol Uniform", minGrade = 0, outfit = { torso = { collection = "base", localIndex = 55, texture = 0 }, pants = { collection = "base", localIndex = 25, texture = 0 }, shoes = { collection = "base", localIndex = 10, texture = 0 }, -- ... more components } }, { label = "Detective Suit", minGrade = 3, outfit = { torso = { collection = "base", localIndex = 4, texture = 0 }, pants = { collection = "base", localIndex = 10, texture = 0 }, shoes = { collection = "base", localIndex = 10, texture = 1 }, } }, { label = "SWAT Gear", minGrade = 5, outfit = { torso = { collection = "base", localIndex = 15, texture = 0 }, vest = { collection = "base", localIndex = 12, texture = 0 }, -- ... tactical gear } } } }, ["ambulance"] = { label = "EMS", outfits = { { label = "EMT Uniform", minGrade = 0, outfit = { ... } }, { label = "Paramedic Uniform", minGrade = 2, outfit = { ... } } } } }
PropertyTypeDescription
labelstringJob display name
outfitstableArray of outfit definitions
outfits[].labelstringOutfit name
outfits[].minGradenumberMinimum job grade required
outfits[].outfittableComponent definitions

Job Outfit Zones#

Configure where job outfit menus appear:

config/shop.lua
Shop.JobOutfitCfg = { ["police"] = { zones = { { coords = vector3(461.8, -1001.0, 24.9), size = vector3(3.0, 3.0, 2.0), label = "LSPD Locker Room" } } }, ["ambulance"] = { zones = { { coords = vector3(311.2, -594.5, 43.3), size = vector3(4.0, 4.0, 2.0), label = "EMS Locker Room" } } } }

Shop-Specific Configurations#

Override settings for individual shops:

config/shop.lua
Shop.SpecificConfigurations = { ["clothes_1"] = { whitelist = { male = { torso = { 1, 2, 3, 10, 15 } -- Only allow these } }, blacklist = { female = { mask = { 50, 51, 52 } -- Block these } }, priceMultiplier = 1.5 -- 50% markup at this shop }, ["tattoo_1"] = { blacklist = { male = { tattoos = { "gang_1", "gang_2" } -- Block gang tattoos } } } }
PropertyTypeDescription
whitelisttableOnly allow listed items
blacklisttableBlock listed items
priceMultipliernumberShop-specific price modifier

Adding Custom Zones#

To add a new shop zone:

config/shop.lua
-- Add to Shop.Zones { id = "custom_shop_1", type = "clothes", -- Use existing type or create new coords = vector3(100.0, 200.0, 30.0), size = vector3(8.0, 8.0, 4.0), rotation = 45, blip = { enabled = true, sprite = 73, color = 47, scale = 0.7, label = "Custom Clothing Store" } }

Use Shop.ZoneDubg = true to visualize zones while adjusting coordinates and sizes.

Next Steps#