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.Debug = false
Config.Framework = 'auto'
Config.Locale = 'de'
Config.DebugbooleanStandard: falseAusfü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.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.CreatorGroup = 'admin'
Config.UseAcePermission = true
Config.AcePermission = 'fjx_fsd.creator'
Config.CreatorCanOperate = false
Config.UseAcePermissionbooleanStandard: truetrue 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: falsetrue 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.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.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.MergeNumberedBuildings = true
Config.BuildingNames = {
-- ['kh'] = 'Krankenhaus',
-- ['jva'] = 'Justizvollzugsanstalt',
-- ['rh'] = 'Rathaus',
}
Config.MergeNumberedBuildingsbooleanStandard: trueFasst 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.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.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.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.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.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.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.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.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.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.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.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.