This page takes you from an empty FXServer to a character standing in the world. It assumes you already have a working FiveM server with txAdmin or a plain server.cfg, and that you have met the Requirements.
1. Download EndCore
Get the latest release from the download page or from the EndCore GitHub organisation. Extract the archive somewhere temporary.
2. Lay out the resources
Copy the [encore] folder into your server's resources folder. The square brackets make it a category folder, so FXServer can start everything inside it with one line.
resources/
oxmysql/
[encore]/
en-core/
en-ui/
en-admin/
en-clothing/
en-consumables/
en-crafting/
en-doorlock/
en-garages/
en-hud/
en-inventory/
en-loading/
en-minigames/
en-multicharacter/
en-party/
en-properties/
en-quests/
en-radialmenu/
en-respawn/
en-shops/
en-skills/
en-target/
en-vehiclekeys/
en-weathersync/
en-zombies/Don't rename the folders. Resource names such as en-core and en-inventory are part of the API; other resources look them up by name.
Remove any other framework, inventory or target resource from your server first (qb-core, es_extended, ox_inventory and similar). Running the real qb-core, qbx_core or es_extended switches EndCore's compatibility bridge for it off.
3. Install oxmysql
Download a current oxmysql release and place it in resources/oxmysql. EndCore needs nothing else from it.
4. Create the database
Create an empty database (for example endcore) and a user with permission to create and alter tables in it. You do not need to import encore.sql.
On boot, en-core creates and migrates its tables (players, encore_groups, encore_group_members, encore_content). The other resources create their own when they start, such as encore_inventories, encore_vehicles and encore_bases. See Database.
5. Edit server.cfg
Add the connection string, then ensure resources in this order: oxmysql, then en-ui, then en-core, then the rest of the category.
# Database (use your own user, password and database name)
set mysql_connection_string "mysql://endcore_user:CHANGE_ME@localhost/endcore?charset=utf8mb4"
sv_licenseKey "<your-license-key>"
sv_enforceGameBuild 3095
set onesync on
# Default Cfx resources
ensure chat
ensure mapmanager
ensure spawnmanager
ensure sessionmanager
ensure hardcap
# Must start before en-core
ensure oxmysql
# EndCore: en-ui first, then en-core, then everything else in the category
ensure en-ui
ensure en-core
ensure [encore]
# Admin permissions
add_ace group.admin command allow
add_ace group.admin command.quit deny
add_ace group.admin encore.whitelist allow
add_ace group.admin encore.bypassclosed allow
add_principal identifier.fivem:<your-fivem-id> group.adminensure [encore] starts every resource in the folder. en-ui and en-core are already running by then, and each gameplay resource declares its own dependencies, so FXServer starts them in a safe order.
If you use txAdmin, OneSync and the license key are usually set by txAdmin, so leave those two lines out.
6. Grant yourself admin
EndCore's admin commands are restricted to the group.admin principal, and the admin panel checks the command.admin ACE that comes with it. The last line of the block above puts your account in that group.
Replace <your-fivem-id> with your own identifier. You can use any identifier type FXServer knows, for example:
add_principal identifier.fivem:1234567 group.admin
add_principal identifier.license:0123456789abcdef0123456789abcdef01234567 group.adminTwo extra ACEs are included above:
| ACE | What it allows |
|---|---|
encore.whitelist | Connecting while whitelist = true in en-core/config/server.lua. |
encore.bypassclosed | Connecting while closedServer = true, handy while you build. |
7. Start the server
Start or restart the server and watch the console. A healthy boot shows en-core loading without database errors and a line for each active compatibility bridge, such as [EndCore] qb-core compatibility bridge active.
8. First join
- Connect. The EndCore loading screen (en-loading) stays up until character selection is ready.
- Character selection opens (en-multicharacter). Each license gets 3 character slots by default.
- Choose to create a survivor and enter a first name, last name, date of birth, gender and nationality.
- The character creator opens (en-clothing). Set up the face and hair; the new survivor starts wearing a T-shirt, jeans and sneakers.
- You spawn at Burton Checkpoint, a safe zone where no zombies spawn, with the starter kit: 2 water, 3 bread, a radio, $500 cash and $1,000 in the bank.
Now check that everything is wired up:
- Press TAB to open the inventory. The cash should be there as an item.
- Type
/charinfo meto see your character, group, money and survival stats. - Press F10 to open the admin panel. If it doesn't open, your principal line is wrong.
- Walk out of the checkpoint. Zombies spawn 65 to 115 m away from you, out of sight.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
Database setup failed: ... in the console | oxmysql can't connect, or the user can't create tables | Check mysql_connection_string: host, user, password and database name. Make sure oxmysql starts before en-core. The core does not work until this succeeds. |
en-core refuses to start with a dependency error | Old artifact, OneSync off, or oxmysql/en-ui not started | Update the artifact to 7290 or newer, enable OneSync, and ensure oxmysql and en-ui before en-core. |
| Loading screen never closes | en-multicharacter isn't running | en-multicharacter shuts the loading screen down. If you replaced it, your selector must call ShutdownLoadingScreen() and ShutdownLoadingScreenNui(). |
en-ui is not running; interface calls will do nothing | en-ui failed or was not ensured | Ensure en-ui before en-core. |
Item "cash" is not defined in en-inventory; cash stays a database balance | en-inventory's item list lacks cash | Restore cash in en-inventory/data/items.lua, or set money.cashItem = false to keep cash as a balance on purpose. |
| Starter items never arrive | en-inventory wasn't running at login | The kit is held back and given on a later login once en-inventory is running. |
| "You are not whitelisted" or "The server is currently closed" | whitelist or closedServer is on | Grant encore.whitelist or encore.bypassclosed, or turn the option off in en-core/config/server.lua. |
| Admin commands say you don't have permission | Principal not applied | Check the add_principal identifier matches the account you joined with, then restart. |
qb-core is running; skipping its compatibility bridge | The real qb-core is installed | Remove it if you want EndCore to answer QB exports. |
| Zombies never spawn | Standing in or near a safe zone, or the director is off | Move more than 40 m outside safe zones. Run /zombies stats and /zombies director on. |
Still stuck? See Getting help.
Next steps
- Configuration: where every setting lives.
- Building a zombie server: turn the defaults into your own survival loop.