ORYNTDOCS
StoreSupport
Docs/Staff tools

Prop Manager

v1.2.0

Remove, move and place props in-game with a full Prop Manager UI. Clear a bench out of a doorway, move a dumpster that blocks an MLO entrance, tidy up a scene. Every edit is listed in one window where you can name it, teleport to it, re-edit it or restore it. Edits are saved on the server automatically and apply for every player, including props inside MLOs.

Features

  • One command, one menu (/propmanager): every edit in one list with search, filters (all / removed / moved / placed) and sorting (nearest / newest). Shows who made each edit, when, and how far away it is.
  • Place new props: pick from quick picks or type any prop model name, position it with the move keys and save. Placed props are saved and shown to every player like any other edit.
  • Teleport to an edit's original spot or to its new position, straight from the manager.
  • Name your edits ("Bench blocking the PD door") so staff know why a prop was changed.
  • Edit position of a moved prop from the manager: it teleports you there and opens move mode.
  • Restore one edit (or delete a placed prop), or select several and undo them all at once.
  • Copy model, positions and ids with one click.
  • Aim editor (started from the menu): the prop you aim at is outlined with its type, model and distance. Press E for a panel with every option: remove, move, copy details, open in the manager.
  • Move mode panel with live position and rotation, plus Tab to type exact values. Snap to ground, reset tilt, fast / slow movement, all 3 rotation axes.
  • Edited-prop markers: removed and moved props leave a marker at their original spot. Aim at it and press H to restore it, teleport or open it in the manager.
  • Works on MLO props: interiors keep re-creating their props, so edits are re-applied automatically.
  • Safe: props spawned by other scripts are locked, so you can't break another resource's objects.
  • Edits apply for everyone and survive restarts. They only stream in near players, so far-away edits cost nothing.
  • Works on any server: ESX, QBCore, Qbox or standalone. Only ox_lib is required. No SQL.
  • Permissions by ace or framework admin group.
  • Discord logs for removes, moves, placed props and restores.
  • Fully configurable UI colors, fonts, keys and fully translatable.

Requirements

orynt_bridge Required (free, from Orynt Development)
ox_lib Required
ESX / QBCore / Qbox Optional: only used so their admin groups can use the editor

Files

orynt_propmanager/
├── config.lua            Settings, keys, UI colors (editable)
├── fxmanifest.lua
├── README.md             This file
├── LICENSE.md            Terms of use
├── locales/
│   └── en.lua            All text (editable, copy to translate)
├── shared/
│   └── text.lua          Loads the language
├── client/
│   └── main.lua          Editor, move mode, applying edits
├── server/
│   ├── sv_config.lua     Discord and console logs (editable, server only)
│   ├── logs.lua          Discord webhook sender
│   └── main.lua          Saving edits, permissions
└── html/                 Prop Manager and editor panels (UI)

Files marked editable stay readable when the resource is escrowed.

Installation

  1. Put the orynt_propmanager folder in your resources folder.

    Don't rename the folder. Saved edits are stored under the resource name. A renamed folder starts empty.

  2. In server.cfg, after ox_lib: cfg ensure ox_lib ensure orynt_bridge ensure orynt_propmanager
  3. Permissions: admins in your framework's admin, superadmin or god group can already use it. To give access by ace instead (or as well, and on standalone servers): cfg add_ace group.admin orynt_propmanager.admin allow
  4. Restart the server, or type refresh and then ensure orynt_propmanager. You should see: [Orynt Prop Manager] Loaded 0 prop edit(s)

Coming from CarrotPropRemover or an older version? Copy your old data/props.json into orynt_propmanager/data/props.json before the first start. The edits are imported once, then you can delete the file.

Prop Manager (/propmanager)

/propmanager is the only command. Everything else is done from this menu.

  • Counts of removed, moved and placed props.
  • Search by name, model, edit id or staff name. Sort: Nearest / Newest.
  • Filter: All / Removed / Moved / Placed.
  • Tick the boxes to select several edits, then Restore them all at once (with a confirmation). Placed props in the selection are deleted.

Top buttons - Place prop opens the place view (see Placing props). - Start editor closes the window and turns on the aim editor (press Backspace there to come back).

Pick an edit to see: - Name: type a name (max 40 characters) and press Save name. Everyone with access sees it. - Details: model, distance, original position, new position and rotation (moved props), MLO room, edit id. The copy buttons copy a value to your clipboard. - Actions: - Teleport to original spot / Teleport to new position (placed props: Teleport to prop) - Edit position (moved and placed props): teleports you there and opens move mode, then brings you back here - Remove instead (moved props): turns the move into a remove - Restore original: the map prop comes back for every player (with a confirmation) - Delete prop (placed props): removes it for every player (with a confirmation)

