Zum Inhalt springen

Installation & Einrichtung

Folge dieser Anleitung, um HM_Notrufsaeulen auf deinem FiveM-Server zu installieren und einzurichten.

  1. Dateien kopieren:
    Kopiere den Ordner [hm_Notrufsaeulen-Pack] vollständig in das resources/-Verzeichnis deines FiveM-Servers.
    Dieser Ordner enthält zwei voneinander getrennte Resourcen:

    • hm_Notrufsaeulen (Logik, UI, Daten & Adapter)
    • hm_Notrufsaeulen_stream (3D-Prop & Archetype)
  2. In der server.cfg eintragen:
    Füge die Resourcen in der folgenden Startreihenfolge in deine server.cfg ein:

    ensure ox_lib
    ensure hm_Notrufsaeulen_stream
    ensure hm_Notrufsaeulen
  3. Schreibrechte für data/ prüfen:
    Stelle sicher, dass der FiveM-Serverprozess Schreibrechte auf den Ordner hm_Notrufsaeulen/data/ besitzt.

    Terminal-Fenster
    chmod -R 775 resources/[hm_Notrufsaeulen-Pack]/hm_Notrufsaeulen/data/

    (Siehe auch unsere Anleitung zu Dateiberechtigungen).

  4. Admin-Rechte vergeben:
    Führe in der Serverkonsole folgenden Befehl aus, um dir selbst die Administratorrechte zu geben:

    Terminal-Fenster
    notruf_grant <Deine-Server-ID> admin

    (Beispiel: notruf_grant 1 admin)

  5. Ingame testen & Säule setzen:
    Verbinde dich auf den Server und öffne das Tablet über den Chatbefehl:

    /notruf_config

    Klicke auf Neue Notrufsäule platzieren, um den 3D-Placer zu starten.


Prop und Archetype liegen in der eigenen Resource hm_Notrufsaeulen_stream:

  • stream/hm_notrufsaeule.ydr (3D-Mesh & Texturen)
  • stream/hm_notrufsaeule.ytyp (Archetype-Definition)

Die Einbindung in der fxmanifest.lua erfolgt über data_file 'DLC_ITYP_REQUEST' 'stream/hm_notrufsaeule.ytyp'. Der Model-Name entspricht dem Dateinamen: hm_notrufsaeule (in Config.Prop.default).

Zusätzlich räumt die Logik-Resource beim Stoppen automatisch auf: Alle gespawnten Säulen-Objekte sowie temporäre Vorschauobjekte aus Placer und Prop-Editor werden gelöscht und die Model-Hashes freigegeben.

Der mitgelieferte Archetype besitzt folgende Messwerte:

FeldWert
name / assetNamehm_notrufsaeule (Hash 0xF8F41D63)
assetType2 = ASSET_TYPE_DRAWABLE
bbMin-0.2580, -0.6670, -0.7949
bbMax0.2669, 0.0048, 1.9344
bsCentre0.0044, -0.3311, 0.5698
bsRadius1.4297
lodDist200
flags32

Das Model ist 0,53 × 0,67 × 2,73 m groß. Der Ursprung (Origin) liegt 0,79 m über der Modellunterkante – beim Platzieren steckt dieser Fundament-Teil im Boden (bei einem Betonfundament gewollt). In Y sitzt die Geometrie auf einer Seite des Ursprungs (−0,67 bis 0,00), das Model steht also rund 0,33 m versetzt zum Platzierungspunkt.

Fehlersuche: „Model ist nicht geladen oder ungültig“

Abschnitt betitelt „Fehlersuche: „Model ist nicht geladen oder ungültig““

Neue Dateien in stream/ kommen erst nach einem vollständigen Serverneustart beim Client an, und der Client muss sich neu verbinden (ein reines restart genügt FiveM bei Stream-Assets nicht).

Prüfe den Status im Spiel mit:

/notruf_model hm_notrufsaeule
  • Meldet der Befehl IsModelInCdimage: false, ist der Prop noch nicht im Spielclient geladen.
  • Bis zum Neustart weicht das Script automatisch auf Config.Prop.fallback aus (Standard: prop_parknmeter_02), damit der Placer und bereits platzierte Säulen ohne Absturz bedienbar bleiben.

