RDE_PROPS DOCS
RED DRAGON ELITE // PROPERTY & WORLD

Raycast Placement.
Non-Networked Entities.

rde_props is the foundation of the RDE prop ecosystem — mouse-based raycast placement with full X/Y/Z rotation, three speed modes, and real-time StateBag sync. Props spawn as local non-networked entities, so there's no GTA entity-limit overhead even at thousands placed.

01 / Start Here

Overview

rde_props is the core placement layer of an open prop ecosystem. Pair it with rde_props_interact to turn any placed prop into a lockable stash or crafting station — zero modifications to rde_props core required.

Core Principle Props spawn as local client entities (CreateObject with network=false) — no GTA networked entity overhead, no entity limit. Sync happens exclusively via StateBags broadcasting only delta changes.

Why this over generic prop scripts

Generic Prop Scriptsrde_props
Mouse-based placementRaycast-based
3D rotation (all axes)X, Y, Z with speed modes
Real-time syncPolling → StateBag, instant
Item-based propsox_inventory integration
Stash & crafting layerVia the rde_props_interact addon
02 / Start Here

Quick Start

server.cfg
ensure oxmysql
ensure ox_core
ensure ox_lib
ensure ox_inventory
ensure ox_target
ensure rde_props

The rde_props table auto-creates on first start. Open the placement menu with /props.

03 / Reference

Controls

ActionKey
Confirm placementLeft Mouse / ENTER
CancelRight Mouse / BACKSPACE
Rotate Z axis← → / Numpad 4/6
Rotate X axis↑ ↓ / Arrow Keys
Height adjustMouse Scroll / Numpad +/-
Fast / Precise modeSHIFT / ALT (hold)
Toggle collisionG
04 / Reference

Item Integration

ox_inventory/data/items.lua
['bench_prop'] = {
    label       = 'Bench',
    weight      = 1000,
    client = {
        prop  = 'prop_bench_01a',
        event = 'rde_props:placeItemProp',
        name  = 'Wooden Bench',
    }
},

The item is removed when placement starts and returned automatically on cancel. Item-placed props are pickupable by anyone; admin-placed props are permanent.

05 / Reference

Developer API

EventSideNotes
rde_props:reloadPropsServerReload all props from database
rde_props:deletePropServerDelete a specific prop by ID
rde_props:openMenuClientOpen the prop menu programmatically
06 / Reference

Performance

Props in WorldClient FPS ImpactSync Overhead
500<2%<1ms
2000~3–5%<2ms

Keep enableLOD = true and raise updateTickRate on servers with very high prop counts.

07 / More

Common Pitfalls

collision = false or true logic bomb

A Lua truthiness bug in StartPlacement and placeFromItem meant the collision flag always evaluated true regardless of what was passed.

Fix (v1.0.1): corrected the boolean logic — collision now respects the actual configured value.

Double StateBag + TriggerClientEvent broadcast

toggleCollision and toggleAdmin fired both a StateBag update and a manual TriggerClientEvent for the same data.

Fix (v1.0.1): removed the duplicate manual broadcast — UpdateStatebag() alone is now the single sync path.

08 / More

FAQ

Do I need rde_props_interact?

No — it's a fully optional addon. rde_props works standalone as a pure placement system.

Can regular players pick up admin-placed props?

No — only item-placed props are pickupable by anyone. Admin-placed props are permanent.

09 / More

Changelog

v1.0.1

Fixed collision logic bomb, fixed double-broadcast in toggleCollision/toggleAdmin, fixed Wait() inside a NetEvent handler.

v1.0.0

Complete rewrite — mouse raycast placement, full 3D rotation, speed modes, ox_target integration, StateBag sync.