Description
A permission-gated /announce command that broadcasts a full-width, center-screen banner to every connected player through NUI. It is a standard staff tool with steady, unglamorous demand — distinct from player-facing toasts — and pairs naturally inside admin-menu bundles.
Prompt Template
You are writing a FiveM resource: a permission-gated server announcement banner.
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 at content/expected-outputs/ui/27-admin-announcement-banner.lua implements a restricted=true command with an IsPlayerAceAllowed gate (console exempt), an empty-message guard, an…
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
- Permission bypass — without
restricted=true+IsPlayerAceAllowedany player can broadcast. - Console crash —
IsPlayerAceAllowedonsource==0must be skipped so console announcements work. - Untrusted payload — the client must type-check the message string before render.
Corrective re-prompt: "Gate the command with RegisterCommand('announce', fn, true) and IsPlayerAceAllowed(source,'command.announce'), but skip the check when source == 0 so the server console can announce. On the client, verify the message is a string before SendNUIMessage."
Framework Integration
- ESX: swap the ace check for
ESX.GetPlayerFromId(source).getGroup() == 'admin'if you gate by ESX groups. - QBCore: use
QBCore.Functions.HasPermission(source, 'admin')instead of the ace check. - QBox: call
exports.qbx_core:HasPermission(source, 'admin'); keep the console (source==0) exemption.
Profit Potential
$150–$2000/mo on Tebex (expected ~$500). [INFERRED] priced inside the $50-389 script band against a corpus whose median seller clears $11.85K/mo (signal-scraper tebex_snapshot, n=100); a stable, low-ceiling staff-tool niche.
Trend Signal
→ stable — inferred: Server-wide announcement banners are a standard staff tool; simple, steady demand distinct from player toasts.
Sales Angle
The clean staff broadcast banner — best sold as part of, or an upsell beside, an admin-menu pack. Recommended Tebex price $59.
Difficulty & Ship Time
beginner · ships in 2-4h.