Player to Player Styling
Let one player dress another. A stylist picks the clothes, the person in the chair watches it happen live, and nothing is saved or charged until they approve the result.
Styling happens inside a shop, and the shop decides what the session can change, a barber's chair styles hair, a tattoo parlour styles tattoos.
[!NOTE] A stylist picks your clothes, not your body. The ped tab is never offered, and the server strips it even if you add it to the config. Body changes go through Ped Surgery or the Ped Changer.
✂️ How It Works
[Stylist stands in a shop] ──► [Targets a player] ──► [Enters a price]
│
▼
[Client gets Accept / Decline] ──► [Accepts] ──► [Client is frozen]
│
▼
[Stylist's menu opens, pointed at the client's ped]
│
▼
[Every pick lands on the client live - both of them see it]
│
▼
[Stylist confirms] ──► [Client: Keep it / Change it back]
│
▼
[Keep it] ──► [Saved] ──► [Bank charged] ──► [Stylist paid]- A stylist standing in a shop looks at another player and picks Style their outfit from the target menu.
- They type a price between
MinPriceandMaxPrice. If both are0, the prompt is skipped and styling is free. - The client gets a popup with the stylist's name and price, and Accept / Decline.
- On accept, the client is frozen in place and the stylist's menu opens, named for the shop, e.g. Ponsonbys - Dave.
- Every garment the stylist picks is applied to the client's ped immediately, so both players and everyone nearby watch the outfit come together.
- When the stylist confirms, the client is asked Keep it or Change it back. Declining restores exactly what they walked in with.
- Only on Keep it is the outfit saved and the price moved from the client's bank to the stylist's.
[!TIP] The price and approval popups use ox_lib. The target option needs ox_target or qb-target.
🏬 The Shop Decides What Opens
The Style their outfit option only appears while the stylist is standing in a shop zone, and that shop's type picks the tabs:
| Shop Type | Tabs the session opens |
|---|---|
clothing | Clothing |
barber | Hair, beard, makeup, skin |
tattoos | Tattoos |
wardrobe | Clothing |
That map is Config.Styling.Tabs. A shop type missing from it hosts no styling at all, which is exactly why ped is absent.
Create the shops themselves in /shopmanager as normal; any shop of a listed type becomes a styling venue automatically.
⚙️ Configuration (shared/config_styling.lua)
Styling is off by default. Set Enabled = true to turn it on.
Config.Styling = {
Enabled = false,
-- Empty means anybody may style anybody.
Jobs = {},
RequireOnDuty = false,
MinPrice = 0,
MaxPrice = 5000,
MaxDistance = 3.0,
OfferTimeout = 30, -- seconds to accept
SessionTimeout = 900, -- seconds the stylist has to work
Tabs = {
clothing = { 'clothing' },
barber = { 'hair', 'beard', 'makeup', 'skin' },
tattoos = { 'tattoos' },
wardrobe = { 'clothing' },
},
}| Setting | Default | Description |
|---|---|---|
Enabled | false | Turns player styling on or off. |
Jobs | {} | Jobs allowed to be the stylist. Empty means anybody in the shop may offer it. The person being styled never needs a job. |
RequireOnDuty | false | Stylist must be on duty. Leave false if your server has no duty system, or the option never shows. |
MinPrice / MaxPrice | 0 / 5000 | Price range the stylist can charge. Both 0 makes styling free and skips the price prompt. |
MaxDistance | 3.0 | How close the two must stay, re-checked on every pick. |
OfferTimeout | 30 | Seconds the client has to accept. |
SessionTimeout | 900 | Seconds the stylist has to work before the session expires. |
Tabs | see above | Which tabs each shop type opens. A type not listed cannot host styling. |
[!WARNING]
Config.Styling.Jobsand a shop's own job lock are two separate gates and both must pass. SettingJobs = { 'tailor' }while your barber shop row is locked tobarbermeans a stylist would need both job names at once, and nobody can style there, the option simply never appears.Pick one layer: job-lock the shops in
/shopmanagerand leaveJobs = {}, or setJobsand leave the shop rows unlocked.
🛡️ Rules & Protection
Everything is checked on the server, so a modified client can't get around it.
- Consent first: the session only starts after the client presses Accept, and only saves after they press Keep it.
- No body swaps:
pedis stripped from the tab list server-side, whatever the client sends. - Shop verified from disk: the client sends only which shop it thinks it's in. The server reads that shop's row and re-checks the type, the job lock, and that both players stand inside the zone.
- Stay in the shop: every pick re-checks distance and the zone. Walk apart or step outside and the session ends, restoring the client.
- Frozen: the client is held in place for the session so they can't wander out of the chair. They're released before the approve popup, so they're never stuck waiting on a dialog.
- Locks still apply: restricted garments are stripped on save by the normal item lock rules, a stylist can't dress you in something you aren't allowed to wear.
- One at a time: a stylist runs one session at a time, and a client can have one offer at a time.
- No double editing: shop menus refuse to open for a player who is currently being styled.
The session is cancelled, and both players are told, when:
- the client declines, or the stylist closes the menu without finishing;
- either player leaves the shop zone or walks out of range;
- the offer or session times out;
- either player leaves the server.
[!NOTE] If the client approves an outfit they can't afford, they keep it and the stylist is told they went unpaid. Stripping the clothes back off someone over a bank balance is the worse outcome of the two.
💬 Messages
| Situation | Message |
|---|---|
| Not standing in a shop | Stand in a shop to style someone. |
Shop type not in Tabs | This shop does not offer styling. |
| Shop job lock fails | This shop is restricted to another job. |
| One of them outside the zone | You both need to be inside the shop. |
| Too far apart | They are too far away. |
| Already being styled | They are already being styled. |
| Stylist already busy | You are already styling someone. |
| Stylist has a menu open | Close your own menu first. |
| Someone else is dressing you | Someone is dressing you right now. |
| Client can't pay | You could not afford the styling fee. The outfit is yours; settle it with them. |