REDM - Cactus Poster Creator (UI)

Hello RedM Community,

Introducing Cactus Poster Creator, a complete native wanted-poster creation and management system built for RSG-Core roleplay servers.

This is not a flat image placed over the game. Players create a notice from an immersive sheriff-style workshop, select a Rockstar or custom portrait texture, aim at a valid surface and preview the real RDR2 prop before posting it. Published notices are persistent, synchronized and restored after a resource or server restart.

The complete workflow is covered: open the creator by command or item, prepare the notice, preview it directly in the world, post it with an optional synchronized hammer animation, then inspect, copy or remove it through your selected interaction system.

:backhand_index_pointing_right: Preview video: Watch on YouTube :cactus:
:backhand_index_pointing_right: Documentation: Read the complete documentation
:backhand_index_pointing_right: Discord: Join for support


:camera: Screenshots & Preview

Live creator, native poster preview and western interface




Free tool on the webstore


:cactus: What’s Included

:page_facing_up: Native Poster Creator

  • Immersive western-themed creator with a live in-world preview
  • Real RDR2 bounty-poster props using the native FlowBlock renderer
  • Standard wanted notices and legendary bounty poster families
  • 5 standard layouts with configurable legendary difficulty
  • Editable territory, heading, wanted person, reward, description and footer
  • Immediate preview updates before the notice is published
  • Reposition tool to correct the prop without closing the creator
  • Server-selected language: English, French or Spanish

:frame_photo: Portrait & Texture Catalogue

  • Built-in catalogue covering Rockstar bounty_target TXD / TEX portraits
  • Searchable custom selector instead of a broken native HTML dropdown
  • Support for custom streamed .ytd texture dictionaries
  • Manual TXD / TEX entry for advanced creators
  • Dedicated /postertxdtest command for texture testing
  • No remote image URL dependency: poster textures remain local and stream-safe

:hammer: Immersive Placement

  • Aim at the wall or configured bounty board where the notice must be posted
  • Real prop preview follows the selected surface before confirmation
  • Optional hammer placement animation
  • Optional visible hammer prop synchronized through the server for nearby players
  • Configurable animation, duration, model, offsets and synchronization distance
  • Placement distance and board restrictions controlled from the configuration

:scroll: Persistent World Notices

  • Posters are stored in SQL and restored automatically
  • Stable native slot allocation for multiple notices on the same board
  • Server synchronization for connected players and late joiners
  • Streamed custom TXDs are initialized before native poster rendering
  • Configurable client streaming distance and maximum visible posters
  • Automatic database table creation and schema migration

:eye: Inspection, Copy & Removal

  • Inspect a notice without changing or removing the wall poster
  • Copy a read-only version into the RSG inventory
  • Remove the original notice only when the player is authorized
  • Copying or inspecting never deletes the original wall poster
  • Inventory copies retain sanitized notice metadata
  • Each action can be enabled, disabled or permission-restricted independently

:computer: Three Interaction Systems

Choose the system that matches your server:

  • Native RedM prompts
  • ox_target
  • pc_interaction

Labels include the poster identity so several nearby notices remain easy to distinguish. Copy and removal actions are available directly from the selected interaction system.

:closed_lock_with_key: Job & Permission Control

  • Allow access by exact RSG job name
  • Allow access by job type such as leo
  • Set a minimum grade for every job or job type
  • Optional ACE permission support
  • Optional allow-everyone mode
  • Separate authorization rules for creation, copying and removal
  • Permissions are validated again on the server for sensitive actions

:package: RSG Inventory Integration

  • Optional white_paper usable item opens the creator
  • Creator access can use a command, an item, or both
  • Optional cactus_wanted_poster item stores portable read-only copies
  • Items can be registered automatically or added manually with the supplied definitions
  • Supplied RSG_ITEMS.lua definitions ready to copy into RSG

:test_tube: Template Laboratory

  • /postergabarit opens a live native template laboratory
  • Test standard and legendary poster containers directly on a real prop
  • Identify which text fields are consumed by each Rockstar layout
  • Cycle through prop slots, layouts, difficulty values and TXD / TEX pairs
  • Recenter the test prop at any time

:art: Cactus Portrait Studio

  • Free web companion made for Cactus Poster Creator
  • Guided portrait preparation from the browser
  • Prepare custom poster textures without editing the resource UI
  • Export a downloadable texture pack for your local stream workflow
  • French and English interface
  • Available now at https://studio.cactus-code.fr/

:zap: Performance

  • The NUI is only rendered while the creator or template laboratory is open
  • World posters are managed through configurable distance-based streaming
  • Native slots are reused instead of creating one permanent renderer per poster
  • Server-side validation prevents duplicated placement, copy and removal requests
  • SQL data is loaded and synchronized in batches when the resource starts

:information_source: Actual resmon values depend on your poster count, streaming distance and server configuration. No artificial benchmark value is advertised.


