Zum Inhalt springen

Konfiguration

Die Grundkonfiguration befindet sich in der Datei config/config.lua.


Config.Debug = false
Config.Locale = 'de'
Config.Framework = 'auto'
SchlüsselStandardBeschreibung
Config.DebugfalseAktiviert detaillierte Debug-Meldungen in der Serverkonsole.
Config.Locale'de'Sprache der Benutzeroberfläche und Meldungen (de oder en).
Config.Framework'auto'Framework-Erkennung: 'auto', 'esx', 'qb' oder 'standalone'.

Steuert, wie Spieler an der Säule interagieren können:

Config.Interaction = {
mode = 'ox_target',
targetDistance = 2.0,
textUiDistance = 1.6,
textUiKey = 38,
textUiKeyLabel = 'E',
textUiPosition = 'left-center',
renderDistance = 150.0,
icon = 'fa-solid fa-phone',
label = 'Notrufsäule benutzen',
edit = {
enabled = true,
editLabel = 'Säule bearbeiten',
moveLabel = 'Säule versetzen',
}
}
SchlüsselStandardBeschreibung
mode'ox_target'Interaktionsmodus: 'ox_target' oder 'textui'. Fehlt ox_target, weicht das Script automatisch auf TextUI aus.
targetDistance2.0Maximale Interaktionsdistanz für ox_target (in Metern).
textUiDistance1.6Distanz, ab der die TextUI eingeblendet wird.
textUiKey38Steuerungscode der Taste für TextUI (38 entspricht E).
textUiKeyLabel'E'Textbeschriftung der Taste in der Anzeige.
textUiPosition'left-center'Bildschirmlage der TextUI über ox_lib.
renderDistance150.0Distanz, ab welcher der Säulen-Prop clientseitig gestreamt wird.
icon / labelTelefon-IconIcon und Text für den Haupteintrag im Interaktionsmenü.
edit.enabledtrueBlendet Zusatzoptionen (Bearbeiten / Versetzen) für berechtigte Spieler ein.
edit.editLabel / moveLabelTextBeschriftungen der schnellen Bearbeitungsoptionen.

3. Props & Startwerte (Config.Prop & Config.TemplateDefaults)

Abschnitt betitelt „3. Props & Startwerte (Config.Prop & Config.TemplateDefaults)“
Config.Prop = {
default = 'hm_notrufsaeule',
fallback = 'prop_parknmeter_02',
list = { 'hm_notrufsaeule' },
freeze = true,
invincible = true,
}
SchlüsselStandardBeschreibung
Config.Prop.default'hm_notrufsaeule'Standard-Model, falls ein Template keinen Prop definiert.
Config.Prop.fallback'prop_parknmeter_02'Notfall-Ersatzobjekt, falls das Custom-Model nicht gestreamt wird; false bricht ab.
Config.Prop.list{'hm_notrufsaeule'}Liste verfügbarer Props zur Auswahl im Template-Dropdown.
Config.Prop.freezetrueSäulen-Prop physikalisch einfrieren (verhindert Wegrutschen bei Kollisionen).
Config.Prop.invincibletrueSäulen-Prop unzerstörbar machen.
Config.TemplateDefaults.offset{0, 0, 0}Standard-Offset (X, Y, Z) für neue Templates.
Config.TemplateDefaults.rotation{0, 0, 0}Standard-Rotation (Pitch, Roll, Yaw).
Config.TemplateDefaults.snapToGroundtrueAutomatisch am Boden einrasten.

Config.Tablet = {
command = 'notruf_config',
item = 'nrs_tablet',
itemRequired = false,
keybind = false,
animation = true,
iconMaxBytes = 48 * 1024,
}
SchlüsselStandardBeschreibung
command'notruf_config'Chatbefehl zum Öffnen des Tablets; false deaktiviert den Befehl.
item'nrs_tablet'Name des Items (z. B. in ox_inventory); false schaltet die Item-Nutzung ab.
itemRequiredfalseWenn true, lässt sich das Tablet nur über das Item öffnen (Befehl gesperrt).
keybindfalseOptionaler Tastatur-Keybind (z. B. 'F7') über ox_lib.
animationtrueSpielt beim Öffnen des Tablets eine Tablet-Animation am Charakter ab.
iconMaxBytes49152 (48 KB)Maximale Dateigröße für hochgeladene Behörden-SVGs.

Alle Befehle lassen sich über ein gemeinsames Präfix konfigurieren:

Config.Commands = {
prefix = 'notruf_', -- Präfix (ergibt notruf_grant, notruf_perms, etc.; '' lässt es weg)
grant = 'grant',
revoke = 'revoke',
perms = 'perms',
id = 'id',
map = 'map',
duty = 'duty',
reload = 'reload',
seed = 'seed',
model = 'model',
}
SchlüsselStandardFunktion
grant'grant'Rechte vergeben (notruf_grant <ID> <level>).
revoke'revoke'Rechte entziehen (notruf_revoke <ID>).
perms'perms'Eingetragene Rechte auflisten (notruf_perms).
id'id'Eigene FiveM-Identifier im Chat ausgeben (/notruf_id).
map'map'Aktuelle Kartengrenzen für die config.lua in die Konsole drucken (notruf_map).
duty'duty'Zeigt das bei Emergency Dispatch eingeteilte Personal und gleicht Jobs ab (notruf_duty).
reload'reload'Lädt alle JSON-Dateien in data/ neu ein (notruf_reload).
seed'seed'Standarddienste aus config/services.lua erneut in data/ anlegen (notruf_seed).
model'model'Prüft auf dem Client, ob ein Model geladen und gültig ist (/notruf_model <name>).

