Von 0 Ahnung zum FiveM Script Profi.
Dieser Guide ist ein kompletter Lernpfad. Du lernst zuerst, wie ein Script denkt, baust dann einfache Interaktionen und endest mit einem strukturierten Profi-System, das du auf einem Server einsetzen kannst.
1. Verstehen
Single, Thread, Blöcke, Variablen, Bedingungen und die Denkweise hinter guten Scripts.
2. Bauen
Marker, Tasten, Fahrzeuge, Menüs, Geld, Items, Jobs, Funktionen und NUI-Interfaces.
3. Veröffentlichen
Debugging, Performance, Fehlerfälle, Anti-Spam, Testserver und Release-Checkliste.
Wie ein Developer denken
Ein gutes Script ist kein Stapel zufälliger Blöcke. Es ist ein Ablauf mit Regeln. Bevor du baust, beantwortest du vier Fragen.
| Frage | Beispiel | Warum wichtig? |
|---|---|---|
| Wann passiert es? | Beim Start, beim Marker, bei Taste E, nach einem Timer | Verhindert doppelte Aktionen und Chaos. |
| Wer darf es nutzen? | Alle, nur Mechaniker, nur Polizei, nur Besitzer | Macht dein Script sicher und logisch. |
| Was passiert bei Erfolg? | Auto spawnt, Geld wird abgezogen, Menü öffnet | Der Spieler versteht den Ablauf. |
| Was passiert bei Fehler? | Zu wenig Geld, falscher Job, kein Item, zu weit weg | Dein Script wirkt professionell statt kaputt. |
Den LP-DevTool Builder richtig benutzen
Der Builder nimmt dir Lua-Syntax ab. Deine Aufgabe ist, die Blöcke logisch zu platzieren und klare Werte einzutragen.
- Projekt erstellen: Nutze einen klaren Namen wie
garage_systemstatttest123. - Framework wählen: Stelle ESX oder QBCore so ein, wie dein Server es nutzt.
- Bereich wählen: Einmalige Dinge in
Single, dauerhafte Prüfungen inThread. - Block einsetzen: Füge nur eine neue Funktion pro Testschritt hinzu.
- Generieren: Lade das Script auf deinen Testserver und prüfe die Konsole.
Single vs. Thread
Das ist die wichtigste Grundlage. Wenn du Single und Thread verstehst, verstehst du 70 Prozent aller Builder-Probleme.
Single
Läuft einmal beim Start. Ideal für feste Dinge.
- Blips erstellen
- NPCs spawnen
- Startvariablen setzen
- Eigene Funktionen definieren
Thread
Läuft dauerhaft. Ideal für Interaktionen.
- Marker zeichnen
- Distanz prüfen
- Tasten abfragen
- Hilfetexte anzeigen
Block-Konfiguration meistern
Viele Fehler entstehen nicht durch den Builder, sondern durch falsche Werte. Modelnamen, Itemnamen, Jobnamen und Koordinaten müssen exakt passen.
| Wert | Gut | Schlecht |
|---|---|---|
| Variablen | garageOpen, playerInZone |
x, test |
| Fahrzeuge | sultan, adder |
Sportauto |
| Items | repairkit exakt wie in der Datenbank |
Repair Kit, wenn es so nicht heißt |
| Texte | Drücke E, um die Garage zu öffnen. |
ok |
- Teste jeden neuen Block einzeln.
- Benutze klare Namen.
- Kopiere Koordinaten sauber aus dem Spiel.
- Prüfe Item- und Jobnamen in deiner Server-Konfiguration.
Variablen: Das Gedächtnis deines Scripts
Variablen speichern Zustände. Ohne Variablen weiß dein Script nicht, ob ein Menü offen ist, ob ein Spieler bezahlt hat oder ob eine Aktion gerade läuft.
Boolean
true oder false. Perfekt für offen/geschlossen oder
aktiv/inaktiv.
Zahl
Preise, Timer, Mengen, Distanzen und Zähler.
Text
Fahrzeugmodelle, Itemnamen, Jobnamen oder Labels.
Standard System-Variablen
Der LP-DevTool Builder stellt dir einige Variablen automatisch zur Verfügung, die du jederzeit abfragen kannst:
| Variable | Inhalt | Typ |
|---|---|---|
player_pos |
Die aktuelle X, Y, Z Position des Spielers. | Vector3 |
player_job |
Der aktuelle Job-Name (z.B. "police", "unemployed"). | Text (Framework) |
is_in_vehicle |
Ob der Spieler gerade in einem Fahrzeug sitzt. | Boolean (Ja/Nein) |
player_health |
Die aktuellen Lebenspunkte des Spielers. | Zahl (Framework) |
player_hunger |
Das aktuelle Hunger-Level (0-100). | Zahl (Framework) |
player_thirst |
Das aktuelle Durst-Level (0-100). | Zahl (Framework) |
If/Else: Entscheidungen treffen
Fast jedes gute Script besteht aus Bedingungen. Der Builder nimmt dir Syntax ab, aber du musst entscheiden, welche Bedingung sinnvoll ist.
| Operator | Bedeutung | Beispiel |
|---|---|---|
== |
ist gleich | Job ist police |
~= |
ist nicht gleich | Spieler ist nicht im Auto |
> |
größer als | Geld ist mehr als 500 |
< |
kleiner als | Distanz ist unter 2.0 |
Schleifen ohne Lag bauen
Schleifen wiederholen Dinge. Das ist mächtig, aber gefährlich, wenn du kein Warten
einbaust.
- Schleifen nur nutzen, wenn du Wiederholung brauchst.
- Schleifen mit einer Variable beenden.
- Wait höher setzen, wenn keine direkte Spielerinteraktion nötig ist.
Dein erstes Script: Fahrzeug per Marker spawnen
Ziel: Ein Spieler läuft zu einem Marker, sieht einen Hinweis, drückt E und bekommt ein Fahrzeug.
- Erstelle ein neues Script namens
simple_car_marker. - Ziehe
Marker Schablonein den Thread-Bereich. - Trage Koordinaten ein, an denen der Marker erscheinen soll.
- Ziehe
Hilfe-Textin den Marker und schreibe:Drücke E, um ein Auto zu spawnen. - Ziehe
Taste gedrücktin den Marker und stelle TasteEein. - Ziehe
Auto Spawnenin die Taste und nutzesultan. - Generiere das Script, starte die Resource und teste genau diesen Ablauf.
Vom Marker zum echten System
Ein Profi-Script hat Regeln: Wer darf es nutzen? Was kostet es? Was passiert, wenn etwas fehlt?
- Zugang: Prüfe zuerst den Job, z.B. nur
mechanic. - Kosten: Ziehe Geld ab, bevor die Aktion startet.
- Feedback: Zeige klare Nachrichten bei Erfolg und Fehler.
- Cooldown: Nutze eine Variable, damit Spieler nicht spammen.
Eigene Funktionen: Nicht wiederholen
Wenn du denselben Ablauf mehr als einmal brauchst, baue ihn als Funktion. Das macht dein Script kürzer und wartbarer.
- Ziehe
Eigene Funktionin den Single-Bereich. - Nenne sie klar, z.B.
OpenGarageMenuoderRewardPlayer. - Packe wiederverwendbare Blöcke hinein.
- Nutze im Thread nur noch
Funktion aufrufen.
ESX & QBCore richtig einsetzen
Framework-Blöcke machen aus kleinen Aktionen echte Server-Systeme. Damit nutzt du Jobs, Geld, Items und Menüs.
Jobs
Polizei-, Mechaniker-, Medic- oder Fraktionssysteme.
Geld
Shops, Garagengebühren, Reparaturkosten oder Belohnungen.
Items
Schlüssel, Lizenzen, Repairkits oder Quest-Gegenstände.
NUI: Menüs und Web-Interfaces
NUI nutzt du für eigene Interfaces: Shops, Tablets, Admin-Panels, HUDs oder Auswahllisten.
- Baue zuerst den Lua-Auslöser: Marker, Taste oder Command.
- Erstelle im NUI Builder einen Container als Hauptfenster.
- Füge Texte, Buttons, Bilder oder Inputs hinzu.
- Verbinde Buttons mit Lua-Callbacks.
- Teste zuerst Öffnen und Schließen, danach erst komplexe Aktionen.
Debugging: Fehler schnell finden
Profi sein heißt nicht, keine Fehler zu machen. Profi sein heißt, Fehler schnell zu finden.
| Problem | Wahrscheinliche Ursache | Prüfung |
|---|---|---|
| Marker erscheint nicht | Falsche Koordinaten oder Block nicht im Thread | Koordinaten und Bereich prüfen |
| Taste reagiert nicht | Tastenblock nicht im Marker oder falsche Taste | Hilfe-Text daneben setzen |
| Item/Geld geht nicht | Falscher Framework-Modus oder Itemname | ESX/QBCore und Datenbanknamen prüfen |
| Script laggt | Thread ohne sinnvollen Wait | Warten-Block und Distanzlogik prüfen |
- Teste immer auf einem Testserver.
- Lies Client- und Server-Konsole nach dem Start.
- Wenn etwas kaputt ist, entferne die letzte Änderung und teste erneut.
- Baue Benachrichtigungen als Kontrollpunkte ein.
Performance: Der 0ms-Check
Jeder Thread kostet Leistung. Ein sauberer Thread arbeitet nur schnell, wenn der Spieler nah an einer Interaktion ist.
- Distanz zuerst berechnen, teure Aktionen danach.
- Marker nur zeichnen, wenn der Spieler nah genug ist.
- Keine schweren Aktionen dauerhaft pro Frame ausführen.
- Große Systeme in Funktionen aufteilen.
Release-Checkliste für Profi-Scripts
- Resource startet ohne Fehler in Server- und Client-Konsole.
- Marker, Blips und NPCs erscheinen nur einmal.
- Jede Interaktion hat Feedback bei Erfolg und Fehler.
- Jobs, Items, Geld und Framework-Auswahl passen zum Server.
- Threads haben sinnvolle Waits.
- Spieler können Aktionen nicht spammen oder doppelt auslösen.
- Du hast falschen Job, zu wenig Geld und fehlendes Item getestet.
Baue ein komplettes Profi-System
Projekt: Mechaniker-Reparaturpunkt mit Job-Prüfung, Kosten, Progressbar, Reparatur und Fehlerfeedback.
- Single: Setze
repairBusy = falseund erstelle optional einen Blip. - Thread: Baue einen Marker an der Werkstatt.
- Im Marker: Zeige
Drücke E, um dein Fahrzeug zu reparieren. - Bei Taste E: Prüfe, ob der Spieler im Fahrzeug sitzt.
- Prüfe Job
mechanicoder ob genug Geld vorhanden ist. - Setze
repairBusy = true, spiele Progressbar ab. - Repariere das Fahrzeug, ziehe Geld ab, zeige Erfolgsmeldung.
- Setze
repairBusy = falseund teste alle Fehlerfälle.
Jetzt im Builder umsetzen
Lies nicht nur passiv. Baue jedes Kapitel einmal nach, ändere Werte und beobachte, was passiert.
Zum Builder wechseln