Docs/ORB Clothing/Stores & Zones

Stores & Zones

Default Locations

ORB Clothing ships with 25+ pre-configured store locations across the map (clothing, barber, tattoo, and accessories). These are seed data: on the first server start they are copied once into the editable admin panel, and from then on every store is managed in-game via /storeadmin.

TypeNotable Brands / Areas
ClothingBinco, Suburban, Ponsonbys across LS, Sandy Shores, Paleto
BarberDowntown, Vinewood, Rockford Hills, and more
TattooParlors across the map
AccessoriesHigh-end accessory stores
In test mode (`Config.TestMode = true`) only a small set seeds — one of each type. The seed runs once; deleting a store in `/storeadmin` will **not** bring it back on restart.

Adding a New Store

The recommended way to add stores is the in-game admin panel (/storeadmin) — see the Admin Panel page. The lists in config.lua are only used to seed the panel on first run.

If you are editing the seed list directly (before the first-run seed), store locations are defined in Config.AllStoreLocations. Each entry needs the player coords (vector4 with heading), a type, and the pedPosition. Blip, zone size, and camera come from the store type (Config.StoreTypes):

lua
Config.AllStoreLocations = {
    {
        coords      = vector4(x, y, z, heading),  -- player-facing position
        type        = "clothing",                 -- clothing | accessories | barber | tattoo
        pedPosition = vector4(x, y, z, heading),  -- where the shopkeeper ped stands
        -- size     = vector2(11.0, 13.0),        -- optional: override the type's default zone size
    },
}

Barber Chairs

Barber locations support an optional chairs table so the player sits down during customization:

lua
{
    coords = vector4(-33.675, -152.162, 57.076, 158.017), type = "barber",
    chairs = {
        { coords = vector3(-34.89, -150.09, 57.09), h = 65.31, offset = vector3(0.03, -0.75, 0.0) },
    },
},

Zone Interaction

When a player enters a store zone, a help text appears. Press E to open the customization menu. The player is teleported to a routing bucket for isolated customization.

On exit or cancel, the player returns to their original position. If the player presses ESC, all changes are reverted (snapshot/restore system).

Admin-Managed Stores

All stores — both the first-run seeded defaults and any you create — live in data/admin_stores.json and are managed through the admin panel (/storeadmin). They persist across server restarts and are synced to all connected clients in real-time.