Anpassung
Fast alles an einer Quest — wer sie vergibt, was gesprochen wird, was als Nächstes passiert — wird direkt im Editor erstellt und in deiner Datenbank gespeichert. Die Dateien dienen lediglich den wenigen Dingen, die für jede Quest identisch sind.
Welche Datei was bestimmt
Abschnitt betitelt „Welche Datei was bestimmt“| Datei | Was sie bestimmt | Offen? |
|---|---|---|
config.lua | Framework, Sprache, wie Spieler mit NPCs interagieren, Dialogfarbe, /cancelquest, Screenshots | Ja |
bridge/bridge_server.lua | Geld, Items, Spielerdaten, Callbacks und die Berechtigungsprüfung | Ja |
bridge/bridge_client.lua | Benachrichtigungen, Hilfetexte, Spielerdaten und wie ein Spieler wiederbelebt wird | Ja |
locales/*.lua | Alle Texte: Editor, Dialogfenster, Benachrichtigungen, Webhook-Logs | Ja |
install.sql | Die acht Tabellen, einmalig importiert | Ja |
web/ | Editor, Dialogfenster, Minispiel und Fortschrittsbalken (HTML, CSS, JS) | Lesbar |
client/, server/ | Die Quest-Engine | Verschlüsselt (Escrow) |
client/game_data/*.lua | Die Listen hinter den Auswahlmenüs: Peds, Fahrzeuge, Bones, Animationen, Partikel, Sounds, Effekte | Verschlüsselt (Escrow) |
config.lua
Abschnitt betitelt „config.lua“Allgemein
Abschnitt betitelt „Allgemein“| Option | Was sie macht | Standard |
|---|---|---|
Config.Framework | Welches Framework angesprochen wird: 'esx' oder 'qbcore'. Wird nicht automatisch erkannt. Nutze bei QBox 'qbcore' (Kompatibilitätsschicht) | 'esx' |
Config.Locale | Sprache des Editors, des Dialogfensters und der Benachrichtigungen. Siehe Sprachen | 'en' |
Config.Debug | In der Datei vorhanden; in dieser Version werden damit keine zusätzlichen Ausgaben erzeugt | true |
Gespräche mit Questgebern
Abschnitt betitelt „Gespräche mit Questgebern“| Option | Was sie macht | Standard |
|---|---|---|
Config.InteractionType | 'ox_target', 'qb-target' oder 'drawtext' (3D-Text und Taste) | 'ox_target' |
Config.InteractionDistance | Maximaler Abstand in Metern, um mit einem NPC sprechen zu können | 2.5 |
Config.InteractionKey | Steuerungstaste für 'drawtext' und den Node Interact in Area. 38 entspricht E | 38 |
Config.ThemeColor | Akzentfarbe des Dialogfensters: blue, pink, yellow, red, green, purple, orange, cyan, white oder black | "purple" |
Quests abbrechen
Abschnitt betitelt „Quests abbrechen“| Option | Was sie macht | Standard |
|---|---|---|
Config.EnableCancelQuest | Registriert einen Chat-Befehl, mit dem Spieler ihre aktive Quest abbrechen können | true |
Config.CancelQuestCommand | Name des Befehls ohne Slash | "cancelquest" |
Das Abbrechen löscht den gespeicherten Fortschritt des Spielers in dieser Quest und entfernt alle dafür gespawnten Einheiten.
Screenshots
Abschnitt betitelt „Screenshots“| Option | Was sie macht | Standard |
|---|---|---|
Config.ScreenshotBasic | Erlaubt dem Send Webhook-Node Screenshots anzuhängen, wenn das Kontrollkästchen aktiv ist. Benötigt screenshot-basic | true |
Befehle und Berechtigungen
Abschnitt betitelt „Befehle und Berechtigungen“| Befehl | Wer ihn nutzen darf | Was er bewirkt |
|---|---|---|
/questcreator | Jeder mit der ACE-Permission mic_questcreator.open | Öffnet den Quest & Event Creator |
/cancelquest | Jeder Spieler, solange Config.EnableCancelQuest aktiv | Bricht die aktive Quest ab. Umbenennbar über Config.CancelQuestCommand |
Dieselbe Berechtigung sichert auch alle Aktionen ab, die der Editor speichert, löscht, importiert und exportiert — die Prüfung erfolgt serverseitig. Vergib sie per add_ace-Zeile an einen Identifier oder eine Gruppe. Die eigentliche Prüfung liegt in Bridge.Server.IsPlayerAllowed in bridge/bridge_server.lua, falls du sie an dein eigenes Admin-System anbinden möchtest.
Sprachen
Abschnitt betitelt „Sprachen“Dreizehn Sprachdateien liegen in locales/: en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar, nl und cs. Setze Config.Locale auf den Dateinamen ohne .lua.
Neue Sprache hinzufügen:
- Kopiere
locales/en.luaund benenne die Datei nach deinem Sprachcode, z. B.locales/pl.lua. - Ändere darin den Tabellennamen von
'en'zu deinem Code und übersetze den Text auf der rechten Seite. Ändere weder die linken Schlüssel noch enthaltene%s. - Trage die Datei in
fxmanifest.luauntershared_scriptsbei den anderen Sprachdateien oberhalb vonconfig.luaein. - Setze
Config.Localeauf deinen Code, führerefreshaus und starte neu.
Fehlt ein Schlüssel in deiner Datei, meldet das Spiel Translation [xx][key] does not exist — so siehst du genau, welche Zeile ergänzt werden muss.
NPC-Texte, Quest-Titel und individuelle Benachrichtigungen liegen nicht in den Sprachdateien — du gibst sie direkt im Editor in deiner Wunschsprache ein.
Die Bridge
Abschnitt betitelt „Die Bridge“Zwei offene Dateien verbinden die Quest-Engine mit dem restlichen Server.
bridge/bridge_server.lua
| Funktion | Verwendungszweck |
|---|---|
Bridge.Server.Initialize | Bindet fmLib und das ESX- bzw. QBCore-Objekt beim Start ein |
Bridge.Server.RegisterServerCallback | Registriert Callbacks über ESX oder QBCore |
Bridge.Server.GetPlayer, GetPlayerParams | Spieler via fmLib sowie Identifier, Name und Job |
Bridge.Server.GetMoney, AddMoney, RemoveMoney | Geldverwaltung via fmLib |
Bridge.Server.GetItem, AddItem, RemoveItem | Items via fmLib (für jedes von fmLib unterstützte Inventar) |
Bridge.Server.IsPlayerAllowed | Zugriff auf den Editor. Prüft die ACE-Permission mic_questcreator.open |
bridge/bridge_client.lua
| Funktion | Verwendungszweck |
|---|---|
Bridge.Client.ShowNotification | Jede Benachrichtigung. Passe den Inhalt an, um ein eigenes Benachrichtigungssystem zu nutzen |
Bridge.Client.ShowHelpNotification | Der Hilfetext oben links |
Bridge.Client.GetPlayerData, IsPlayerLoaded | Spielerdaten, genutzt für die Prüfungen Has Job und Is Night/Day |
Bridge.Client.TriggerServerCallback | Callbacks über ESX oder QBCore |
Bridge.Client.RevivePlayer | Vom Todes-Handler genutzt. Löst esx_ambulancejob:revive bei ESX bzw. hospital:client:Revive bei QBCore aus, danach natives Wiederbeleben bei Bedarf |
Anderes Mediziner-/Ambulance-Skript? Ändere das Event in Bridge.Client.RevivePlayer. Anderes Benachrichtigungssystem? Ändere Bridge.Client.ShowNotification. Behalte die Funktionsnamen bei — die Engine ruft sie namentlich auf.
Exports
Abschnitt betitelt „Exports“Zwei Client-Exports erlauben es anderen Ressourcen, das Minispiel und den Fortschrittsbalken des Quest Creators mitzunutzen.
| Export | Argumente | Was er bewirkt |
|---|---|---|
StartMinigame | difficulty (1–5), speed (1–5), rounds, callback | Öffnet das Lockpick-Minispiel. Der Callback empfängt true oder false |
StartProgressBar | duration in Millisekunden, label | Zeigt den integrierten Fortschrittsbalken an |
Aufrufbar auf mic_questcreator aus jedem Client-Skript.
Community-Events und Exportieren
Abschnitt betitelt „Community-Events und Exportieren“Community Events im Editor listet Events auf, die andere Serverbetreiber geteilt haben; der Import fügt sie deinen Events hinzu. Die Liste wird von GitHub bezogen; dein Server benötigt ausgehenden Internetzugriff.
Export Event verlangt Name, Beschreibung und Autor und speichert das Event als JSON-Datei im Ordner exports/ innerhalb der Ressource. Dieser Ordner ist im Auslieferungszustand nicht vorhanden — erstelle vorab einen leeren Ordner exports in mic_questcreator, da die Datei sonst als export_<name>.json im Hauptverzeichnis landet.