RDE_PROPS_INTERACT DOCS
RED DRAGON ELITE // PROPERTY & WORLD · ADDON

Any Prop.
Any Safe. Any Bench.

rde_props_interact turns any placed rde_props prop into an interactive RP object — a lockable stash with crack mechanics and passcodes, or a crafting station with full recipe systems and minigame skillchecks. Zero modifications to rde_props core, drop-in, drop-out.

01 / Start Here

Overview

Place a safe → configure it as a lockable stash → players can crack it, enter a passcode, or own it exclusively. Place a table → configure it as a crafting station → assign recipes and skillchecks. No other prop system does this natively for ox_core.

Core Principle The addon never touches rde_props' own code or database table — it hooks in entirely through StateBags and ox_target, and can be removed at any time with rde_props running exactly as before.
02 / Start Here

How It Works

  1. Listens to AddStateBagChangeHandler('rde_prop_', ...) — detects when rde_props spawns or updates a prop
  2. Checks if that prop has interact data in its own separate DB table
  3. If yes → attaches options via ox_target:addLocalEntity directly to the same entity — options appear in the same menu as rde_props' Info/Delete
  4. Auto-configure: if the model matches a configured auto-stash or auto-crafting entry, it's configured automatically on placement
03 / Start Here

Quick Start

server.cfg
ensure oxmysql
ensure ox_core
ensure ox_lib
ensure ox_inventory
ensure ox_target
ensure rde_props
ensure rde_props_interact
Important Config.PropsStatebagPrefix must exactly match rde_props' own Config.StatebagPrefix (default: rde_prop_ with an underscore).
04 / Reference

Stash System

Stash ID is bound to the Prop ID — never to coordinates — so it survives every reload. Auto-stash models configure themselves the moment they're placed.

config.lua
Config.AutoStashModels = {
    ['prop_safety_case_01'] = {
        slots     = 10,
        maxWeight = 5000,
        lockType  = RDE_INTERACT.LOCK.OWNER,
        crackDiff = RDE_INTERACT.CRACK.MEDIUM,
    },
}
05 / Reference

Crafting System

config.lua — Recipe set
Config.RecipeSets['weed_table'] = {
    label   = '🌿 Weed Processing Table',
    recipes = {
        {
            id         = 'baggy_weed_small',
            inputs     = { ['dry_cannabis'] = 3, ['empty_baggy'] = 1 },
            output     = { item = 'baggy_weed_small', count = 1 },
            time       = 6000,
            skillCheck = 'easy',
        },
    },
}
06 / Reference

Lock & Crack System

Lock TypeWho can open
ownerThe player whose identifier is stored as owner
job / groupAny player with the specified ox_core job/group
passcodeAnyone with the correct numeric code
Crack DifficultyProgressbarSkillchecks
Easy5s1 check, large zone
Hard20s3 checks, tight zones
Police alert When enabled, online players with the configured police job get notified on crack attempt — not just success — including the coordinates.
07 / Reference

Developer API

Listen for interact sync
AddEventHandler('rde_interact:sync', function(propId, data)
    -- data = { type = 'stash'|'crafting', metadata = {...} }
end)
08 / More

Common Pitfalls

StateBag prefix mismatch

The root fix in v1.0.5: the addon's internal prefix was rde_prop: (colon) while rde_props actually uses rde_prop_ (underscore) — target options silently never appeared.

Fix: corrected to match exactly. Always verify Config.PropsStatebagPrefix against rde_props' own config.

Options appeared in a separate ox_target menu

Using addBoxZone created a second, separate zone instead of extending the existing one.

Fix (v1.0.5): switched to addLocalEntity — interact options now appear in the same menu as rde_props' own options.

Passcode always says wrong

Passcodes set before v1.0.5 may have been double-hashed.

Fix: delete and re-configure the prop's passcode to reset it cleanly.

09 / More

FAQ

Does removing this addon break rde_props?

No — rde_props runs exactly as before with zero errors if rde_props_interact is removed.

Where is stash content stored?

ox_inventory stores it under the stash ID rde_prop_{propId} — deleting the prop's interact config doesn't clear the stash contents automatically.

10 / More

Changelog

v1.0.5

Root fix: StateBag prefix corrected to underscore. Switched addBoxZone → addLocalEntity so options share rde_props' menu.

v1.0.1

3-stage entity-finding retry, passcode hashing, crack cooldowns, police alert on attempt not just success.