Skip to content

VORP Multicharacter Selector ​

A character selection screen for VORP where the characters stand in real world locations instead of on a menu. The camera opens on a wide establishing shot, glides to whichever character you move to, and frames the pose that character is holding. An in-game Scene Creator builds those locations without leaving the server.

It is the extended vorp_character. It replaces the stock VORP resource of that name and keeps everything the original did — the character creator, the clothing stores and the outfits menu.

VORP oxmysql No escrow

The 60-second version ​

  1. Back up your current vorp_character folder.

  2. Replace it with this one, keeping the folder name vorp_character. Other VORP resources call it by that name.

  3. Make sure it starts after its requirements in server.cfg:

    cfg
    ensure oxmysql
    ensure vorp_core
    ensure vorp_menu
    ensure vorp_inputs
    ensure weathersync
    ensure vorp_character
  4. Restart the server.

There is no SQL file to import. The three tables the script needs are created on first start if they are missing. Existing characters keep working — they are still read from VORP's own character data through vorp_core.

Do not rename the folder

The resource name is the folder name, and the rest of VORP looks for vorp_character. The name 'vorp character' line in fxmanifest.lua is metadata and has no effect on this.

You can switch the whole screen off

Set ConfigSelector.Enabled = false and remove the ui_page line from fxmanifest.lua to go back to the original vorp_menu character list. Everything else in the resource keeps working.

What your players get ​

The cinematic screen. One of the shipped locations is picked at random each time the screen opens. The camera takes 1200 ms to travel between characters and carries 30.0 motion blur while it moves. By default only the character you are on is visible, plus its partner — Scene.showOnlySelected is true.

13 locations. 11 in config.lua under Config.SpawnPosition, and 2 in config_scenes.lua, which are appended to that same list at load. Any scene switched LIVE in the Scene Creator joins the rotation on top of those. J cycles between them.

Character cards with name, age, job, money, gold and playtime. Playtime is tracked per character and written every 300 seconds.

Poses. E cycles the poses for the character on screen, and the choice is remembered per character. Which poses a character is offered depends on ConfigSelector.Animations.source — "merged" by default, meaning the location's own scenarios first, then the global list.

A partner system. P opens the panel. Two players pair their characters as a couple or as friends, and the partner then stands beside the character on the selection screen with a shared duo pose. There are 8 couple poses and 12 friend poses, and a request expires after 60 seconds.

Safe delete. Delete removes a character, and by default the player has to type the character's first name to confirm it. Deleting also clears the pairing and runs the clean-up list in Delete.cascade.

A settings panel on O, saved on each player's own PC rather than on the server:

SettingWhat is on offer
Themedark (default) or light
Menu stylecinematic (default) or classic
Screen filters38 photo mode looks, plus None
Music7 options — 5 RDR3 music events, the scene's own default, and silence
Button plates2 — Dark slate (default) and Slate
Camera framing5 presets — Scene default, Full body, Upper body, Head, Legs
Camera orbit and heightShift and the arrow keys, between -0.6 m and 2.0 m of the framing's own height
Weather and time of dayPer location, unless Environment.allowPlayerOverride is off
Cinematic bars, keybind hints, soundsOn or off
Language7 entries in ConfigSelector.Locales

All seven selection-screen languages are complete at 89 keys each — English, Deutsch, Español, Français, Nederlands, Русский and 日本語. The character creator and clothing menus use a separate set of translations with a different list of languages. See Languages.

The full key list, including the mouse and the six rebindable keys, is on Player guide.

What you get as an admin ​

The Scene Creator. /scenecreator, restricted to the VORP groups in ConfigCreator.AdminGroups (admin by default) and checked again on the server for every save. Fly a freecam, drop character slots, pose them, pin a camera per slot, then add props, wagons, NPCs and a camera travel path. One scene holds up to 8 character slots, 60 props, 12 wagons, 20 NPCs and 20 travel points.

Saving a scene and switching it LIVE puts it in front of players immediately — the server broadcasts it and the clients apply it, so there is no restart. The Export tab instead gives you a block to paste into config_scenes.lua, which survives an update of the database but carries less:

Save + LIVEExport to config_scenes.lua
Cameras, character slots, poses, weather, time, musicYesYes
Props, wagons, NPCsYesNo
Camera travelYesNo
Reaches playersAt once, no restartAfter a restart

A scene can end up in the rotation twice

