Aufbau von Ressourcen in FiveM und funktionsweise der Manifest

    • Offizieller Beitrag

    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.

    Code: client_script
    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.

    Code: client_script
    client_script {
        'script1.lua',
        'script2.lua',
        'javascript/script3.js'
    }

    server_script

    Die Serverscripte können wie die Clientscripte eingebunden werden.

    Code: server_script
    server_script 'script1.lua
    server_script 'script2.lua'

    Auch hier ist es wieder möglich mehrere Files innerhalb eines Parameters einzubinden.

    Code: server_script
    server_script {
        'script1.lua',
        'script2.lua'
    }

    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.

    Code: exports
    exports {
        'setKing',
        'getKing'
    }

    In eurem Lua-File erstellt ihr dann diese Funktionen und exportiert diese einfach wie folgt.

    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!

    Code
    ui_page 'html/index.html'
    file 'html/index.html'

    replace_level_meta

    Mithilfe hiervon könnt ihr die Standart level_meta mit eurer eigenen überschreiben.

    Code
    replace_level_meta 'mymap'
    files {
        'mymap.meta'
    }

    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:

    Code
    files {
        'audio/mywaves/mysong.awc',
        'myvehicles.meta'
    }

    Anschließend habt ihr die Möglichkeit diese dem Gamecontent hinzuzufügen:

    Code
    data_file 'AUDIO_WAVEPACK' 'audio/mywaves'
    data_file 'VEHICLE_METADATA_FILE' 'mysong.meta'

    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.

    Code: this_is_a_map
    this_is_a_map 'masterzyper ist der beste <3'

    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.

    Code: server_only
    server_only 'masterzyper ist der beste <3' 

    loadscreen

    Mithilfe von diesem Parameter könnt ihr den Standard Loadscreen von FiveM überschreiben. Bei diesem muss es sich um ein HTML-File handeln.

    Code: loadscreen
    loadscreen 'html/loadscreen.html'
    file 'html/loadscreen.html'

    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.

    Code: file
    file 'images/zyper.png'

    Mehrere Files können Analog wie clientscripte eingebunden werden.

    Code: files
    file {
        'ui/fonts/bankgothic.ttf',
        'ui/mainpage.html',
        'ui/mainpage.css'
    }

    dependency

    Dependency´s sind Files die vor allen anderen heruntergeladen werden. Sollten also Abhängigkeiten zwischen Scripten bestehen kann euch dies helfen.

    Code: dependency
    dependency 'myresource-base'

    Mehrere Dependency´s lassen sich elegant mit dependencies einbinden:

    Code: dependencies
    dependencies {
        'myresource-base',
        'utility-resource'
    }

    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.

    Code: disable_lazy_natives
    disable_lazy_natives 'masterzyper ist der beste <3'
    Das Video zum Tutorial:


    Und hier noch ein Video von mir, welches Thematisch dazu passt:

    Ich hoffe euch hat diese kleine Einführung gefallen. Solltet ihr noch Fragen haben oder Fehler finden teilt mir dies bitte mit.

  • MasterZyper

    Hat das Thema freigeschaltet.
  • MasterZyper

    Hat den Titel des Themas von „Aufbau von Ressourcen in FiveM“ zu „Aufbau von Ressourcen in FiveM und funktionsweise der Manifest“ geändert.