Config.Permissions = {
mode = 'both',
ace = {
admin = 'hm_notrufsaeule.admin',
editor = 'hm_notrufsaeule.manage',
},
actions = {
open = { 'editor', 'admin' },
pillars = { 'editor', 'admin' },
services = { 'admin' },
permissions = { 'admin' },
settings = { 'admin' },
},
identifierTypes = { 'license', 'steam', 'discord', 'xbl', 'live', 'fivem' },
knownGroups = { 'admin', 'mod', 'superadmin' },
}
SchlüsselStandardBeschreibung
mode'both'Berechtigungsmodus: 'ace', 'json' oder 'both' (beides gleichzeitig).
ace.admin'hm_notrufsaeule.admin'FiveM-ACE-Recht für volle Administrator-Rechte.
ace.editor'hm_notrufsaeule.manage'FiveM-ACE-Recht für Bearbeiter (nur Säulen platzieren/verändern).
actions.*Rollen-ArrayDefiniert, welche Berechtigungsstufe welche Aktion im Tablet durchführen darf.
identifierTypesListeTypen von Spieler-Identifiern, die beim Abgleich berücksichtigt werden.
knownGroupsListeGruppen, die im Fenster „Zugriff verweigert“ vorgeschlagen werden.

Config.Call = {
maxDistance = 4.0,
cooldownPlayer = 60,
cooldownPillar = 20,
connectTime = 6000,
askMessage = true,
messageMaxLength = 200,
allowAnonymous = true,
animation = { dict = 'cellphone@', clip = 'cellphone_call_listen_base' },
sound = true,
showLabels = true,
}
SchlüsselStandardBeschreibung
maxDistance4.0Maximale Distanz zur Säule während des Anrufs (serverseitig geprüft).
cooldownPlayer60 sCooldown-Zeitspanne zwischen zwei Notrufen desselben Spielers.
cooldownPillar20 sSperrzeit nach einem Notruf an derselben Säule.
connectTime6000 msRufzeit (Klingeln), bevor die Leitstelle das Gespräch annimmt.
askMessagetrueBlendet das Freitext-Eingabefeld im Bedienfeld ein.
messageMaxLength200Maximal erlaubte Zeichenanzahl der Freitext-Notrufmeldung.
allowAnonymoustrueErlaubt dem Anrufer, den Notruf anonym abzusetzen.
animationDict / ClipAnimation des Charakters während der Interaktion an der Säule.
soundtrueAkustische Rückmeldung beim Betätigen der Tasten.
showLabelstrueZeigt Textbeschriftungen unter den Tasten des Säulen-Bedienfelds.

8. Blips & Einsatzmarkierungen (Config.Blips & Config.ResponderBlip)

Abschnitt betitelt „8. Blips & Einsatzmarkierungen (Config.Blips & Config.ResponderBlip)“
Config.Blips = {
enabled = false,
sprite = 459,
color = 47,
scale = 0.55,
label = 'Notrufsäule',
shortRange = true,
}
Config.ResponderBlip = {
enabled = true,
duration = 120,
flash = true,
}
SchlüsselStandardBeschreibung
Blips.enabledfalseSchaltet permanente Karten-Blips für alle Säulen auf der Hauptkarte ein/aus.
Blips.sprite / color / scaleVerschiedenAussehen des Säulen-Blips auf der Weltkarte.
Blips.shortRangetrueSäulen-Blips werden nur angezeigt, wenn sich der Spieler in der Nähe befindet.
ResponderBlip.enabledtrueErzeugt bei einem Notruf einen temporären Einsatzort-Blip für Einsatzkräfte.
ResponderBlip.duration120 sStandzeit des Notruf-Blips bei alarmierten Einsatzkräften (in Sekunden).
ResponderBlip.flashtrueLässt den Einsatz-Blip auf der Minimap pulsieren.

Config.Dispatch = {
default = 'emergencydispatch',
fallback = true,
adapters = {
{ value = 'emergencydispatch', label = 'Emergency Dispatch' },
},
}
SchlüsselStandardBeschreibung
default'emergencydispatch'Standard-Adapter, falls bei einem Dienst kein spezifischer Adapter gewählt wurde.
fallbacktrueRedundanz: Benachrichtigt die im Dienst hinterlegten Jobs zusätzlich direkt ingame.
adaptersListeAuswahlliste der Dispatch-Systeme im Notrufdienst-Formular des Tablets.

Für Details zur Konfiguration von Emergency Dispatch, Telefon-Hooks und eigenen Adaptern siehe die Seite Dispatch & Erweiterung.


10. Karte & Speicherorte (Config.Map & Config.Files)

Abschnitt betitelt „10. Karte & Speicherorte (Config.Map & Config.Files)“
Config.Map = {
image = 'map.jpg',
bounds = { minX = -5732.48, maxX = 6763.05, minY = -4086.21, maxY = 8409.32 },
}
Config.Files = {
pillars = 'data/pillars.json',
templates = 'data/templates.json',
services = 'data/services.json',
permissions = 'data/permissions.json',
settings = 'data/settings.json',
map = 'data/map.json',
}
  • Config.Map.image: Dateiname des Satellitenbilds im Ordner html/.
  • Config.Map.bounds: Weltkoordinaten-Grenzen des Kartenbilds. (Wird durch eine Ingame-Kalibrierung automatisch in data/map.json überschrieben).
  • Config.Files.*: Relative Pfade zu den internen Speicherorten der JSON-Dateien.