[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
12 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

It would be nice if we could add links from google pictures and set the length of the Poster e.g Permanent

Thanks for the suggestion! This is already possible. You can use Google image URLs for posters, and the poster lifetime is configurable in the config. By default, posters are removed after 7 days, but you can change it to any duration you want. Players can also renew their posters by paying the configured renewal fee.