If it is both LIVE in the database and pasted into config_scenes.lua, players will see it as two separate locations. Pick one or the other.

The editor will not open while the character selection screen is up — spawn in first. F9 force-closes it from anywhere, and scenecreatorclose in the F8 console is the fallback if even that stops responding.

A 305-pose browser. The Scene Creator's pose list runs across 12 categories, with the grounded scenario poses listed first in each. The Seated category snaps to the nearest of 28 seat models within 3.5 m. Full breakdown on Emote library — and read why the three kinds behave differently before you chase a floating character.

A partner pose editor. partneredit in the F8 console nudges the partner into place in each duo pose, live, while you watch it on screen. Saves land in partner_poses.json and reach every player at once, and each save also prints its attach line ready to paste back into animations.lua. Covered on Pose editor.

Diagnostics. /scenedebug validates the loaded scene and names what is wrong with it, /scenedump prints the editor's state when something feels stuck, and /scenekeys shows for 10 seconds whether the editor is receiving your key presses. The selector has its own set under /selectordebug.

Every file is readable ​

escrow_ignore in fxmanifest.lua covers '*' and '**/*', and the manifest says so in as many words — Asset Escrow encrypts nothing here. Every Lua file, the HTML page, app.js, creator.js and the stylesheets are all yours to open, read and change.

That matters more than it sounds for this resource, because the parts you are most likely to want to touch are the parts a protected script would hide: the camera work in client/selector_scene.lua, the pose lists in animations.lua and config_emotes.lua, and the NUI page itself.

After editing the page, raise the cache number

CEF caches by URL. If you change app.js, creator.js or a stylesheet, increase the ?v= number on its tag in html/index.html or the client will keep serving the old copy.

Requirements ​

Required
RedM serverYesfx_version 'cerulean', game 'rdr3', lua54 'yes'. Built and tested on build b1491
vorp_coreYesPulled in by the manifest itself. Characters, and the character limit per player
oxmysqlYesPulled in by the manifest itself. Playtime, partners and saved scenes
vorp_menuYesThe character creator and the clothing menus
vorp_inputsYesThe text boxes in those menus
weathersyncYesWeather and time on the selection screen
vorp_inventoryNoOnly for starter items and starter weapons
MySQL / MariaDBYes3 tables, created on first start

There is no dependency block in the manifest

So a missing requirement does not produce a friendly message — it produces a load error, or a screen that opens with no weather. If the selection screen misbehaves on a fresh install, check the start order first. New to the framework? Start at VORP.

The three tables ​

Created with CREATE TABLE IF NOT EXISTS on start. Nothing to import.

TableHolds
character_partnersOne row per pairing — the two character ids and whether it is lover or friend
character_playtimeSeconds played and last login, per character
vorp_character_scenesScenes saved in the Scene Creator, as JSON, with who saved them and when. The name comes from ConfigCreator.Table

Characters themselves stay in VORP's own tables. Player settings, including the last pose per character, live in client KVP on the player's PC. Pose editor saves live in partner_poses.json in the resource folder. See Database.

Where to go next ​

Getting it running

PageWhat's in it
InstallationThe replace, the start order, the tables, verifying it works
Player guideEvery key, the mouse, and the panels — shareable with your players
Configurationconfig_selector.lua end to end, and what each file controls
LanguagesThe 7 locale tables, the default, and adding your own

Locations and poses

PageWhat's in it
LocationsWhat a location holds, the three places they come from, the random pick
PosesSolo poses, the three source modes, perLocation, and duo poses
Emote libraryThe Scene Creator's 305 poses across 12 categories
Partner systemPairing, couple and friend, sync, and what happens on delete

Building scenes

PageWhat's in it
Scene CreatorThe panel, the modes, your first scene, seats and hovering
Scene Creator referenceEvery setting in config_scenecreator.lua
Pose editorpartneredit, its keys, and partner_poses.json

Under the hood

PageWhat's in it
DatabaseThe three tables, the KVP settings, the JSON file
Developer APIThe three exports, the client modules, and the NUI bridge

When something is wrong

PageWhat's in it
TroubleshootingSymptom to cause to fix, including floating characters
FAQThe questions that come up first

Support ​

Discord: discord.gg/w4Ew4k3Exn

Turn on ConfigSelector.Debug, or type /selectordebug in game, before opening a ticket. Most floating and sinking problems print their own fix to the console.

Version 1.0.0.

Documentation for RedMorrow. Scripts are licensed per server — redistribution is not permitted.