[Free] ns-poster 🖼️ — Advanced DUI posters players design in-world

[Free] ns-poster :framed_picture: — 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. :cowboy_hat_face:

:movie_camera: Preview

Screenshots:
NS-POSTER GİF

:link: Links

:puzzle_piece: Requirements

  • :brick: object_gizmo (free) — 3D placement gizmo:
  • :file_cabinet: oxmysql — persistence in MySQL mode (or switch to JSON files, no DB needed)
  • :bullseye: ox_target / qb-target (optional) — only if you use target-mode interaction
  • :puzzle_piece: Framework: ESX, QBCore, Qbox or Standalone — auto-detected at runtime, no hard dependency

:sparkles: Features

  • :artist_palette: Modern NUI editor — drag, resize and rotate text + image elements on a 3:4 canvas, with undo/redo
  • :framed_picture: 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
  • :card_index_dividers: 9 presets, 8 fonts, 8 image filters so players start fast
  • :pushpin: Categories — Notice, Wanted, Event, Missing Person, For Sale, Custom — each with its own map blip colour
  • :compass: /posters list with category filter and a one-click GPS waypoint to any poster
  • :yellow_heart: Likes, reports & 4-digit poster IDs — the community helps moderate content
  • :shield: Admin moderation queue — one-click teleport, dismiss / resolve / remove, enlarge thumbnails
  • :money_bag: Optional economy — charge to place or renew, with per-prop and per-category pricing and refunds
  • :locked_with_key: Permissions — restrict who can place, lock categories to jobs, police-style takedowns, placement zones
  • :up_button: Optional image upload — server proxies a local image (imgur or custom), no secrets in the NUI
  • :hourglass_not_done: Auto-expiring posters with owner renew, so the world never clutters up
  • :loudspeaker: 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)

:gear: 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

:package: Install

  1. Drop ns-poster/ into resources/
  2. Add to server.cfg (after your framework + object_gizmo):
ensure oxmysql
ensure object_gizmo
ensure ns-poster
  1. Tweak config.lua to taste
  2. Restart :rocket: — tables auto-create on first boot

A pre-built NUI ships in html/ — you only rebuild if you edit anything under ui/.

:glowing_star: Other Native Scripts Releases

:free_button: Free

Code is accessible Yes
Subscription-based No
Lines (approximately) +10.000
Requirements object_gizmo, oxmysql, Standalone
Support Yes
11 Likes
I use it on my server; it's very useful. Great job.

1 Like

This is just amazing script and Free for community is much appreciated :clap:

1 Like

Awesome :dizzy:

1 Like

Thank u guys :heart:

Great idea, useful for roleplays :+1:

1 Like