[Free] ns-poster
— Designable in-world posters
Let your players design their own posters in a modern drag-and-drop NUI editor — text, images, fonts, filters, presets — then place them anywhere in the world as an interactive prop. The exact design they made is rendered flat onto the board in-world (real DUI, not a generic placeholder). Nearby players inspect, like and report posters, owners renew them before they expire, and admins get a full moderation queue with one-click teleport. ![]()
Preview
Screenshots:

Links
Download (free): ns-poster-fivem — Native Scripts
Documentation: ns-poster — Docs — Native Scripts
More Native Scripts releases: https://nativescripts.com/
Requirements
object_gizmo (free) — 3D placement gizmo:
oxmysql — persistence in MySQL mode (or switch to JSON files, no DB needed)
ox_target / qb-target (optional) — only if you use target-mode interaction
Framework: ESX, QBCore, Qbox or Standalone — auto-detected at runtime, no hard dependency
Features
Modern NUI editor — drag, resize and rotate text + image elements on a 3:4 canvas, with undo/redo
Real in-world rendering — the design draws flat onto the prop face via DUI, readable from both sides, correct on cold join and warm restart
9 presets, 8 fonts, 8 image filters so players start fast
Categories — Notice, Wanted, Event, Missing Person, For Sale, Custom — each with its own map blip colour
/posters list with category filter and a one-click GPS waypoint to any poster
Likes, reports & 4-digit poster IDs — the community helps moderate content
Admin moderation queue — one-click teleport, dismiss / resolve / remove, enlarge thumbnails
Optional economy — charge to place or renew, with per-prop and per-category pricing and refunds
Permissions — restrict who can place, lock categories to jobs, police-style takedowns, placement zones
Optional image upload — server proxies a local image (imgur or custom), no secrets in the NUI
Auto-expiring posters with owner renew, so the world never clutters up
Dual Discord webhooks — private admin audit + public member feed, each embedding a real rendered PNG of the poster (uploaded straight to Discord, no external host)
Configuration
Everything lives in one config.lua: storage (MySQL or JSON), streaming distances and caps, categories with blip colours, economy costs, permissions and zones, interaction mode, image whitelist + upload, expiry/renew, social toggles, and the two Discord webhooks. Sensible defaults work out of the box.
Config.Interaction = 'target' -- 'target' (ox_target/qb-target) or 'key' ([E] prompt)
Config.UseMySQL = true -- false = JSON files, no database
Config.UseBlips = true -- category-coloured map blips on/off
Config.PosterTtl = 7 * 24 * 60 * 60 -- auto-expire after 7 days (0 = never)
Config.Economy.Enabled = false -- charge to place / renew
Install
- Drop
ns-poster/intoresources/ - Add to
server.cfg(after your framework + object_gizmo):
ensure oxmysql
ensure object_gizmo
ensure ns-poster
- Tweak
config.luato taste - Restart
— tables auto-create on first boot
A pre-built NUI ships in html/ — you only rebuild if you edit anything under ui/.
Other Native Scripts Releases
Free
| Code is accessible | Yes |
| Subscription-based | No |
| Lines (approximately) | +10.000 |
| Requirements | object_gizmo, oxmysql, Standalone |
| Support | Yes |
