Description
A civic permitting layer: a player files a zoning application for a coordinate, an authorized inspector (a city-planning job) visits, plays an inspection animation, and approves or denies it. Only a server-granted permit unlocks placing the new property/MLO shell. Gov-RP and city-builder servers sell this as the gatekeeper that turns "anyone places a house anywhere" into a real bureaucratic flow.
Prompt Template
You are writing a FiveM script for QBCore (exports['qb-core']:GetCoreObject()),…
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/housing/30-construction-permit-zoning.lua implements the applicant apply, the inspector job-gated inspection animation with a dict-load wait, and a…
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
- The client sets
status = 'granted'itself, so anyone self-approves — the decision must be a server event re-checking the inspector job. TaskPlayAnimruns beforemissfbi3_party_dis loaded, so the clipboard anim never plays.permit:resultis only registered server-side, so the applicant never learns the verdict and the build stays locked.
Corrective re-prompt: "Make approval server-authoritative: on permit:decide, re-fetch the deciding player with GetPlayer(src) and confirm PlayerData.job.name == 'cityplanning' on the SERVER before any MySQL.update to 'granted' — never trust the client's job or a client-set status. Also wrap the inspection animation in RequestAnimDict + while not HasAnimDictLoaded(dict) do Wait(0) end, and register permit:result with RegisterNetEvent + AddEventHandler on the applicant client."
Framework Integration
- QBCore:
QBCore.Functions.GetPlayer(src)then gate onPlayer.PlayerData.job.name == 'cityplanning'; store permits in aconstruction_permitstable keyed bycitizenid. - QBox: identical through
exports['qb-core']:GetCoreObject(); QBox'sqbx_corejob checks behave the same, so no code change is needed. - ESX: not targeted by this spec — map
xPlayer.job.nameandidentifierif you port it.
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); a stable civic-RP gatekeeper sits mid-band.
Trend Signal
→ stable — inferred: [INFERRED] civic-RP permitting (cf id-054 Construction Permits Authority); niche gatekeeper for player-placed builds.
Sales Angle
Position for gov/city-RP servers that run a planning department — the permit is the bottleneck that creates roleplay (applications, inspections, fees). Recommended Tebex price $89.
Difficulty & Ship Time
intermediate · ships in 1 day.