Server-Dev / Erweiterung
Diese Seite richtet sich an Server-Entwickler, die HM_ELSPlus erweitern oder in andere Scripts integrieren wollen.
Schneller Dev-Workflow
Abschnitt betitelt „Schneller Dev-Workflow“- Änderungen in
config/*.luaoder Fahrzeug-JSON durchführen. - Im Server
els_reload_configsausführen (ohne kompletten Neustart). - Fahrzeug neu spawnen und Funktionen im Spiel testen.
- Bei UI-Problemen
/els_editor_fixnutzen.
Sirenen-System erweitern
Abschnitt betitelt „Sirenen-System erweitern“Die Grundkonfiguration liegt in config/sirens.lua. Dort wählst du zwischen zwei Systemen:
WM (WheelMod)
Abschnitt betitelt „WM (WheelMod)“Einfachster Modus — nutzt die Standard-FiveM-Sirenen oder WM-Soundpacks.
ELSPlus.SirenSystem = "WM"
ELSPlus.WM = { defaultTones = { [1]="SIREN_ALPHA", [2]="SIREN_BRAVO", [3]="SIREN_CHARLIE" }, soundset = "DLC_WMSIRENS_SOUNDSET", audioBank = "DLC_WMSIRENS\\SIRENPACK_ONE"}defaultTones: die 3 Töne, die standardmäßig auf Taste 1/2/3 liegen.soundset: das GTA-Soundset (muss zum installierten Mod passen).audioBank: die Audiobank die geladen wird (String, keine Table).
ServerSided (OISS) — Preset-System
Abschnitt betitelt „ServerSided (OISS) — Preset-System“Bei OISS werden Sirenen über benannte Presets konfiguriert. Jedes Preset bündelt Soundset, Audiobank, verfügbare Töne und Horn.
ELSPlus.SirenSystem = "ServerSided"
-- Standard-Preset für neue Fahrzeuge (muss in SirenPresets existieren)ELSPlus.DefaultPreset = "LSPD Modern"
ELSPlus.SirenPresets = { ["LSPD Modern"] = { soundset = "oiss_ssa_vehaud_lspd_new_soundset", audioBank = "DLC_SERVERSIDEAUDIO\\OISS_SSA_VEHAUD_LSPD_NEW", tones = { "oiss_ssa_vehaud_lspd_new_siren_adam", "oiss_ssa_vehaud_lspd_new_siren_boy", "oiss_ssa_vehaud_lspd_new_siren_charles", "oiss_ssa_vehaud_lspd_new_siren_david", "oiss_ssa_vehaud_lspd_new_siren_edward", }, horn = "oiss_ssa_vehaud_lspd_new_horn", }, ["BCSO Modern"] = { soundset = "oiss_ssa_vehaud_bcso_new_soundset", audioBank = "DLC_SERVERSIDEAUDIO\\OISS_SSA_VEHAUD_BCSO_NEW", tones = { ... }, horn = "oiss_ssa_vehaud_bcso_new_horn", }, -- weitere Presets: LSSD, SAHP, NOOSE, FIB, RHPD, DPPD, LSIA, -- LSPP, LSFD, LSCOFD, BCFD, SanFire, SAMS, USFS, Sonstige -- jeweils in Modern und Vintage Varianten}Wichtig:
- Tonnamen sind department-spezifisch! z.B.
oiss_ssa_vehaud_lspd_new_siren_adam(nichtoiss_ssa_vehaud_siren_adam). - Jedes Preset hat:
soundset,audioBank(String),tones(Array aller Töne),horn. - Im Editor wählt der Spieler ein Preset nach Name — die passenden Töne werden automatisch angeboten.
ELSPlus.DefaultPresetbestimmt, welches Preset neue Fahrzeuge bekommen.- Die OISS-Resource muss gestartet sein (Quelle: github.com/fk-1997/Server-Sided-Sounds-and-Sirens).
Abwärtskompatibilität: ELSPlus.ServerSided wird automatisch aus dem DefaultPreset generiert. Alter Code der ELSPlus.ServerSided.soundset oder .defaultTones liest, funktioniert weiterhin.
Pro Fahrzeug überschreiben (JSON)
Abschnitt betitelt „Pro Fahrzeug überschreiben (JSON)“In der Fahrzeug-JSON kann pro Fahrzeug ein anderes Preset/Töne gesetzt werden:
{ "spawnName": "police2", "siren": { "wmTones": [ "oiss_ssa_vehaud_lspd_new_siren_adam", "oiss_ssa_vehaud_lspd_new_siren_boy", "oiss_ssa_vehaud_lspd_new_siren_charles" ], "tonePresets": ["LSPD Modern", "LSPD Modern", "LSPD Modern"], "range": 500 }}wmTones: die 1-3 Tonnamen für die Sirenen-Tasten.tonePresets(nur bei OISS): ordnet jedem Slot das Preset zu (damit der Editor weiß, welches Soundset/Bank geladen werden muss).range: Hörweite in Metern.- Ältere Configs mit
siren.soundsetwerden ebenfalls noch unterstützt.
Neue Attachment-Blaulichter hinzufügen
Abschnitt betitelt „Neue Attachment-Blaulichter hinzufügen“Attachment-Templates werden in config/anbauteile.lua definiert.
Typischer Ablauf:
- Neues Template unter
ELSPlus.Anbauteileanlegen. model,label,extrasdefinieren.- Optional
flashturn = truesetzen (Blau/Orange Umschaltung). - Bei
flashturnzusätzlichblauExtraundorangeExtraangeben. - Env-Lights (point/spot) je Extra konfigurieren.
Beispielstruktur:
ELSPlus.Anbauteile.meine_kennleuchte = { model = "my_beacon_model", label = "Meine Kennleuchte", flashturn = true, blauExtra = 2, orangeExtra = 1, extras = { ["1"] = { patterns = { "rapid", "steady" }, envLights = { { type = "point", offset = { 0.0, 0.0, 0.4 }, color = { 0, 0, 255 }, range = 5.0, intensity = 2.0 } } } }}NoFlash / Nicht geblitzt werden
Abschnitt betitelt „NoFlash / Nicht geblitzt werden“Die Einstellung ist pro Fahrzeug in der JSON-Config:
{ "spawnName": "police2", "noFlash": true}Verhalten:
noFlash: truealleine reicht nicht.- Schutz greift, wenn Blaulicht aktiv ist und
noFlashaktiv ist.
Exports für Blitzer-Scripts
Abschnitt betitelt „Exports für Blitzer-Scripts“HM_ELSPlus stellt Exports bereit, die du direkt in Blitzer- oder Radar-Scripts nutzen kannst:
IsNoFlashActive(vehicle)->true, wenn Blaulicht aktiv und NoFlash gesetzt.IsBlueLightActive(vehicle)->true, wenn Primary-Licht aktiv.IsElsVehicle(vehicle)->true, wenn Fahrzeug eine ELS/Attachment-Config hat.HasNoFlashConfig(vehicle)->true, wenn ConfignoFlashgesetzt hat.
Minimalbeispiel:
local function sollBlitzen(vehicle) if GetResourceState("HM_ELSPlus") ~= "started" then return true end if exports["HM_ELSPlus"]:IsNoFlashActive(vehicle) then return false end return trueendStateBags (Direktabfrage)
Abschnitt betitelt „StateBags (Direktabfrage)“Für Diagnose oder eigene Logik kannst du StateBags direkt lesen:
local state = Entity(vehicle).statelocal primary = state["els_primary"] == truelocal rearWarning = state["els_rearWarning"] == truelocal siren1 = state["els_siren_1"] == trueHinweis: StateBags zeigen den Live-Zustand, aber nicht die gesamte Fahrzeugkonfiguration.
Nützliche Commands
Abschnitt betitelt „Nützliche Commands“Chat (Client)
Abschnitt betitelt „Chat (Client)“/els_config- Editor öffnen/els_editor_fix- UI zurücksetzen/els_env_debug- Env-Light Debug
Server-Konsole
Abschnitt betitelt „Server-Konsole“els_reload_configs- Fahrzeug-Configs neu ladenels_debug_layouts- Layouts debuggen
Was häufig vergessen wird
Abschnitt betitelt „Was häufig vergessen wird“- Schreibrechte auf
config/korrekt setzen (sonst kein Speichern). - Bei neuen Attachment-Modellen sicherstellen, dass Assets/Modelle verfügbar sind.
- Bei ServerSided-Sirenen prüfen, ob Audio-Resource wirklich gestartet ist.
- Nach strukturellen Änderungen immer mit mehreren Fahrzeugtypen testen (ELS + Attachment).