Press Esc or the close button to close the window. The list updates live when other staff make changes.

Placing props

  1. In the Prop Manager, click Place prop.
  2. Click one of the quick picks, or type any prop model name (e.g. prop_bench_01a) or hash and press Place. Typing also filters the quick picks.
  3. The prop appears on the ground in front of you, in move mode. Position it (see Move mode) and press Enter to save, or Backspace to cancel.
  4. You're taken back to the Prop Manager with the new prop selected, so you can name it.

Placed props show amber in the list. Change the quick picks in Config.PlaceProps. A model that doesn't exist (or a vehicle) shows "That prop model doesn't exist". Placed props are local objects that every player spawns for themselves, so they cost no network entities.

Aim editor

In the Prop Manager, press Start editor. Press Backspace to go back to the Prop Manager. A crosshair appears, and a bar at the top shows the prop you aim at with its type, model and distance.

Key
E Options for the prop you aim at
H Options for an edited prop (aim at its marker)
Backspace Back to the Prop Manager

The prop panel (E) shows the model and position (with copy buttons) and the options: - Map prop: Remove or Move. - Moved prop (one you moved earlier): Remove, Move again, Open in manager, Restore original. - Placed prop: Move again, Open in manager, Delete prop. - Script prop (locked): spawned by another resource. Change it in that resource instead.

Edited-prop markers: removed props can't be aimed at, so every edit within Config.RestoreDistance shows a marker at its original spot (red = removed, blue = moved). Aim at it and press H to teleport to its original spot, open it in the manager or restore it.

Move mode

Opens from the prop panel (Move), the manager (Edit position) or when placing a prop. A panel shows the live position and rotation.

Key
Arrow keys Move forward / back / left / right (relative to the camera)
Page Up / Page Down Move up / down
Q / E Rotate on the current axis
Z Change the rotation axis (pitch, roll, yaw)
R Reset the tilt (pitch and roll)
G Snap to the ground
Shift / Ctrl Fast / slow
Tab Type exact values (press Tab again to go back to the keys)
Enter Save
Backspace Cancel

Exact values: press Tab and the mouse is freed. Click X / Y / Z / Pitch / Roll / Yaw, type a number and the prop jumps there. The Snap to ground, Reset tilt, Save and Cancel buttons work too.

Configuration (config.lua)

1. Commands and permissions

Option Default
Config.Command 'propmanager' Opens the Prop Manager (the only command)
Config.AdminAce 'orynt_propmanager.admin' Ace that gives access
Config.AdminGroups { 'admin', 'superadmin', 'god' } ESX / QBCore / Qbox groups that give access

2. Editor

Option Default
Config.MaxAimDistance 50.0 How far you can target props
Config.SnapRadius 2.0 Props without collision: the nearest prop this close to where you aim is picked
Config.RestoreDistance 30.0 Edited-prop markers show for edits this close
Config.MoveStep 0.02 Move mode: meters per frame (x5 Shift, x0.2 Ctrl)
Config.RotateStep 1.0 Move mode: degrees per frame
Config.Colors Orynt blue / red In-world outline, crosshair and marker colors
Config.PlaceProps 16 common props Quick picks in the Place prop view: { model = 'prop_name', label = 'Name' }

3. Applying edits

Option Default
Config.StreamDistance 300.0 Edits are applied when a player is this close
Config.HideRadius 0.5 Radius used to hide the original prop (keep small so identical neighbours stay)
Config.EnforceDistance 100.0 Within this distance hidden props are re-checked every second (for MLO props)

4. Keys

Config.Keys: every editor and move-mode key (control ids). Config.KeyLabels: how each key is shown in the UI. If you change a key, change its label too.

5. Language, notifications and UI

Option
Config.Locale Language file in locales/ (default 'en')
Config.Notify Notification title and position
Config.UI.colors Every UI color: accent, danger, success, warn, text shades, backgrounds, borders. Any CSS color works; see-through shades are worked out automatically
Config.UI.backdropOpacity How much the game is dimmed behind the Prop Manager (0 to 1)
Config.UI.font / headingFont / monoFont Fonts for text, window titles and numbers
Config.UI.radius Corner rounding in px

Server configuration (server/sv_config.lua)

Never sent to players, so webhook links stay private.

