FJX Studios Dokumentation

Konfiguration

Alle Einstellungen der config.lua, der Server-Config und des Creators.

Zuletzt aktualisiert: 22. August 2026

Das System hat zwei Konfigurationsdateien. Die config.lua wird an die Clients übertragen, die config_server.lua bleibt auf dem Server — Webhook-URLs gehören deshalb ausschließlich dorthin.

Allgemein

config.lua
lua
Config.Debug = false
Config.Framework = 'auto'
Config.Locale = 'de'
Config.DebugbooleanStandard: false

Ausführliche Ausgaben und die Diagnosebefehle. Im Verkaufszustand aus — die Befehle existieren dann gar nicht.

Config.FrameworkstringStandard: 'auto'

'auto' erkennt das Framework selbst. Feste Werte: 'esx', 'qbcore', 'standalone'.

Config.LocalestringStandard: 'de'

Sprachdatei aus locales/. Mitgeliefert sind de und en.

Betriebsmodus

Der wichtigste Schalter des Systems: Er entscheidet, wann der Objektschlüssel zugänglich ist.

config.lua
lua
Config.Mode = 'hybrid'

Config.BMA = {
    resource = 'fjx_bma',
    pollInterval = 1000,
}
Wert Bedeutung
strict Die Innentür gibt nur frei, wenn an der verknüpften Anlage ein Alarm läuft und die Übertragungseinrichtung eingeschaltet ist. Kein Alarm, kein Schlüssel. Benötigt das BMA-System
hybrid Läuft das BMA-System, verhält es sich wie strict. Fehlt es, greift die jobbasierte Freigabe und die Feuerwehr darf immer öffnen
standalone Reines Schlüsseldepot ohne Alarmbezug, jobbasierte Freigabe
Parameter Typ Beschreibung
BMA.resource string Ressourcenname des BMA-Systems
BMA.pollInterval number Millisekunden zwischen zwei Abfragen des Alarmzustands

Der Modus lässt sich pro Depot im Creator überschreiben. strict ohne verknüpftes Gebäude bedeutet, dass dieses Depot nie freigibt — der Creator warnt davor.

Berechtigungen

config.lua
lua
Config.CreatorGroup = 'admin'
Config.UseAcePermission = true
Config.AcePermission = 'fjx_fsd.creator'
Config.CreatorCanOperate = false
Config.UseAcePermissionbooleanStandard: true

true prüft die Ace-Permission, false die Gruppe aus Config.CreatorGroup.

Config.AcePermissionstringStandard: 'fjx_fsd.creator'

Freigabe per add_ace group.admin fjx_fsd.creator allow.

Config.CreatorCanOperatebooleanStandard: false

true erlaubt Creator-Berechtigten, Depots auch ohne Feuerwehr-Job zu bedienen. false erlaubt ihnen nur die Verwaltung: Creator, Test, Reparatur und das Zurücklegen eines fremden Schlüssels.

Jobs

config.lua
lua
Config.Jobs = {
    fire = { 'feuerwehr' },
    repair = {},
}
Parameter Typ Beschreibung
fire table Jobs, die das Depot bedienen dürfen: Außentür, Schlüssel, Freischaltelement
repair table Jobs, die ein sabotiertes oder gestörtes Depot reparieren dürfen. Leer bedeutet, dass nur Creator-Berechtigte reparieren

Türsystem

config.lua
lua
Config.DoorLock = 'auto'
Config.DoorLockstringStandard: 'auto'

'auto' erkennt der Reihe nach ox_doorlock, qb-doorlock, doors_creator und nui_doorlock. Feste Werte sind die jeweiligen Namen, 'none' deaktiviert die Türsteuerung ganz.

Das Ergebnis der Erkennung steht beim Start einmal in der Server-Konsole.

Gebäudenamen

Die Gebäude im Creator werden automatisch aus dem Türsystem gelesen. Führt das System seine Türen nur unter Kürzeln, lässt sich daraus kein sprechender Name ableiten.

config.lua
lua
Config.MergeNumberedBuildings = true

Config.BuildingNames = {
    -- ['kh']   = 'Krankenhaus',
    -- ['jva']  = 'Justizvollzugsanstalt',
    -- ['rh']   = 'Rathaus',
}
Config.MergeNumberedBuildingsbooleanStandard: true

Fasst nummerierte Varianten desselben Kürzels zu einem Gebäude zusammen: kh, kh0, kh1 und kh2 ergeben ein Gebäude kh. Auf false setzen, wenn die Nummern bei dir verschiedene Gebäude bedeuten.

In Config.BuildingNames steht links das Kürzel, wie es im Dropdown erscheint, und rechts der Anzeigename. Groß- und Kleinschreibung spielt keine Rolle.

Schlüssel und Türfreigabe

