Description
An overhead nameplate system that floats a [id] Name | Job label above nearby players using world-space text. Name and job are pulled from the server on a refresh interval so they can't be spoofed locally, and the draw loop is distance-gated to protect FPS on full servers. Servers buy it as a staff-friendly QoL layer that doubles as light RP immersion.
Prompt Template
You are writing a FiveM resource: overhead player nameplates via DrawText3D.
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/ui/20-player-overhead-nameplates.lua. It draws distance-gated 3D text over GetActivePlayers, maps local player handles to server ids, and refreshesβ¦
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
- Spoofable labels β name/job must come from the server, never local state.
- FPS drain β gate the per-frame draw by
DRAW_DISTANCE. - ID mismatch β map handles with
GetPlayerServerId; don't mixPlayerId()with server ids.
Corrective re-prompt: "Source name and job only from the server: the server builds the roster from GetPlayers()+tonumber and pushes nameplates:sync; the client just renders it. Gate the DrawText3D loop behind #(myPos - pos) < DRAW_DISTANCE and resolve each plate's number with GetPlayerServerId, not PlayerId()."
Framework Integration
- ESX: Replace
getJobwithESX.GetPlayerFromId(src).getJob().labelinside the server request handler. - QBCore: Use
QBCore.Functions.GetPlayer(src).PlayerData.job.labelingetJob. - QBox: Use
exports.qbx_core:GetPlayer(src).PlayerData.job.label, and gate visibility behind an admin ace if it's staff-only.
Profit Potential
$150β$2000/mo on Tebex (expected ~$500). [INFERRED] priced within the $50-389 script band against the signal-scraper tebex_snapshot corpus (n=100, median seller $11.85K/mo) for a stable RP niche.
Trend Signal
β stable β inferred: Overhead IDs are common on RP and admin-friendly servers; recurring demand, often toggled by permission.
Sales Angle
Position as staff QoL first, immersion second β permission-gating the plates is the feature serious RP servers pay for. Recommended Tebex price $99.
Difficulty & Ship Time
intermediate Β· ships in 2-4h.