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.
The 60-second version
Back up your current
vorp_characterfolder.Replace it with this one, keeping the folder name
vorp_character. Other VORP resources call it by that name.Make sure it starts after its requirements in
server.cfg:cfgensure oxmysql ensure vorp_core ensure vorp_menu ensure vorp_inputs ensure weathersync ensure vorp_characterRestart 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:
| Setting | What is on offer |
|---|---|
| Theme | dark (default) or light |
| Menu style | cinematic (default) or classic |
| Screen filters | 38 photo mode looks, plus None |
| Music | 7 options — 5 RDR3 music events, the scene's own default, and silence |
| Button plates | 2 — Dark slate (default) and Slate |
| Camera framing | 5 presets — Scene default, Full body, Upper body, Head, Legs |
| Camera orbit and height | Shift and the arrow keys, between -0.6 m and 2.0 m of the framing's own height |
| Weather and time of day | Per location, unless Environment.allowPlayerOverride is off |
| Cinematic bars, keybind hints, sounds | On or off |
| Language | 7 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 + LIVE | Export to config_scenes.lua | |
|---|---|---|
| Cameras, character slots, poses, weather, time, music | Yes | Yes |
| Props, wagons, NPCs | Yes | No |
| Camera travel | Yes | No |
| Reaches players | At once, no restart | After 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 server | Yes | fx_version 'cerulean', game 'rdr3', lua54 'yes'. Built and tested on build b1491 |
| vorp_core | Yes | Pulled in by the manifest itself. Characters, and the character limit per player |
| oxmysql | Yes | Pulled in by the manifest itself. Playtime, partners and saved scenes |
| vorp_menu | Yes | The character creator and the clothing menus |
| vorp_inputs | Yes | The text boxes in those menus |
| weathersync | Yes | Weather and time on the selection screen |
| vorp_inventory | No | Only for starter items and starter weapons |
| MySQL / MariaDB | Yes | 3 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.
| Table | Holds |
|---|---|
character_partners | One row per pairing — the two character ids and whether it is lover or friend |
character_playtime | Seconds played and last login, per character |
vorp_character_scenes | Scenes 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
| Page | What's in it |
|---|---|
| Installation | The replace, the start order, the tables, verifying it works |
| Player guide | Every key, the mouse, and the panels — shareable with your players |
| Configuration | config_selector.lua end to end, and what each file controls |
| Languages | The 7 locale tables, the default, and adding your own |
Locations and poses
| Page | What's in it |
|---|---|
| Locations | What a location holds, the three places they come from, the random pick |
| Poses | Solo poses, the three source modes, perLocation, and duo poses |
| Emote library | The Scene Creator's 305 poses across 12 categories |
| Partner system | Pairing, couple and friend, sync, and what happens on delete |
Building scenes
| Page | What's in it |
|---|---|
| Scene Creator | The panel, the modes, your first scene, seats and hovering |
| Scene Creator reference | Every setting in config_scenecreator.lua |
| Pose editor | partneredit, its keys, and partner_poses.json |
Under the hood
| Page | What's in it |
|---|---|
| Database | The three tables, the KVP settings, the JSON file |
| Developer API | The three exports, the client modules, and the NUI bridge |
When something is wrong
| Page | What's in it |
|---|---|
| Troubleshooting | Symptom to cause to fix, including floating characters |
| FAQ | The questions that come up first |
Related
- VORP — the framework this extends, and all frameworks
- RedM — server basics, if this is your first resource
- Animations — how RedM poses and clips work, and RedM Emotes if you want the same poses in play
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.