In diesem Tutorial möchte ich euch erklären, wie eine Ressource in FiveM aufgebaut ist und was ihr beim neu erstellen von einer beachten solltet.
Alle Ressourcen die auf eurem Server eingebunden sind findet ihr auf eurem Server im Ordner resources.
Der Inhalt dieses Ordners sollte ungefähr so aussehen:
Wie ihr seht gibt es hier zwei verschiedene Arten von Ordnern. Alle Ordnern ohne eckige Klammern sind Ressourcen. Alle Ordner mit eckigen Klammern sind Unterordner in die ihr weitere Ressourcen speichern könnt. Ihr könnt so viele Unterordner erstellen wie ihr möchtet. Auch Unterordner im Unterordner sind möglich. Nutzt dieses um zum Beispiel Fahrzeugmods von euren Gamemode zu trennen.
Der Aufbau einer Ressource ist recht einfach. Prinzipiell besteht diese immer aus einem Ordner indem sich eine __resource.lua [Beachtet unbedingt die 2 Unterstriche vor resource.lua!] befindet. Neben dieser befinden sich weiter Files mit denen eure Ressource Arbeiten soll. Im einfachsten Falle sind dies einfach nur Lua-Files. Aber auch Bilder, Fonts oder DLL´s sind möglich (Theoretisch ist hier jeder Dateityp möglich). Zusätzlich habt ihr auch die Möglichkeit Unterordner anzulegen.
Innerhalb der __resource.lua Habt ihr nun eine Vielzahl von Möglichkeiten.
resource_manifest_version
Der erste Schritt ist es die FiveM-Version festzulegen für die ihr eure Ressource entwickelt habt.
Die macht ihr einfach mit resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937'. Die aktuelle Version findet ihr in der Fivem Dokumentation.
client_script
Mit diesem Wert bindet ihr alle clientseitigen Scripte ein. Bei diesen kann es sich um Lua, .NET oder JavaScript Code handeln.
Wie im Codeausschnitt gezeigt könnt ihr auch auf Scripte in Unterordnern verweisen.
client_script 'script1.lua
client_script 'script2.lua'
client_script 'javascript/script3.js'
Wenn ihr mehrere Clientscripts einbindet empfiehlt es sich dies mit dem Parameter client_script zu tun. So haltet ihr ein wenig mehr Ordnung in eurer Manifest.
server_script
Die Serverscripte können wie die Clientscripte eingebunden werden.
Auch hier ist es wieder möglich mehrere Files innerhalb eines Parameters einzubinden.
export
Mit export ist es euch möglich Lua-Funktionen aus dieser Ressource zu exportieren um diese einer anderen Ressource zur Verfügung zu stellen.
In eurem Lua-File erstellt ihr dann diese Funktionen und exportiert diese einfach wie folgt.
local lastKing
function setKing(name)
lastKing = name
end
function getKing()
return lastKing
end
exports.myresource:setKing(50)
exports.myresource:getKing(50)
Alles anzeigen
server_export
Siehe Clientexport.
ui_page
In FiveM habt ihr die Möglichkeit in jeder Ressource eine ui_page zu Deaklarieren. Eine Nui-Page ist im prinzip eine Html-Webseite, welche ihr für Ui-Dinge wie ein Loginscreen nutzen könnt. Innerhalb dieser stehen euch alle HTML5 und Javascript Module zur Verfügung. Die NuiPages innerhalb von FiveM bauen auf Chromium auf. Beachtet das eure UI-Page auch in den files eingebunden ist!
replace_level_meta
Mithilfe hiervon könnt ihr die Standart level_meta mit eurer eigenen überschreiben.
data_file
Mithilfe von data_file habt ihr die Möglichkeit zusätzliche Files in das Spiel einzubinden.
Alle Files müssen zunächst wie folgt eingebunden werden:
Anschließend habt ihr die Möglichkeit diese dem Gamecontent hinzuzufügen:
this_is_a_map
Mit diesem Parameter könnt ihr Kennzeichen das sich Mapfiles innerhalb eures Scripts befinden und der Map-Speicher von GTAV neu geladen werden sol. Dabei ist es egal was ihr in das Feld hinter dem parameter schreibt.
server_only
Wenn ihr diesen Wert hinzufügt, ist es Clients nicht mehr gestattet etwas von dieser Ressource herunterzuladen. Nützlich ist dies wenn ihr zum beispiel ein File einbindet was der Server benötigt aber der Client auf keinem Fall haben soll, wie eine Bannliste {Also wenn ihr die in einer Datei Abspeichern wollt}. Auch hier ist der zweiter Parameter frei wählbar.
loadscreen
Mithilfe von diesem Parameter könnt ihr den Standard Loadscreen von FiveM überschreiben. Bei diesem muss es sich um ein HTML-File handeln.
file
Mit diesem Parameter könnt ihr Files einbinden die ein Client downloaded wenn er den Server betritt. Diese stehen dann jedem Script clientseitig zur Verfügung.
Mehrere Files können Analog wie clientscripte eingebunden werden.
dependency
Dependency´s sind Files die vor allen anderen heruntergeladen werden. Sollten also Abhängigkeiten zwischen Scripten bestehen kann euch dies helfen.
Mehrere Dependency´s lassen sich elegant mit dependencies einbinden:
disable_lazy_natives
Standardmäßig ist das träge Laden bei Lua-Scripten in FiveM aktiviert, da dies nach Angaben der FiveM Entwickler die RAM-Auslastung verbessert. Ich habe es nie Ausprobiert aber ihr könnt es ja mal gerne selber testen. Wieder steht es euch Frei was ihr als Parameter übergebt.
Das Video zum Tutorial:Ich hoffe euch hat diese kleine Einführung gefallen. Solltet ihr noch Fragen haben oder Fehler finden teilt mir dies bitte mit.