Description
A working mirror makeup vanity: the player walks up to a vanity, opens an NUI panel, and tunes lipstick, blush, eyeliner and eyeshadow with per-layer color and opacity sliders that apply live to the ped. The chosen look is saved server-side so it survives respawns. Social-roleplay servers buy this because makeup is almost always buried inside a giant clothing pack rather than sold as a clean standalone.
Prompt Template
You are writing a FiveM resource that works on ESX/QBCore/QBox.
The full prompt template and its reference Lua are part of a one-time pack. Pick your depth β both are lifetime access, no subscription, ever.
- 60 prompts + syntax-validated reference Lua
- Lifetime access β pay once
- All 510 prompts β the full library
- Per-prompt profit/trend intelligence (CSV + playbook)
- Lifetime free updates β new niches as the market moves
$49 for 60 Β· $199 for all 510 + intelligence β one-time, no subscription.
Expected Output
The reference Lua lives at content/expected-outputs/appearance/07-makeup-vanity-overlays.lua. It implements proximity open with a lean-in anim, NUI-driven per-layer overlay+color application on theβ¦
The full prompt template and its reference Lua are part of a one-time pack. Pick your depth β both are lifetime access, no subscription, ever.
- 60 prompts + syntax-validated reference Lua
- Lifetime access β pay once
- All 510 prompts β the full library
- Per-prompt profit/trend intelligence (CSV + playbook)
- Lifetime free updates β new niches as the market moves
$49 for 60 Β· $199 for all 510 + intelligence β one-time, no subscription.
Known Failure Modes & Corrective Prompt
- Client-only persistence β the look is kept in a client table and resets on respawn; store each layer server-side and replay via
vanity:loadLook. - Wrong overlay slot β applying before a valid slot maps to the wrong overlay; use a fixed nameβslot-id table and guard unknown names.
- Anim before load β
TaskPlayAnimno-ops if the dict is not loaded; alwaysRequestAnimDict+while not HasAnimDictLoaded(dict) do Wait(0) end. - One-sided net event β define
vanity:saveLayer/vanity:loadLookon both sides withRegisterNetEvent+AddEventHandler.
Corrective re-prompt: "Move the saved look to the server: keep a per-source table of each layer's opacity and colour, store it on vanity:saveLayer, and replay it via vanity:loadLook when the client requests. The client must only apply overlays live and never hold the canonical look."
Framework Integration
- ESX: resolve
exports['es_extended']:getSharedObject(); overlays are framework-agnostic, persist the look table against the player identifier if you add DB save. - QBCore: resolve
exports['qb-core']:GetCoreObject(); tie the saved look toPlayer.PlayerData.citizenidfor DB persistence. - QBox: use
exports.qbx_core:GetPlayer(src); the overlay + per-source store logic is identical.
Profit Potential
$150β$2000/mo on Tebex (expected ~$500). [INFERRED] priced inside the $50-389 script band against the signal-scraper tebex_snapshot corpus (n=100, median seller $11.85K/mo); a stable, underserved standalone niche carries steady volume.
Trend Signal
β stable β inferred: Makeup overlays are underserved standalone vs bundled in big packs; steady demand from social-RP servers.
Sales Angle
The standalone makeup vanity social-RP servers can't find unbundled β a focused, per-layer mirror station with live preview and server persistence. Recommended Tebex price $89.
Difficulty & Ship Time
beginner Β· ships in 2-4h.