RDE_IPL DOCS
RED DRAGON ELITE // PROPERTY & WORLD

65 Interiors.
Zero Void Drops.

rde_ipl is a native GTA interior property system for ox_core — 65 hand-picked IPLs from apartments to the Cayo Perico compound, each guarded by a streaming-safe teleport sequence and a startup coordinate validator so nobody ever falls through the map.

01 / Start Here

Overview

Every property instance gets its own routing bucket — a private dimension where guests only see who's actually in their instance. Full CRUD, dual money system (ox_inventory item or ox_core bank account), and auto-cleanup for empty instances.

Core Principle A coordinate validator runs at startup and catches (0,0,0) entries and identical coords/exitCoords before a single player can be voided by a bad config entry.

Why this over other IPL/property scripts

Other IPL Scriptsrde_ipl
Teleports you into the voidStreaming-safe teleport: freeze → RequestCollision → settle → unfreeze
No interior exitox_target sphere zone right where you spawn
One global instance, players see each otherRouting buckets — every property is a private dimension
Hard-coded coords, no validationCoord validator on startup + client-side guard
02 / Start Here

Quick Start

server.cfg
ensure oxmysql
ensure ox_lib
ensure ox_core
ensure ox_target
ensure ox_inventory   -- only if MoneySystem.Source = 'inventory'
ensure rde_nostr_log  -- optional
ensure rde_ipl

add_ace group.admin rde.ipl.admin allow

No SQL import needed — tables auto-create. Console prints a startup banner confirming IPL count and any coordinate validation warnings.

03 / Reference

Streaming-Safe Teleport

StreamingSafeTeleport() is the only teleport function used anywhere in the resource — never a naked SetEntityCoords. The sequence: freeze the ped → RequestCollisionAtCoordNewLoadSceneStart → wait for collision to settle → SetEntityCoords → unfreeze.

Adding a custom IPL coords and exitCoords must never be identical — the coord validator warns on startup if they are, and the client refuses to teleport rather than risk a void drop.
04 / Reference

Configuration

config.lua — Adding a custom IPL
{
    id           = 'my_custom_ipl',
    name         = 'My Custom Location',
    price        = 500000,
    ipl          = {'custom_ipl_name'},
    coords       = vector4(x, y, z, heading),      -- interior spawn
    exitCoords   = vector4(x, y, z, heading),      -- exterior exit
    maxOccupancy = 8,
    blip         = { sprite = 374, color = 6, scale = 0.85 },
}

Every entry can override its own blip sprite/color/scale, or set blip = false to hide it entirely.

05 / Reference

Nostr Logging

Purchase, sale, enter, exit, admin actions, lock toggles, security violations, and even server startup/shutdown are logged to rde_nostr_log if it's running. Every log call is a no-op if it isn't.

06 / Reference

Exports

ExportNotes
GetProperty(instanceId)Full state for one instance
IsPlayerInProperty(source)Returns inProperty, instanceId
EvictPlayer(source)Force-evict from current instance
GetStatistics()Transaction count, revenue, peak concurrency
07 / More

Common Pitfalls

"Property exited" notification appears twice

The server sent the notification directly after removePlayer() AND the client showed it again after the teleport completed — two sources, same message.

Fix (v1.0.1-alpha): removed the redundant server-side notification. The client one is correct — it fires after teleport, not before.

Player spawns underground / falls through the map

Usually an IPL entry with coords near (0,0,0).

Fix: check server console at startup for "⚠ IPL entries have INVALID coords" warnings and correct the vector4 in Config.IPLDatabase.

08 / More

FAQ

Can I use bank money instead of an inventory item?

Yes — set Config.MoneySystem.Source = 'banking' to use an ox_core bank account instead of an ox_inventory item.

Do other players in the same instance see each other?

Yes, up to maxOccupancy — routing buckets isolate each property instance from every other instance, not from other players inside the same one.

09 / More

Changelog

v1.0.1-a

Removed duplicate "Property exited" notification — server-side redundant call eliminated.

v1.0.0-a

Initial release — 65 IPLs, routing buckets, streaming-safe teleport, dual money system, Nostr logging.