
- ESX
- QBCore
- vRP
Von Luke

FiveM-Ressourcen können CfxLua, eine modifizierte Lua 5.4-Laufzeitumgebung, für Client- und Server-Skripte verwenden. Eine aktuelle Ressource beginnt mit fxmanifest.lua, listet die Dateien auf, die jeder Kontext lädt, und behält autoritative Entscheidungen wie Berechtigungen, Geld und Inventar auf dem Server.
Die hier gezeigten Konfigurations- und Codebeispiele beziehen sich auf FiveM für GTA V Legacy. Enhanced hat andere Laufzeit- und Kompatibilitätsregeln; überprüfe die Legacy-zu-Enhanced-Änderungen von Cfx.re bevor du sie auf einen Enhanced-Server anwendest.
Das alte __resource.lua Manifest und der lua54 'yes' Switch sind für neue Arbeiten veraltet. Cfx.re gibt an, dass die Unterstützung für Lua 5.3 im Juni 2025 eingestellt wurde und aktuelle Skripte Lua 5.4 verwenden.
Erstelle in deinem server-data resources resources Verzeichnis [local]/hello_fivem. Die Klammern gruppieren Ressourcen; die Ressource selbst ist das hello_fivem Verzeichnis.
fxmanifest.lua:
fx_version 'cerulean'
game 'gta5'
author 'Your name'
description 'Small CfxLua learning resource'
version '1.0.0'
client_script 'client.lua'
server_script 'server.lua'
client.lua:
RegisterCommand('mycoords', function()
local coords = GetEntityCoords(PlayerPedId())
print(('x=%.2f y=%.2f z=%.2f'):format(coords.x, coords.y, coords.z))
end, false)
server.lua:
AddEventHandler('onResourceStart', function(resourceName)
if resourceName ~= GetCurrentResourceName() then
return
end
print(('[%s] started'):format(resourceName))
end)
Die offizielle Dokumentation zum Manifest und zum Laufzeitverhalten findest du hier: Ressourcenmanifestreferenz und CfxLua-Leitfaden.
Ein Client-Skript läuft für jeden verbundenen Spieler separat und kann spielbezogene Natives aufrufen, etwa PlayerPedId und GetEntityCoords. Ein Server-Skript koordiniert den gemeinsamen Zustand, die Persistenz und die Autorisierung. Werte, die von einem Client geliefert werden, sind Eingaben, kein Beweis.
Verwende AddEventHandler für Events, die in einem Kontext verbleiben sollen. Verwende RegisterNetEvent nur, wenn ein Event die Client/Server-Grenze überschreiten muss. Der offizielle Leitfaden zur Sicherung deiner Events erklärt, warum jede vernetzte Aktion die aktuelle serverseitige Berechtigung und den Status des Spielers validieren muss.
CfxLua-Skripte teilen sich die Ausführungszeit kooperativ. Eine Schleife, die die Ausführung nie abgibt, kann ihren Skriptkontext blockieren. Wenn eine Schleife warten muss, verwende Wait mit einer zur Aufgabe passenden Verzögerung und frage Datenbanken oder HTTP-Endpunkte nicht in jedem Frame ab. Bevorzuge Events und Zustandsänderungen gegenüber dauerhaftem Polling.
Ein Export macht eine benannte Funktion für eine andere Ressource verfügbar. Definiere sie explizit und dokumentiere ihre Argumente und Rückgabewerte:
exports('formatPlayerLabel', function(serverId, playerName)
return ('[%d] %s'):format(serverId, playerName)
end)
Eine andere Lua-Ressource kann sie so aufrufen: exports.hello_fivem:formatPlayerLabel(id, name). Verwende keinen Export, um Berechtigungs- oder Eigentumsprüfungen zu umgehen.
refresh und dann ensure hello_fivem.mycoords.Die offizielle Liste unterstützter Ressourcenbefehle findest du hier: Server-Befehlsreferenz. Fahre mit dem offiziellen ersten Lua-Skript-Tutorial fort , bevor du Framework- oder Datenbankabhängigkeiten ergänzt.





