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 freeInstallation
- Stop the server
- Move your existing
es_extendedsomewhere outsideresources/ - Drop the
es_extendedfolder from this download in its place - 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.