LUA Tutorial

Aus GRENZWIKI Dokumentation
Zur Navigation springen Zur Suche springen

Der Einstieg in die Skripterstellung für FiveM kann angesichts der breiten Palette an Möglichkeiten und der spärlich verteilten Dokumentation etwas überfordernd sein. Im deutschsprachigen Bereich gibt es leider sehr wenige Tutorials. Mit dieser Seite möchten wir dir das Skript erstellen in LUA ein wenig näher bringen.

Ressourcen | Resources

Eine Ressource ist einfach gesagt eine Sammlung von Dateien, die einzeln gestartet, gestoppt und neu gestartet werden kann.

Dein Server-Datenordner (vorausgesetzt, du hast bereits einen Server installiert) sollte bereits einen Ressourcenordner mit einigen Ressourcen enthalten.

Verzeichnisse

Du kannst dir deine Ordner mit den Ressourcen so anlegen wie du das möchtest. Ordner, die nur einen Namen haben, werden vom Server als Ressource erkannt.

Ordner, die mit eckigen Klammern [] gekennzeichnet sind, werden nicht erkannt und kann man als "Überordner - Überverzeichnis" wählen.

Überordner
Ressource

Erste eigene Ressource erstellen

Wir erstellen jetzt unsere eigene Ressource. Diese dient dazu, die Minimap automatisch auszublenden und den Spielern die Möglichkeit zu geben, die Map einzuschalten, sollten sie diese benötigen.

Dazu erstellen wir im Ordner "resources" einen Unterordner der einfach nur "showmap" heißt. Der Name der Ressource ist hierbei egal.

Manifest Dateien

Ein Ressourcenordner benötigt immer eine Manifest-Datei, um von FiveM erkannt zu werden.

Erstelle also eine Datei namens "fxmanifest.lua" (Diese ist immer Lua, auch wenn Du später Skripte in C#/JS schreibst) in deinem Ressourcen Ordner. Füge dann folgenden Text ein:

fx_version 'cerulean'
game 'gta5'

author 'Dein Nickname/Name'
description 'Kurze Erklärung, was diese Ressource macht'
version '1.0.0'

client_script 'client.lua'

Hier kann man auch noch viel mehr angeben, für unsere erste Ressource reicht das. Da die Minimap einzig und alleine beim abgefragt und behandelt wird, brauchen wir hier nur eine clientseitige LUA- Datei.

Client.lua

Alles, das beim Client (bei den Spielern am PC selbst) geschieht, muss in eine Client.lua (Name egal, hauptsache er steht dann unter "client_script" in der fxmanifest) geschrieben werden. Und das machen wir jetzt auch.

Wir erstellen eine client.lua und schreiben folgendes rein:

 1 local showmap = false --wir legen eine variable an, mit der wir später einen "Schalter haben" midem wir arbeiten können
 2 
 3 RegisterCommand( --wir legen den Befehl fest, mitdem die Spieler die Map ein und ausschalten können
 4     "map", --unser Befehl heißt hier einfach nur "map"
 5     function(source, args) --die Funktion, der "schalter" für den Befehl wird definiert (was passiert, wenn)
 6         if (showmap == true) then --wenn die spieler map eingeben und sie wird angezeigt, dann 
 7             showmap = false --schalten wir die map aus
 8         elseif (showmap == false) then --sollte sie jedoch aus sein
 9             showmap = true --zeigen wir sie wieder an 
10         end --wir beenden unser if 
11     end, -- wir beenden unsere funktion
12     false -- false heißt, dass man keine bestimmten Rechte braucht, um den Befhel auszuführen (FivemNative)
13 )
14 
15 Citizen.CreateThread( -- nun programmieren wir den schalter, aus. Also wir legen die Funktion fest
16     function()
17         while true do
18             Citizen.Wait(0)
19 
20             if (showmap == false) then --ist also showmap ausgeschalten, dann 
21                 local playerPed = GetPlayerPed(-1) --definiert den spieler am server
22                 local playerVeh = GetVehiclePedIsIn(playerPed, false) --wir definieren, ob er im Auto ist, weil da soll die minimap immer an sein
23 
24                 if (GetPedInVehicleSeat(playerVeh, -1) == playerPed) then
25                     DisplayRadar(true) --also sollte die map aus sein und er sich in ein Vehicle setzen, schalten wir die minimap automatisch ein
26                 else
27                     DisplayRadar(false) -- sonst schaltet der Spieler das Radar aus
28                 end
29             elseif (showmap == true) then -- sollte der "schalter" per Befehl auf "true " gestellt worden sein (mit F8 -> map oder im chat /map)
30                 DisplayRadar(true) --dann zeige die Map wieder an
31             end --wir beenden unsere if's und unsere funktionen
32         end
33     end
34 )

Danach können wir unsere client.lua auch schon schließen.

Ressourcen starten

So, da wir nun im Ordner "resources" einen Ordner mit "showmap" haben, in dem sich eine fxmanifest.lua und eine client.lua befindet, können wir raus gehen und schreiben in die server.cfg "ensure showmap" rein, damit diese Ressource, die wir programmiert haben, auch bei jedem Serverrestart gestartet wird.

Schlusswort

Wir freuen uns, dich als neuer Entwickler in unserer riesigen Fivem-Community begrüßen zu dürfen! Es ist ein sehr weiter und langer weg, bis du selbstständig Ressourcen erstellen kannst, aber mit viel Elan und Verständnis klappt das schon! :)