Stores & Zones
Default Locations
ORB Clothing ships with 28 pre-configured store locations (production mode):
| Type | Count | Notable Brands / Areas |
|---|---|---|
| Clothing | 13 | Binco, Suburban, Ponsonbys across LS, Sandy Shores, Paleto |
| Barber | 7 | Downtown, Vinewood, and more |
| Tattoo | 6 | Various parlors across the map |
| Accessories | 2 | High-end accessory stores |
In test mode (`Config.TestMode = true`) only 4 stores load — one of each type.
Adding a New Store
Store locations are defined in Config.AllStoreLocations in config.lua. Each entry only needs the player coords (vector4 with heading), a type, and the pedPosition. Blip, zone size, and camera come from the store type (Config.StoreTypes):
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:
{
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-Created Stores
Stores created through the admin panel (/storeadmin) are saved to data/admin_stores.json. These persist across server restarts and are synced to all connected clients in real-time.