For the complete documentation index, see llms.txt. This page is also available as Markdown.

IPL Loader

GTA V interior IPL loader for FiveM. Handles IPL loading, entity set configuration, and per-client overrides across all DLC interiors. Includes a built-in admin NUI panel for live configuration.


Installation


Configuration

Admin access requires ACE permissions in one of the groups listed in Config.AdminGroups


Admin Panel

Open the panel in-game with the configured command (default: admin:ipl). Requires membership in one of the groups defined in Config.AdminGroups.

The panel lets you browse interiors by DLC, configure variants (style, lighting, decor, etc.), preview changes locally before saving, and export ready-to-use Lua snippets.


Client Exports

All exports are client-side only and affect only the calling client. They work through a local override layer — they never touch the server state and do not sync to other players. Use them to set up interiors for specific scenarios (missions, cutscenes, job instances, etc.) on a per-player basis.

Note: intId is the interior's registry key (e.g. 'nightclubs', 'arcade'). Use the Export button in the admin panel to get the correct IDs and variant keys for any interior.


loadLocal(intId)

Marks the interior as active for this client and loads its IPLs. Does not change server state.

Returns: true on success, false if intId is not in the registry.

Use cases:

  • Activating an interior at the start of a mission instance

  • Showing an interior to one player without affecting others

  • Loading a job-specific location (e.g. a biker clubhouse) when a player begins that job


removeLocal(intId)

Deactivates the interior for this client, removes IPLs, and clears all local variant overrides for it.

Returns: true on success, false if intId is not in the registry.

Use cases:

  • Cleaning up an interior when a mission or job ends

  • Unloading a location after a cutscene finishes

  • Resetting to the server-defined state without calling resetLocal


setVariantLocal(intId, group, optionKey)

Sets a single variant option (entity set) on the interior for this client only. Activates the entity set immediately and refreshes the interior — no preview step needed.

Returns: true on success, false if the interior or variant group is not found.

Parameter
Type
Description

intId

string

Registry key of the interior

group

string

Variant group name (e.g. 'Style', 'Lasers')

optionKey

string

Option key within that group (e.g. 'glam')

Use cases:

  • Setting a specific nightclub theme for a DJ event script

  • Configuring a casino interior differently per heist phase

  • Personalizing a player's apartment or office decor within a job


clearVariantLocal(intId, group)

Clears the local override for a single variant group, reverting it to the server-defined value (or the interior's default if no server value exists). The revert is applied immediately.

Returns: true on success, false if intId is not in the registry.

Use cases:

  • Reverting one option after a cutscene without resetting the whole interior

  • Letting the server-configured style take over after a player-specific phase ends


resetLocal(intId)

Clears all local overrides for an interior and re-applies the current server state. Equivalent to the player rejoining with a clean slate.

Returns: true on success, false if intId is not in the registry.

Use cases:

  • Fully cleaning up after a mission without needing to know which variants were changed

  • Syncing a player back to the global server configuration after a private event


isActive(intId)

Returns whether the interior is currently active for this client (merges local overrides with server state).

Returns: boolean


getState(intId)

Returns the merged state for an interior (server state + local overrides). This is what applyState uses internally.

Returns: table | nil


getServerState(intId)

Returns the raw server-synced state for an interior, without local overrides applied.

Returns: table | nil


getLocalOverrides(intId)

Returns only the local override table for an interior, or nil if none exist.

Returns: table | nil


getRegistry()

Returns the full interior registry. Each entry contains the interior definition including id, label, category, coords, variants, defaults, and ipls.

Returns: table


sync()

Requests a full state sync from the server. Triggers requestSync, which causes the server to re-send the full activeState to this client. Useful after a resource restart or if local state drifts.


Full Example — Mission Script


Credits

  • Bob74 — The interior entity set definitions, IPL lists, and coordinates used in this resource were referenced from bob74_ipl. An invaluable open reference for GTA V interior modding on FiveM.

Last updated