Möchtest du weitere eigene Props hinzufügen, lege die Dateien in stream/, trage sie in Config.Prop.list ein und sorge dafür, dass die Kollision im .ydr eingebettet ist.


Standardmäßig öffnet sich das Tablet per Chatbefehl /notruf_config. Du kannst es jedoch auch an ein Item koppeln:

Setze in config/config.lua:

Config.Tablet.item = 'nrs_tablet'
Config.Tablet.itemRequired = true -- Tablet öffnet NUR über das Item

Füge das Item in ox_inventory/data/items.lua ein:

['nrs_tablet'] = {
label = 'Notrufsäulen-Tablet',
weight = 800,
stack = false,
server = { export = 'hm_Notrufsaeulen.useTablet' },
},

Das Script unterscheidet zwei Berechtigungsstufen:

  • editor: Säulen anlegen, bearbeiten, versetzen und löschen.
  • admin: Volle Rechte – darf zusätzlich Notrufdienste bearbeiten, Ingame-Einstellungen anpassen und Rechte verwalten.

Welches Level welche Aktionen ausführen darf, ist in Config.Permissions.actions definiert.

Über Config.Permissions.mode kannst du festlegen, wie Rechte geprüft werden:

  • 'ace': Nur über FiveM-ACE-Permissions in der server.cfg.
  • 'json': Nur über die interne Datei data/permissions.json.
  • 'both' (Standard): Beides aktiv – Spieler haben Zugriff, wenn sie in ACE oder in der JSON stehen.
# Volle Adminrechte (Dienste, Säulen, Settings, Rechte)
add_ace group.admin hm_notrufsaeule.admin allow
# Bearbeiter-Rechte (nur Säulen aufstellen/bearbeiten)
add_ace group.mod hm_notrufsaeule.manage allow
# Oder direkt für eine bestimmte FiveM-Lizenz:
add_ace identifier.license:0a1b2c3d4e5f hm_notrufsaeule.admin allow

2. Berechtigungen über JSON (data/permissions.json)

Abschnitt betitelt „2. Berechtigungen über JSON (data/permissions.json)“

Die JSON-Liste wird komfortabel direkt im Spiel über das Tablet gepflegt (Reiter „Rechte“ → Online-Spieler auswählen oder Identifier eingeben):

{
"entries": [
{ "identifier": "license:0a1b2c...", "label": "Max", "level": "admin" }
]
}

Der sicherste Weg für die Erst-Einrichtung führt über die Serverkonsole – diese besitzt immer uneingeschränkte Admin-Rechte:

Terminal-Fenster
notruf_grant 1 admin

(wobei 1 die aktuelle Server-ID deines Spielers ist).

Alternativ kannst du den Identifier direkt angeben:

Terminal-Fenster
notruf_grant license:0a1b2c3d4e5f... admin

Den eigenen Identifier erfährst du ingame mit dem Befehl /notruf_id. Er wird dir im Chat angezeigt und gleichzeitig in die Serverkonsole geschrieben.

Öffnet ein Spieler ohne Berechtigung das Tablet, sieht er ein informatives Fenster „Zugriff verweigert“. Dieses Fenster enthält fertige Zeilen zum Kopieren für die Administratoren:

  • Der Konsolenbefehl notruf_grant mit der eigenen ID.
  • Das fertige ACE-Recht für den eigenen Identifier.
  • Vorschläge für bekannte Gruppen (Config.Permissions.knownGroups, z. B. group.admin).
BefehlBerechtigungBeschreibung
notruf_grant <ID|identifier> [level]Admin / KonsoleVergibt Rechte (admin oder editor).
notruf_revoke <ID|identifier>Admin / KonsoleEntzieht vergebene Rechte.
notruf_permsAdmin / KonsoleListet alle aktuell in der JSON hinterlegten Rechte auf.
/notruf_idJederZeigt die eigenen Identifier zum Kopieren an.