Option Default
SvConfig.ConsoleLogs false Also print every remove / move / place / restore in the server console
SvConfig.Logs.enabled false Send Discord logs
SvConfig.Logs.webhook '' Webhook for every log type...
SvConfig.Logs.webhooks all '' ...unless a type has its own here (remove, move, place, restore)
SvConfig.Logs.events all true Turn log types on / off
SvConfig.Logs.colors Embed color per type
SvConfig.Logs.username / avatar Webhook name and picture
SvConfig.Logs.identifiers { 'license', 'discord' } Identifiers shown on each log

Discord logs

  1. In Discord: Server Settings → Integrations → Webhooks → New Webhook, pick the channel, Copy Webhook URL.
  2. In server/sv_config.lua, paste it into SvConfig.Logs.webhook and set enabled = true.
  3. Optional: a webhook per channel in webhooks (remove, move, place, restore).
  4. ensure orynt_propmanager.

Each log shows who did it, the prop model, the edit id and the positions. Keep webhook links private.

Translating

All text, including the whole UI, is in locales/en.lua. Copy it to e.g. locales/de.lua, change Locales['en'] to Locales['de'], translate it (keep the words in {braces}), set Config.Locale = 'de', then refresh and ensure orynt_propmanager. Anything left out falls back to English.

Saved data

Edits are saved in the server's resource storage (KVP), not in a database: one entry per edit. They survive restarts and updates.

  • Saved data belongs to the resource name orynt_propmanager: don't rename the folder.
  • To undo everything, open the Prop Manager, select the edits and restore them.

Other resources can read the edits with exports.orynt_propmanager:GetEdits().

Updating

Replace the resource folder with the new version and start it (refresh, then ensure orynt_propmanager, or restart the server). Nothing to copy over:

  • Your settings come back by themselves. Every start, config.lua, server/sv_config.lua and your own translation are copied to the server (its KVP, outside the resource folder). When the new version starts with the files from the download, yours are put back and the resource restarts once to load them.
  • New options your config doesn't have yet use their defaults, and the console lists them once (the changelog below says what they do).
  • Your prop edits are saved on the server, not in the resource folder: they stay.
  • Keep the resource's name (orynt_propmanager): the saved settings belong to it.

To let it restart itself after putting your settings back, add this to server.cfg (without it, the console asks you to type ensure orynt_propmanager once):

add_ace resource.orynt_propmanager command.ensure allow

To go back to the default settings on purpose: type orynt_propmanager:resetsettings in the server console, put the files from the download back and restart the resource.

Updating from a version before 1.1.0: those don't save your settings yet, so this one time keep a copy of your config.lua, server/sv_config.lua and language files, and put them back after replacing the folder. From 1.1.0 on, updates keep them by themselves.

Changelog

  • 1.2.0: now runs on orynt_bridge, the free Orynt resource that handles your framework (admin groups) for every Orynt script. Install it once (see Installation); your settings and data stay.
  • 1.1.0: the new Orynt look: purple theme, Orbitron titles, the new Orynt logo and wordmark, purple checkboxes and dropdowns, purple outline, crosshair and restore markers in the editor, purple Discord logs. Updates keep your settings now: replace the folder and your config comes back by itself (see Updating).

Troubleshooting

Problem Fix
"You don't have permission" Add the ace (see Installation) or check your framework group
A prop can't be selected It may have no collision: aim right at it (within Config.SnapRadius)
"Script prop (locked)" Another resource spawned it. Change it in that resource
Can't click the move panel Press Tab first to free the mouse
"That prop model doesn't exist" Check the spelling of the model name (e.g. on a prop list site), or use its hash
"Could not find the moved prop here" The area didn't load in time after teleporting. Wait a second and press Edit position again
A removed MLO prop flickers back Raise Config.EnforceDistance a little
Removing one prop also hid an identical one right next to it Lower Config.HideRadius
Edits don't show far away They only apply within Config.StreamDistance of a player (on purpose, for performance)
attempt to index a nil value (global 'Locales') refresh, then ensure orynt_propmanager
Console: Discord log failed (HTTP 4xx) The webhook link is wrong or was deleted

Escrow and license

When escrowed, config.lua, server/sv_config.lua and locales/ stay readable so you can configure and translate it. See LICENSE.md for the terms of use. In short: use it on your own servers; don't resell, share or leak it; keep the Orynt Development branding.

© Orynt Development

Orynt Development© Orynt Development. Docs for every Orynt FiveM script.