config.lua
lua
Config.KeyOut = {
    doorScope = 'radius',
    radius = 60.0,
    doorMode = 'target',
    timeoutMinutes = 0,
    offlineGraceSeconds = 180,
}
Parameter Typ Beschreibung
doorScope string radius nimmt alle Türen im Umkreis des Depots, linked nur die im Creator verknüpften
radius number Umkreis in Metern, gilt nur bei doorScope = 'radius'
doorMode string target lässt den Schlüsselträger jede Tür einzeln aufschließen, auto entriegelt bei Entnahme sofort alle
timeoutMinutes number Nach so vielen Minuten mit entnommenem Schlüssel werden die Türen wieder verriegelt und das Depot geht auf Störung. 0 deaktiviert das
offlineGraceSeconds number Verlässt der Schlüsselträger den Server, werden die Türen nach so vielen Sekunden verriegelt und das Depot geht auf Störung

Der Umkreis-Modus ist praktisch, wenn das Türsystem keine saubere Zuordnung liefert: Es muss dann nichts im Creator erfasst werden.

Freischaltelement

Ein Schlüsselschalter am Depot, der gezielt einen echten Brandalarm an der verknüpften Anlage auslöst, damit die Feuerwehr das Depot auch ohne bestehenden Alarm öffnen kann.

config.lua
lua
Config.FSE = {
    enabled = true,
    cooldown = 30,
    requiresOuterDoor = false,
}
Parameter Typ Beschreibung
enabled boolean Global an oder aus, zusätzlich pro Depot im Creator schaltbar
cooldown number Sekunden zwischen zwei Betätigungen pro Spieler
requiresOuterDoor boolean false bedeutet, das Element sitzt außen an der Fassade und ist auch am geschlossenen Depot bedienbar. true bedeutet, es sitzt im Depot und die Außentür muss zuerst geöffnet werden

Der ausgelöste Alarm ist kein Sonderfall, sondern ein echter Brandalarm samt Weiterleitung an die Leitstelle. Er erscheint auch am Tableau der Anlage.

Items

config.lua
lua
Config.Items = {
    enabled = false,
    system = 'auto',
    fseKey = 'fse_schluessel',
    outerDoorKey = '',
}
Parameter Typ Beschreibung
enabled boolean Item-Prüfungen aktiv
system string 'auto', 'ox_inventory', 'esx' oder 'qbcore'
fseKey string Item für das Freischaltelement
outerDoorKey string Item für die Außentür; leer bedeutet, dass keins nötig ist

Items werden nicht verbraucht. Ein leerer Name bedeutet, dass für diese Aktion nichts benötigt wird.

Sabotage

config.lua
lua
Config.Sabotage = {
    enabled = true,
    item = 'brecheisen',
    duration = 12000,
    cooldown = 60,
    blockFireJobs = true,
    dispatch = true,
}
Parameter Typ Beschreibung
enabled boolean false bedeutet, das Depot kann nicht aufgebrochen werden
item string Benötigtes Item. Leer bedeutet ohne Item, was nicht empfohlen wird
duration number Dauer des Aufbruchversuchs in Millisekunden
cooldown number Sekunden zwischen zwei Versuchen pro Spieler
blockFireJobs boolean Feuerwehr-Jobs sehen die Aufbrechen-Option nicht
dispatch boolean Sabotagemeldung an die Leitstelle senden

Das Item wird immer geprüft, unabhängig von Config.Items.enabled. Ohne Inventarsystem ist das Aufbrechen dadurch faktisch deaktiviert. Das ist Absicht: Ein Depot soll nicht versehentlich für jeden zu öffnen sein.

Bedienung und Target

config.lua
lua
Config.TargetSystem = 'ox_target'

Config.DrawText = {
    distance = 2.5,
    key = 38,
    keySecondary = 47,
    keyTertiary = 74,
}
Config.TargetSystemstringStandard: 'ox_target'

'ox_target', 'qb-target' oder '3dtext'.

Config.DrawText gilt nur bei 3dtext. Es werden bis zu drei Aktionen gleichzeitig angeboten:

Parameter Typ Beschreibung
distance number Ab welcher Entfernung in Metern der Hinweis erscheint
key number Taste für die erste Aktion (38 = E)
keySecondary number Taste für die zweite Aktion (47 = G)
keyTertiary number Taste für die dritte Aktion (74 = H)

Mit ox_target oder qb-target gelten Symbol, Beschriftung und Reichweite aus Config.Target:

Eintrag Beschreibung
open Außentür öffnen
openInner Innentür öffnen, erscheint sobald die Innentür entriegelt ist
close Depot schließen
takeKey Objektschlüssel entnehmen
returnKey Objektschlüssel zurücklegen
useKey Objektschlüssel anwenden, erscheint an den Objekttüren bei doorMode = 'target'
fse Freischaltelement betätigen
sabotage Aufbrechen
repair Depot instand setzen

Props

config.lua
lua
Config.Props = {
    closed = 'fsd_wand',
    outerOpen = 'fsd_wand_aussen_offen',
    open = 'fsd_wand_offen',
}

Config.PropOffsetOuterOpen = { x = 0.0, y = 0.0, z = 0.0, rz = 0.0 }
Config.PropOffsetOpen = { x = 0.0, y = 0.0, z = 0.0, rz = 0.0 }
Eintrag Zustand
closed Beide Türen zu
outerOpen Außentür offen, Innentür elektrisch verriegelt
open Beide Türen offen, der Schlüssel ist zugänglich

