Docs

ESX Legacy Core — X3D Build

A faster es_extended that stops player saves going corrupt, autosaves every 10 minutes and freezes the economy before a restart. Drop-in, same resource name.

Buy / Get free

Installation

  1. Stop the server
  2. Move your existing es_extended somewhere outside resources/
  3. Drop the es_extended folder from this download in its place
  4. Start the server

No SQL to run if you already have an ESX database. For a fresh install, run es_extended.sql.

This banner on boot means it is in:

=========================================================
  [ESX]  <server name>
---------------------------------------------------------
  Resources   208 started / 250 total
  Database    31 ms
  Framework   ESX 1.13.4-x3d.1
---------------------------------------------------------
  Modified build of ESX Legacy es_extended (GPL-3.0)
=========================================================

Database table names

In shared/config/main.lua. Defaults are the stock ESX names; a server using different ones changes this block and nothing else.

Config.Tables = {
    users = 'users',
    items = 'items',
    jobs = 'jobs',
    job_grades = 'job_grades',
    owned_vehicles = 'owned_vehicles',
    server_log = 'esx_server_log',
}

The loading screen and ENTER WORLD

Once a player's data is loaded the core parks them and waits for esx:playerReadyToSpawn from the loading screen before putting them in the world.

A loading screen without that handshake still works — the core releases the player once the timeout passes.

Config.EnterWorldTimeout = 120000   -- 0 = wait forever

Pair it with x3d_loadingscreen for a real ENTER WORLD button.

Money and item notification icons

nc_inventory and ox_inventory are detected automatically. Set it yourself for anything else.

Config.ItemIconUrl = 'nui://<inventory>/<path>/%s.png'
-- false = no icon (the notification still shows)

The pre-restart economy lock

Config.RestartLock = {
    seconds = 600,       -- how long before the restart the lock arms
    kickSeconds = 120,   -- how long before the restart everyone is dropped
    allow = { es_extended = true, esx_identity = true, ... },
}

allow lists the resources still permitted to move money and items while locked. Put UI and infrastructure there only — never anything that can pay out or hand over items.

Console: restartlock on [seconds] · restartlock off · restartlock status

The audit log

Set these in server_secrets.cfg:

set esx_serverlog_webhook        "https://discord.com/api/webhooks/..."
set esx_serverlog_webhook_money  "..."     # per-kind channel override
set esx_serverlog_alert_money    100000    # alert above this
set esx_serverlog_alert_item     100
set esx_serverlog_log_ip         1         # 0 = never store IPs
set esx_serverlog_ignore         "res_a,res_b"

Write your own entries from any resource:

TriggerEvent('esx_serverlog:write', src, 'kind', { any = 'data' })

Events this build adds

Event Fires when
esx:serverEntityCreated (server) a vehicle/object/ped is spawned server-side — let an anticheat whitelist it
esx:restartLock (client) the economy lock arms — any UI that moves money should close itself
esx:restartLockFinalFlush (server) 15 s before the restart — flush anything that must reach the database
esx:spawnedWithoutEnterWorld (client) the core released the player without a click — the loading screen must take itself down

Commands

esxstats — resource counts, players, database ping, uptime

Going back

Put your old es_extended back and restart. Nothing about the database layout changes.

View product page