Everything below, without the walkthrough. Scroll past it if this is your first time.
No Dispersia script ships a config file. Every option for every script you own is changed here, in game, and applies to the whole server the moment you press Save.
Anyone with the ACE dispersia.admin — or command, which a stock txAdmin
server already gives its admin group. If /dispersia_hub does nothing, add this to
server.cfg:
add_ace group.admin dispersia.admin allow
The check runs on the server for every open and every save. A modified client cannot open the menu or write a value.
| Config files | Dispersia Hub | |
|---|---|---|
| Change a setting | Edit Lua, restart | Click, Save |
| See the result before saving | — | Live preview |
| Wrong value types or ranges | Script errors at runtime | Rejected on save |
| Who changed what, and when | — | Change log |
| Staff list for every script | One per script | One, shared |
| Missing dependencies | Read the console | Install check per script |
| New versions | Check by hand | Update badges |
| Scripts | Every installed Dispersia script, with its version, status, install check and live preview. Scripts you do not own yet show as More from Dispersia. |
| Configuration | Settings grouped by topic. Changes are staged until you press Save; Discard drops them, Reset to default works per group or per script. |
| Access | The staff list shared by every script — framework groups and individual players by license. |
| Logs | Every change with who made it, plus errors scripts reported this session. |
| Updates | Installed and latest version of the hub and every script. |
| Support | The exact versions to paste into a ticket. |
The things that actually go wrong, and what each one means.
access denied -- needs ACE "dispersia.admin", your account
has neither dispersia.admin nor command. Add
add_ace group.admin dispersia.admin allow to server.cfg and make sure you
are in that group, for example add_principal identifier.license:xxxx group.admin.
Restart the server.
ensure in server.cfg and the console.config.lua. Download the current
one from Granted Assets.dispersia_lib/data/ to dispersia_lib/open/data/.
Stop the server, copy your old *.json files into open/data/, start it again.
myLogo.png into dispersia_lib/open/data/ — it is picked up
automatically. Or click the logo badge in the hub and enter a path: a file next to
server.cfg, a full path, or @resource/path.
dispersia_lib has to stay exactly that — no version suffix, no copy
marker. Also confirm the folder sits inside resources.
[dispersia_lib] or [Dispersia Hub]. Send a screenshot of the full line,
not a crop, and the versions from the hub’s Support page.
Still stuck?Open a ticket in Discord. Include your framework, the console error, and what you already tried.
OPEN A TICKETFor server owners there is nothing to call — open the hub and configure. This part is for developers who read settings or framework data from their own code.
Open the hub in game. It is also listed in Settings → Key Bindings → FiveM as Open Dispersia Hub, unbound by default.
/dispersia_hub
| exports['dispersia_lib']:GetSettings(scriptId) | Every effective value for that script — saved where the admin changed it, the default everywhere else. |
| exports['dispersia_lib']:GetSetting(scriptId, key) | One effective value. |
| exports['dispersia_lib']:IsStaff(src) | true if the player is in the hub’s staff list — a framework group or a license from the Access tab — or has the hub ACE. |
| exports['dispersia_lib']:GetFramework() | 'qbox', 'qbcore', 'esx' or 'none'. QBox wins when both qbx_core and its qb-core compatibility layer are running. |
| exports['dispersia_lib']:IsFrameworkReady() | true once a framework has been detected. |
| exports['dispersia_lib']:GetFrameworkObject() | The framework’s core object, or nil on standalone. |
| exports['dispersia_lib']:GetPlayerData(src?) | Player data from whichever framework runs. src on the server side only. |
| exports['dispersia_lib']:IsPlayerLoaded(src?) | Whether the character is fully loaded. |
| exports['dispersia_lib']:Notify(src?, message, type?) | A notification through the framework’s own system. src on the server side only. |
| dispersia_lib:server:settingChanged | Server. scriptId, key, value — fired after a save, so a script applies the change live. |
| dispersia_lib:client:settingChanged | Client. Same arguments, on every player. |
| dispersia_lib:server:accessChanged | Server. The staff list was saved. |
| dispersia_lib:scriptRegistered | Server. scriptId — a script registered or re-registered. |
| settings.json | Saved values, only those that differ from a default. Ships as {}. |
| access.json | The staff list from the Access tab. |
| audit.json | Change history, the newest 300 entries. |
| seen.json | Which admin already saw which NEW badge. |
| hub.json | The server logo path set from the hub. |
| corrupt file | The hub starts from defaults for that part, says so in the console, and leaves the file untouched for you to inspect. |
| /dispersia_hub | Opens the hub. Gated by ACE dispersia.admin or command, re-checked on the server for every request. |
| Text values | Up to 4000 characters, or less if the script sets its own limit. |
| Errors in Logs | The newest 100 from this session. |
| Cost while closed | Nothing renders and no timers run. One client thread checks for Esc only while the hub is open. |