Haben eigene Modelle nicht denselben Ursprungspunkt, gleichen die beiden Offset-Tabellen den Versatz relativ zum geschlossenen Prop aus — sonst springt das Depot beim Umschalten.

Dispatch

Diese Einstellungen gelten nur für Sabotagemeldungen. Der Alarm des Freischaltelements läuft über das BMA-System selbst.

config.lua
lua
Config.Dispatch = {
    system = 'emergencydispatch',
    customEvent = '',
    jobs = { 'feuerwehr' },
    sabotageMessage = 'Sabotage am Feuerwehrschlüsseldepot',
}
Parameter Typ Beschreibung
system string emergencydispatch, cd_dispatch, ps-dispatch oder custom
customEvent string Eigenes Server-Event bei system = 'custom'
jobs table Empfänger-Jobs
sabotageMessage string Meldungstext

Cooldowns

config.lua
lua
Config.Cooldowns = {
    doorAction = 2,
    keyAction = 3,
    repair = 5,
}
Parameter Typ Beschreibung
doorAction number Sekunden zwischen Öffnen und Schließen der Außentür
keyAction number Sekunden zwischen Entnehmen und Zurücklegen des Schlüssels
repair number Sekunden zwischen zwei Reparaturversuchen

Creator

config.lua
lua
Config.Creator = {
    moveSpeed = 0.01,
    moveSpeedFast = 0.05,
    rotateSpeed = 1.0,
    doorCaptureRadius = 5.0,
    mouseRayDistance = 30.0,
    markerRadius = 100.0,
    teleportKey = 311,
}
Parameter Typ Beschreibung
moveSpeed number Schrittweite beim Verschieben in Metern
moveSpeedFast number Schrittweite mit gedrückter SHIFT-Taste
rotateSpeed number Drehung pro Tastendruck in Grad
doorCaptureRadius number Toleranz in Metern zwischen angeklicktem Objekt und der im Türsystem hinterlegten Position. Bei Doppeltüren liegt diese in der Mitte zwischen beiden Flügeln, deshalb großzügig wählen
mouseRayDistance number Höchstdistanz des Maus-Raycasts bei der Türauswahl in Metern
markerRadius number Umkreis, in dem Depots und Türen im Creator markiert werden
teleportKey number Taste, die das Prop vor den Spieler holt (311 = K)

Server-Config

config_server.lua
lua
Config.Logs = {
    enabled = false,
    webhook = '',
    botName = 'FJX FSD',
    botAvatar = '',
    appendIdentifier = true,
    events = {
        released = true,
        opened = true,
        keyTaken = true,
        keyReturned = true,
        sabotage = true,
        fse = true,
        fault = true,
        repair = true,
        depot = true,
        test = true,
    },
}
Parameter Typ Beschreibung
enabled boolean Discord-Logs aktivieren
webhook string Webhook-URL aus den Kanaleinstellungen
botName string Anzeigename des Webhooks
botAvatar string Avatarbild; leer = Discord-Standard
appendIdentifier boolean License-Identifier mitloggen
events.released boolean Innentür freigegeben oder Freigabe zurückgenommen
events.opened boolean Außentür geöffnet oder geschlossen
events.keyTaken boolean Objektschlüssel entnommen
events.keyReturned boolean Objektschlüssel zurückgelegt
events.sabotage boolean Aufbruch und Sabotage
events.fse boolean Freischaltelement betätigt
events.fault boolean Störung durch überfälligen Schlüssel oder offline gegangenen Träger
events.repair boolean Depot instand gesetzt
events.depot boolean Depot erstellt, geändert oder gelöscht
events.test boolean Test-Freigabe im Creator
config_server.lua
lua
Config.Security = {
    actionDistance = 5.0,
    maxNameLength = 50,
    maxDoorsPerDepot = 30,
    maxDepots = 100,
}
Parameter Typ Beschreibung
actionDistance number Höchstentfernung in Metern zum Depot für alle Aktionen
maxNameLength number Höchstlänge für Depot-Namen
maxDoorsPerDepot number Höchstzahl verknüpfter Türen je Depot
maxDepots number Höchstzahl Depots insgesamt

Diese Werte sind die serverseitige Prüfung gegen manipulierte Clients. Setze sie nicht großzügiger als nötig.

Einstellungen im Creator

Pro Depot wird in /fsdcreator festgelegt:

Einstellung Beschreibung
Depot-Name Freier Name, erscheint in Logs und Meldungen
Position Standort und Ausrichtung des Depots
BMA-Gebäude Verknüpfung ins Türsystem. Bestimmt, welche Türen der Objektschlüssel öffnet
Betriebsmodus Wie Config, Strict, Hybrid, Jobbasiert oder Standalone
Freischaltelement Pro Depot ein- oder ausschaltbar
Türen Einzelne Türen verknüpfen, wenn doorScope = 'linked' gilt
Test-Freigabe Gibt das Depot vorübergehend frei, um den Ablauf ohne echten Alarm zu prüfen

Unter dem Betriebsmodus zeigt der Creator in Klartext, was tatsächlich gilt — und warnt, wenn ein Depot durch fehlende Verknüpfung nie oder immer freigeben würde.