Alles wat op een FiveM-server “iets doet” (het framework, jobs, auto's, kaarten, de HUD) is een resource. We laten zien hoe je een script goed uploadt, in de juiste volgorde inschakelt en wat je doet als het niet start.
Wat je nodig hebt
- Een FiveM-server bij StormHost (of je eigen FiveM-server)
- Een script (resource) dat je van een betrouwbare bron hebt gedownload
- Een programma om archieven uit te pakken op je computer (in Windows ingebouwd, of 7-Zip)
- Ongeveer 20 minuten
Wat een resource is#
Een resource is een map met scripts en bestanden die de server kan starten, stoppen en herstarten. De server herkent de map alleen als er een bestand fxmanifest.lua in staat (bij heel oude scripts __resource.lua).
- De mapnaam is de naam van de resource. De map
ox_lib= de resourceox_lib. Deze naam gebruik je bijensure. - In de map staan meestal scripts voor de server (
server/), voor spelers (client/), gedeelde scripts (shared/), de configuratie (config.lua), een webinterface (html/,web/) en modellen (stream/). - Een standalone script werkt op zichzelf. Andere scripts hebben een framework (ESX, QBCore, Qbox) of een bibliotheek (
ox_lib,oxmysql) nodig. Wat een script nodig heeft, beschrijft de auteur in de handleiding (README).
De map resources en categorieën#
De server zoekt resources in de map resources naast server.cfg. Mappen tussen vierkante haken zijn categorieën: het zijn geen resources, ze zorgen alleen voor overzicht.
server.cfg
resources/
├── [standalone]/
│ ├── oxmysql/
│ │ └── fxmanifest.lua
│ └── ox_lib/
│ └── fxmanifest.lua
├── [esx]/
│ └── es_extended/
│ └── fxmanifest.lua
└── muj_skript/
└── fxmanifest.luaHier bestaan de resources oxmysql, ox_lib, es_extended en muj_skript. Een hele categorie start je met één regel: ensure [standalone]. Je kunt categorieën ook in elkaar plaatsen.
Bij een server met txAdmin staat de map resources in de deploymentmap (txAdmin stelt daarvoor txData/ voor).
Waar je scripts vandaan haalt#
- Officiële bronnen: de sectie Releases op het Cfx.re-forum (opent in een nieuw venster), Cfx Marketplace, de GitHub-pagina van de auteur (sectie Releases).
- Koop betaalde scripts alleen via Cfx Marketplace of Tebex. Elders loop je het risico op oplichting.
- Gebruik geen “leaks” (gestolen betaalde scripts). Ze bevatten vaak schadelijke code die andere resources “besmet” of vreemden toegang tot je server geeft. FiveM meldt zulke code als prohibited logic.
Een script installeren, stap voor stap#
Voorbereiding op je computer#
Download het script. Heeft het op GitHub een sectie Releases, download het archief dan daar en niet via Code › Download ZIP. Een release bevat de gebouwde webinterface, de broncode vaak niet.
Pak het archief uit.
Zoek de map waar
fxmanifest.luadirect in staat. Dat is de resource.Geef de map de naam die de auteur opgeeft. Meestal haal je het achtervoegsel van GitHub weg: hernoem
ox_lib-mainnaarox_lib.Waarom: andere scripts verwijzen op naam naar de resource.
ox_lib-mainzou voor die scripts niet bestaan.Lees de README: welke afhankelijkheden (dependencies) het script heeft, of er een
.sql-bestand bij zit en wat je inconfig.luamoet instellen.
Pas op voor een dubbele map
Na het uitpakken ontstaat vaak muj_. Alleen de binnenste map hoort op de server. Anders meldt de server dat de resource geen manifest heeft, of vindt hij de resource niet.
Uploaden naar de server#
- Open in je klantaccount Mijn diensten, klik op de server en ga naar het tabblad Bestanden.
- Open de map
resources(of een categorie, bijvoorbeeld[standalone]). - Klik op Nieuwe map en maak een map met de naam van de resource, bijvoorbeeld
muj_skript. - Open de map en upload de bestanden met de knop Uploaden. Maak de submappen (
client,server,html…) opnieuw aan met de knop Nieuwe map en upload daarin de bijbehorende bestanden.
Het tabblad Bestanden uploadt losse bestanden tot 100 MB en pakt geen archieven uit. Upload grote resources (auto's, kleding, kaarten, een heel framework) via SFTP. Support regelt de toegang voor je (contactgegevens), de werkwijze staat in de handleiding Bestandsbeheer.
Database en configuratie#
Bevat het script een
.sql-bestand, importeer het dan in de database van de server. Hoe dat met het programma HeidiSQL gaat, staat in de handleiding Database voor FiveM.Open
config.lua(ofconfig/*.lua) in de editor van het tabblad Bestanden en loop de instellingen door. Veelvoorkomende opties:Optie (voorbeeld) Wat die meestal doet Config.Framework = 'esx'Voor welk framework het script wordt ingesteld ( esx,qb,qbx). Moet overeenkomen met je server.Config.Locale = 'cs'De taal van de teksten (hier Tsjechisch), als het script die taal bevat. Config.Debug = falseDebugmeldingen. Laat dit op een live server op falsestaan.De namen van de opties verschillen per script. Wat ze precies doen, beschrijft de auteur in de commentaarregels van het bestand.
Het script inschakelen#
Voeg aan
server.cfg(bij txAdmin in de CFG Editor) deze regel toe:server.cfgcfg ensure muj_skriptensure– start de resource (en herstart hem als hij al draait).muj_skript– de mapnaam van de resource.
Zet de regel onder alle afhankelijkheden van het script (framework,
oxmysql,ox_lib). Staat het script in een categorie die je al start (ensure [standalone]), dan hoef je de regel niet toe te voegen.Herstart de server. Of start het script zonder herstart, met commando's in de console (klantaccount, of Live Console in txAdmin):
text refresh ensure muj_skriptrefresh– de server doorzoekt de mapresourcesopnieuw en vindt nieuwe resources. Zonder dit commando kent hij het nieuwe script niet.ensure muj_skript– start het script.
Scripts die spelersgegevens wijzigen of items aan de inventaris toevoegen, kun je beter starten door de hele server te herstarten, niet terwijl hij draait.
fxmanifest.lua: wat erin staat#
fx_version 'cerulean'
game 'gta5'
author 'Jan'
description 'Voorbeeldscript'
version '1.0.0'
shared_script 'config.lua'
client_scripts {
'client/*.lua'
}
server_scripts {
'@oxmysql/lib/MySQL.lua',
'server/*.lua'
}
ui_page 'html/index.html'
files {
'html/index.html',
'html/app.js'
}
dependencies {
'oxmysql',
'ox_lib'
}| Onderdeel | Wat het doet |
|---|---|
fx_version 'cerulean' | De versie van het manifestformaat. cerulean is de huidige. Zonder fx_version geeft de server een waarschuwing. |
game 'gta5' | Voor welk spel de resource is (gta5 = FiveM, rdr3 = RedM). |
author, description, version | Informatie over het script, zonder invloed op de werking. |
shared_script | Een bestand dat zowel op de server als bij de speler wordt geladen (meestal config.lua). |
client_scripts | Scripts die bij de speler draaien. De speler downloadt ze. *.lua = alle .lua-bestanden in de map. |
server_scripts | Scripts die alleen op de server draaien. De speler krijgt ze nooit te zien. @oxmysql/lib/MySQL.lua laadt een bibliotheek uit een andere resource. |
ui_page, files | De webinterface van het script (NUI) en de bestanden die de speler downloadt. |
dependencies | Resources die eerst moeten draaien. De server probeert ze zelf te starten, en als er een ontbreekt, start hij het script niet. |
Het oudere onderdeel lua54 'yes' is niet meer nodig: sinds juni 2025 draaien alle scripts in Lua 5.4.
Afhankelijkheden en laadvolgorde#
- Resources starten in de volgorde van de
ensure-regels inserver.cfg. - De gebruikelijke volgorde: de standaardresources van FiveM ›
oxmysql›ox_lib› de kern van het framework › scripts van het framework › je eigen scripts. - De regel
dependenciesin het manifest kan ook voorwaarden aan de server stellen, bijvoorbeeld'/onesync'(OneSync ingeschakeld),'/server:4500'(minimale serverbuild) of'/gameBuild:h4'(minimale game build). Als aan een voorwaarde niet is voldaan, start het script niet.
Betaalde scripts en Asset Escrow#
Betaalde scripts van Cfx Marketplace of Tebex zijn meestal beveiligd met Asset Escrow: de code is versleuteld en draait alleen op de servers van de koper.
- Het script draait alleen op een server waarvan de license key bij hetzelfde Cfx.re-account hoort als waarmee je het script hebt gekocht. Je downloadt het via de Cfx.re Portal (opent in een nieuw venster) of via de link in de e-mail van Tebex.
- Versleutelde bestanden kun je niet bewerken. De auteur laat de configuratiebestanden (
config.lua) meestal open, en die kun je wel aanpassen. - In de resource zit een
.fxap-bestand. Dat moet samen met de rest naar de server worden geüpload, anders kan het script niet worden geverifieerd.
Auto's, kleding en kaarten (gestreamde bestanden)#
Modellen en textures worden naar spelers “gestreamd”: bij het verbinden downloaden ze die van de server. Zo'n resource heeft meestal een map stream en in het manifest verwijzingen naar databestanden van het spel.
fx_version 'cerulean'
game 'gta5'
files {
'data/vehicles.meta',
'data/carvariations.meta',
'data/handling.meta'
}
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'
data_file 'HANDLING_FILE' 'data/handling.meta'| Onderdeel | Wat het doet |
|---|---|
Map stream/ | Modellen en textures (.yft, .ytd, .ydr …). Alles in deze map wordt automatisch door spelers gedownload en staat niet in het manifest. |
files { … } | Databestanden die de speler downloadt. |
data_file 'VEHICLE_METADATA_FILE' | De definitie van het voertuig (vehicles.meta): modelnaam voor het spawnen, geluid, klasse. |
data_file 'VEHICLE_VARIATION_FILE' | Kleuren en varianten van het voertuig (carvariations.meta). |
data_file 'HANDLING_FILE' | Rijeigenschappen (handling.meta). |
this_is_a_map 'yes' | De resource is een kaart of interieur (MLO). Nadat de resource is gestart, laadt het spel de kaartgegevens opnieuw. |
Praktische tips:
- Elke auto of kaart maakt de download bij de eerste verbinding groter. Tientallen auto's met textures in hoge resolutie betekenen lange laadtijden.
- Interieurs (MLO) vereisen vaak een bepaalde game build (
sv_enforceGameBuild) of een andere resource met basisgegevens. Lees de README. - Upload grote pakketten met auto's en kaarten via SFTP, de bestanden zijn vaak groter dan 100 MB.
Een script controleren voordat je het installeert#
Een script draait op de server met volledige toegang tot de gegevens, de database en de spelers. Loop voordat je het start in elk geval dit na:
- Bron: de officiële GitHub-pagina van de auteur, het Cfx.re-forum, Cfx Marketplace of Tebex. Geen willekeurige links van Discord.
- Onleesbare code in een verder open script (lange reeksen betekenisloze tekens,
load(met gedownloade tekst). Betaalde scripts zijn versleuteld met Asset Escrow, maar een gratis beschikbaar script hoort zulke code niet te bevatten. - Gegevens naar elders versturen: aanroepen van
PerformHttpRequestnaar adressen die niets met het script te maken hebben. - Nieuwe admincommando's waar de README niets over zegt.
Meldt FiveM bij een resource prohibited logic, dan bevat de resource waarschijnlijk schadelijke code die ook andere resources kan hebben besmet. Verwijder de resource en controleer je andere scripts.
Prestaties van resources#
- De server meldt in de console
server thread hitch warning: timer interval of … millisecondsals één servertick langer dan 150 ms duurde. Een enkele melding bij het opstarten is geen probleem. Regelmatige meldingen terwijl de server draait betekenen dat een script de server belast. - De veroorzaker vind je met de ingebouwde profiler: voer in de serverconsole
profiler record 500in (neemt 500 frames op), wacht even en voer danprofiler saveJSON profil.jsonin. Het bestand wordt opgeslagen in de map van waaruit de server wordt gestart. Download het op het tabblad Bestanden en open het in de ontwikkelaarstools van de browser Chrome (tabblad Performance › profiel laden). - Aan de kant van de speler toont het commando
resmonin de F8-console de belasting per resource. Het werkt alleen in de ontwikkelaarsmodus van de client (anders krijg je de meldingAccess denied for command resmon).
Commando's voor het werken met resources#
| Commando | Wat het doet |
|---|---|
refresh | Laadt de lijst met resources opnieuw uit de map. Nodig na het uploaden van een nieuw script. |
ensure <NAME> | Start een resource, of herstart hem als hij al draait. |
start <NAME> | Start een resource die niet draait. |
stop <NAME> | Stopt een resource. |
restart <NAME> | Herstart een draaiende resource. Een gestopte resource wordt niet gestart (Can't restart a stopped resource.). |
Je typt de commando's zonder schuine streep in de serverconsole. In txAdmin vind je hetzelfde in grafische vorm op de pagina Resources.
Controle#
- Na een herstart of
ensurestaat in de console de regelStarted resource muj_skript. - In txAdmin heeft de resource op de pagina Resources de status gestart.
- In het spel werkt het script en in de clientconsole (F8) staan geen rode foutmeldingen.
Als iets niet werkt#
Meldingen die je hier niet vindt, zoek je op in het overzicht Veelvoorkomende fouten van een FiveM-server.
Couldn't find resource muj_skript.#
De server kent geen resource met deze naam.
- De naam in
ensurekomt niet overeen met de mapnaam (hoofdletters en kleine letters maken verschil, let op-main). fxmanifest.luastaat niet direct in de map (dubbele map na het uitpakken).- Je hebt het script geüpload terwijl de server draaide en geen
refreshuitgevoerd. - De map staat buiten
resources, of in een andere mapresourcesdan die de server gebruikt (bij txAdmin is dat de deploymentmap).
Could not find dependency ox_lib for resource muj_skript.#
Er ontbreekt een afhankelijkheid. Installeer de resource die in de melding staat (hier ox_lib) en zet de ensure ervan boven het script. De melding Could not start dependency … betekent dat de afhankelijkheid bestaat, maar zelf niet is gestart. Zoek in de console naar de fout ervan.
Couldn't start resource muj_skript.#
De resource bestaat, maar is niet gestart. Boven deze melding staat in de console meestal de echte reden: een ontbrekende afhankelijkheid, een fout in het manifest, een voorwaarde waaraan niet is voldaan (OneSync, game build) of een licentiefout.
Waarschuwing dat de resource geen manifest heeft#
In de map ontbreekt fxmanifest.lua (of het bestand heeft een andere naam, bijvoorbeeld fxmanifest.lua.txt door Windows). Controleer de bestandsnaam en kijk of er een dubbele map is.
SCRIPT ERROR: @muj_skript/server/main.lua:25: … #
Een fout in de code van het script zelf. Na de dubbele punt staan het bestand, het regelnummer en een omschrijving. De meest voorkomende oorzaken: een verkeerde frameworkinstelling in config.lua, een ontbrekende tabel in de database (je hebt het .sql-bestand niet geïmporteerd), een incompatibele versie van het framework. Fouten bij de speler zie je in de F8-console.
You lack the required entitlement to use muj_skript#
Het betaalde script is gekocht met een ander Cfx.re-account dan het account waar de license key van de server bij hoort. Gebruik een license key van hetzelfde account, of draag het script op de Portal over aan het juiste account. Probeer ook de server te herstarten.
Failed to verify protected resource muj_skript#
De bestanden van het versleutelde script zijn beschadigd of er ontbreekt er een, meestal .fxap. Upload de hele resource opnieuw, inclusief het .fxap-bestand. Sommige SFTP-programma's dragen verborgen bestanden (die met een punt beginnen) niet over, schakel daarin de weergave van verborgen bestanden in.
Error parsing script of Failed to load script#
Het script gebruikt functies van een nieuwere serverversie. Update de artifacts (handleiding).
De interface van het script (menu, telefoon, HUD) wordt niet weergegeven#
De gebouwde webinterface ontbreekt. Download het script uit de sectie Releases in plaats van de broncode, of bouw de interface volgens de README (npm install en npm run build op je computer) en upload de map die dat oplevert.
Samenvatting
- Een resource is een map met
fxmanifest.lua, de mapnaam is de naam van de resource. Mappen[tussen haken]zijn alleen categorieën. - Download de release, pak hem uit, verwijder
-main, upload hem naarresources, importeer de SQL en stelconfig.luain. - Voeg
ensure naamtoe aanserver.cfg, onder alle afhankelijkheden. Zonder herstart:refreshenensure naamin de console. - Betaalde scripts (Asset Escrow) draaien alleen met een license key van hetzelfde Cfx.re-account en hebben het
.fxap-bestand nodig.