:gear: Framework Compatibility

Framework Status
RSG-Core :white_check_mark: Fully supported
Standalone rendering tools :white_check_mark: Available for technical testing
VORP Core :x: Not included in this release

The complete gameplay workflow, permissions and inventory integration are designed for RSG-Core.


:shield: Security

  • Server-side validation for creation, copy and removal actions
  • Job, job type, grade and ACE permissions checked server-side
  • Poster IDs and database state verified before every sensitive action
  • Distance checks prevent remote interaction requests
  • Sanitized text and inventory metadata
  • Configurable action cooldowns
  • Read-only inventory copies cannot be placed back into the world
  • No remote HTTP image URLs are accepted by the in-game creator

:wrench: Dependencies

Resource Required? Why
oxmysql Yes Persistent poster storage and automatic schema management
rsg-core Yes Player data, jobs, permissions and usable items
rsg-inventory Yes for item/copy features white_paper access and portable poster copies
ox_target Optional Required only when Config.Interaction.System = ‘ox_target’
pc_interaction Optional Required only when Config.Interaction.System = ‘pc_interaction’

Native prompts require no additional interaction resource.


:open_book: Configuration

The configuration and locale files remain accessible:

File What it controls
shared/config.lua Framework, language, creator access, items, permissions, interactions, animation, streaming, boards, textures and database
shared/locales.lua All English, French and Spanish interface and notification strings
RSG_ITEMS.lua Ready-to-copy RSG item definitions
stream/*.ytd Your custom portrait texture dictionaries
sql/install.sql Optional manual database installation

Example interaction and permission setup:

Config.Locale = 'en' -- 'en', 'fr' or 'es'

Config.Interaction = {
    System = 'ox_target', -- 'prompt', 'ox_target' or 'pc_interaction'
    Distance = 2.6,
    Actions = {
        Inspect = { Enabled = true },
        Copy = { Enabled = true, AuthorizedOnly = false },
        Remove = { Enabled = true, AuthorizedOnly = true },
    },
}

Config.Permissions.Management = {
    AllowEveryone = false,
    Ace = {
        Enabled = true,
        Name = 'cactus_poster_creator.use',
    },
    JobTypes = {
        leo = 0,
    },
    Jobs = {
        sheriff = 0,
        police = 0,
    },
}

:book: Commands

Command Description
/postercreator Open the live poster workshop when authorized
/postergabarit Open the native poster template laboratory
/postergabaritoff Close and clean up the template laboratory
/postertxdtest Test a TXD / TEX pair on a native poster prop

Command names and access methods can be changed or disabled from the configuration.


:package: Exports

Full server-side API lets other resources manage persistent notices:

-- Create a persistent poster
local success, posterId = exports['cactus_poster_creator']:CreatePoster({
    boardId = 'valentine_sheriff',
    coords = { x = -275.10, y = 805.20, z = 119.40 },
    rotation = { x = 0.0, y = 0.0, z = 90.0 },
    poster = {
        type = 'standard',
        jurisdiction = 'NEW HANOVER',
        title = 'WANTED',
        subject = 'ARTHUR CALLAHAN',
        reward = '$500',
        body = 'Wanted for questioning by the sheriff.',
        nativeFamily = 'normal',
        nativeType = 1,
        nativeTxd = 'bounty_target_01',
        nativeTex = 'bounty_target_01',
    },
})

-- Update its published content
exports['cactus_poster_creator']:UpdatePoster(posterId, {
    reward = '$1,000',
})

-- Remove it from the database and every client
exports['cactus_poster_creator']:RemovePoster(posterId)

Available: CreatePoster, UpdatePoster, RemovePoster.


:rocket: Installation

  1. Place cactus_poster_creator in your resources folder.
  2. Configure shared/config.lua and select your interaction system.
  3. Add the supplied items to RSG or enable their automatic registration.
  4. Import sql/install.sql manually, or let the resource create its table.
  5. Start the dependencies before Cactus Poster Creator.
ensure oxmysql
ensure rsg-core
ensure rsg-inventory
ensure ox_target
ensure cactus_poster_creator

add_ace group.admin cactus_poster_creator.use allow

Replace ox_target with pc_interaction, or remove that line when native prompts are selected.


PRICE: 24.99€ (excl. VAT)

:shopping_cart: Tebex: https://cactus-code-webstore.tebex.io/package/7650118


Code is accessible Config and locales: Yes / Core: Escrowed
Subscription-based No
Version 0.10.5
Lines (approximately) ~6,200 resource source lines, generated builds excluded
Requirements oxmysql · rsg-core · rsg-inventory
Optional integrations ox_target · pc_interaction · Cactus Portrait Studio
Support Yes
Language Support EN / FR / ES
Documentation Complete installation, configuration and API guide

Thank you for supporting Cactus Code. :cactus: