Konfiguration

Alle Einstellungen stehen in config.lua, die offen bleibt (nicht verschlüsselt). Standardmäßig steht jede Erkennung auf 'auto': Sie müssen sie nur ändern, wenn die automatische Erkennung auf Ihrem Server nicht funktioniert.


Framework

HZBridge.Framework = 'auto'

OptionBeschreibung
'auto'Automatische Erkennung (empfohlen)
'esx'ESX erzwingen
'qbcore'QBCore erzwingen
'qbox'QBox (QBX) erzwingen
'ox'Ox Core erzwingen
'vrp'vRP erzwingen
'standalone'Ohne Framework
Erkennungsreihenfolge: es_extended > qbx_core > qb-core > ox_core > vRP > standalone

Inventar

HZBridge.Inventory = 'auto'

OptionBeschreibung
'auto'Automatische Erkennung (empfohlen)
'ox_inventory'ox\_inventory erzwingen
'hz_inventory'hz\_inventory erzwingen (nutzt den ox\_inventory-Adapter)
'qs-inventory'qs-inventory erzwingen
'ps-inventory'ps-inventory erzwingen
'codem-inventory'codem-inventory erzwingen
'core_inventory'core\_inventory erzwingen
'origen_inventory'origen\_inventory erzwingen
'tgiann-inventory'tgiann-inventory erzwingen
'qb-inventory'qb-inventory erzwingen
'ak47_inventory'ak47\_inventory erzwingen
'framework'Natives Inventar des Frameworks nutzen
Erkennungsreihenfolge: hz_inventory > ox_inventory > qs-inventory > ps-inventory > core_inventory > origen_inventory > tgiann-inventory > codem-inventory > ak47_inventory > qb-inventory > framework
  • qb-inventory kommt zuletzt, weil es mit QBCore ausgeliefert wird: Ein Server, der daneben ein anderes Inventar betreibt, nutzt dieses.
  • GetDetectedInventory() meldet hz\_inventory als ox_inventory, da es denselben Adapter nutzt.
  • Auf QBox und Ox Core nutzt hz_lib ox_inventory, auch bevor es gestartet ist.
  • Bei 'auto' wird ein Inventar, das nach hz_lib startet, bei seinem Start erkannt. Ein erzwungener Wert schaltet das ab.

Benachrichtigungen

HZBridge.Notifications = 'auto'

OptionBeschreibung
'auto'Automatische Erkennung (empfohlen)
'ox_lib'ox\_lib-Benachrichtigungen erzwingen
'okok'okokNotify erzwingen
'mythic'mythic\_notify erzwingen
'codem'codem-notification erzwingen
'pnotify'pNotify erzwingen
'framework'Benachrichtigungen des Frameworks nutzen
'gta'Nativer GTA-V-Text

Target / Interaktion

HZBridge.Target = 'auto'

OptionBeschreibung
'auto'Automatische Erkennung (empfohlen)
'ox_target'ox\_target erzwingen
'qb-target'qb-target erzwingen
'interact'interact-System erzwingen
'builtin'Integriertes TextUI als Fallback

Menü / UI

HZBridge.Menu = 'auto'

OptionBeschreibungFunktionen
'auto'Automatische Erkennung (empfohlen)—
'ox_lib'ox\_lib erzwingenContext, Input, Alert, TextUI, Progress, Menu
'qb-menu'qb-menu erzwingenContext, Input (qb-input), TextUI (qb-core)
'esx'ESX-Menü erzwingenContext, Listenmenü, TextUI
'native'Nativer GTA-FallbackTastatureingabe, Hilfetext (eingeschränkt)
Erkennungsreihenfolge: ox_lib > qb-menu > esx_menu_default > native
Der Fallback 'native' bietet Grundfunktionen, ist aber eingeschränkt. Für das beste Ergebnis installieren Sie ox\_lib oder qb-menu.

Dispatch

HZBridge.Dispatch = 'auto'

OptionBeschreibung
'auto'Automatische Erkennung (empfohlen)
'cd_dispatch'cd\_dispatch erzwingen
'ps-dispatch'ps-dispatch erzwingen
'qs-dispatch'qs-dispatch erzwingen
'rcore_dispatch'rcore\_dispatch erzwingen
'emergencydispatch'emergencydispatch erzwingen
'builtin'Integrierte Benachrichtigung + Blip

Bank (Firmenkonten)

HZBridge.Banking = 'auto'

Das Firmenkonto (Chefkonto eines Jobs oder einer Gang), auf das HZ-Scripts einzahlen und von dem sie abbuchen, zum Beispiel die Einnahmen eines Geschäfts.

OptionBeschreibung
'auto'Automatische Erkennung (empfohlen)
'hz_banking'HZ-Banking erzwingen
'qb-banking'qb-banking erzwingen
'qb-management'qb-management erzwingen
'Renewed-Banking'Renewed-Banking erzwingen
'okokBanking'okokBanking erzwingen
'qs-banking'qs-banking erzwingen
'tgg-banking'tgg-banking erzwingen
'crm-banking'crm-banking erzwingen
'tgiann-bank'tgiann-bank erzwingen
'esx_society'esx\_society erzwingen
'none'Kein Firmenkonto (Auszahlungen aus)
Erkennungsreihenfolge: hz_banking > qb-banking > qb-management > Renewed-Banking > okokBanking > qs-banking > tgg-banking > crm-banking > tgiann-bank > esx_society > none
  • Die Bank wird nur einmal erkannt, beim Start von hz_lib. Eine Bank, die nach hz_lib startet, wird nicht gesehen: Erzwingen Sie sie hier.
  • Ausnahme: Bei 'auto' übernimmt HZ-Banking, wenn es nach hz_lib startet, und gibt beim Stoppen an die vorherige Bank zurück.
  • Manche Banken erlauben nur das Einzahlen. Scripts prüfen das mit dem Export GetBankingSupports.

Callbacks

HZBridge.Callback = {
    Timeout   = 15000,  -- ms before timeout (default 15s)
    RateLimit = 50,     -- max requests/second per player (0 = disabled)
}

ParameterTypBeschreibung
TimeoutintegerMillisekunden, bevor ein Callback abläuft
RateLimitintegerMax. Anfragen pro Sekunde und Spieler (0 = unbegrenzt)

Dispatch-Weiterleitung

HZBridge.DispatchRelay = {
    RateLimit         = 5,
    RateLimitWindowMs = 10000,
    MaxTextLength     = 200,
    MaxJobs           = 20,
}

Grenzen, die der Server auf Dispatch-Alarme anwendet, die Spieler über hz_lib senden.

ParameterStandardBeschreibung
RateLimit5Max. Alarme pro Spieler in einem Zeitfenster (0 = unbegrenzt)
RateLimitWindowMs10000Länge des Zeitfensters in ms
MaxTextLength200Titel, Nachricht und Code werden auf so viele Zeichen gekürzt
MaxJobs20Max. Anzahl Jobs, an die sich ein Alarm richtet

Sprache

HZBridge.Locale = 'en'

Sprache des Admin-Panels, der eigenen Meldungen von hz_lib und der Tastenhinweise im NPC-Dialog. Mitgeliefert: 'en' und 'fr'. Sie können locales/<sprache>.lua für die Meldungen von hz_lib hinzufügen; das Panel selbst gibt es nur auf Englisch und Französisch, bei jeder anderen Sprache erscheint es auf Englisch.


Admin-Panel

HZBridge.Panel = {
    AcePermission      = 'admin',
    DevAllowAll        = false,
    RateLimitWrites    = 10,
    RateLimitWindowMs  = 5000,
    SessionTokenTtlMs  = 5 * 60 * 1000,
    AuditRetentionDays = 90,
}

ParameterStandardBeschreibung
AcePermission'admin'ACE-Knoten, der /hzpanel öffnet. Siehe Berechtigungen einrichten
DevAllowAllfalsetrue lässt jeden das Panel öffnen, ohne jede Prüfung. Nur für einen Entwicklungsserver
RateLimitWrites10Max. Speichervorgänge pro Admin in einem Zeitfenster
RateLimitWindowMs5000Länge dieses Zeitfensters in ms
SessionTokenTtlMs300000Eine Panel-Sitzung läuft nach dieser Zeit ohne Aktivität ab (5 Min.)
AuditRetentionDays90In v1.2.0 nicht angewendet: hz_lib löscht nie Audit-Dateien. Löschen Sie alte data/_audit.*.log-Dateien selbst, wenn Sie eine Aufbewahrungsfrist brauchen

Zugriffskontrolle

HZBridge.Panel.AccessControl = {
    Enabled               = true,
    Resolution            = 'union',
    CapsMemoTtlMs         = 1000,
    ScrapePermissionsCfg  = true,
    PermissionsCfgPath    = 'config/permissions.cfg',
    RestartRequiresManage = false,
    CuratedGroups         = {
        'god', 'owner', 'superadmin', 'admin', 'headadmin', 'sradmin',
        'dev', 'developer', 'mod', 'moderator', 'trialmod', 'support', 'helper',
    },
    RescanCooldownMs      = 30000,
}

Staff-Rollen mit Zugriff pro Modul. Eine Rolle ist eine ACE-Gruppe (group.admin, group.mod…) oder eine Staff-Gruppe des Frameworks. Pro Modul erhält eine Rolle eines oder mehrere dieser drei Rechte:

  • view: die Einstellungen des Moduls lesen
  • config: seine gespeicherten Einstellungen ändern
  • manage: seine Live-Aktionen nutzen (zum Beispiel das Wetter sofort ändern)
Ein Moderator kann manage für HZ-Weather ohne config haben: Er steuert das Wetter, kann aber dessen Einstellungen nicht ändern. Die Rollen bearbeiten Sie im Spiel unter /hzpanel > Access control (nur eine Rolle, die Zugriffe bearbeiten darf, sieht diesen Tab).
ParameterStandardBeschreibung
Enabledtruefalse = keine Rollen: Wer AcePermission hat, erhält vollen Zugriff auf alles
Resolution'union'Spieler in mehreren Rollen. 'union': Er erhält die Rechte aller Rollen. 'highest': nur die Rechte seiner ranghöchsten Rolle
CapsMemoTtlMs1000Wie lange (ms) die Rechte eines Spielers zwischen zwei Prüfungen zwischengespeichert bleiben. Klein halten
ScrapePermissionsCfgtrueLiest Ihre Berechtigungsdatei, um Ihre Gruppennamen in der Rollenauswahl anzuzeigen. Nur die Namen: Der Zugriff wird immer live über ACE geprüft. Auf false setzen, wenn Ihr Hoster das Lesen von Dateien blockiert
PermissionsCfgPath'config/permissions.cfg'Diese Datei, relativ zum Server-Stammverzeichnis
RestartRequiresManagefalseEin Modul aus dem Panel neu zu starten erfordert config. true verlangt zusätzlich manage
CuratedGroups13 übliche NamenGruppennamen, die in der Rollenauswahl angeboten werden, bevor sie auf Ihrem Server gefunden werden. Fügen Sie Ihre eigenen Staff-Gruppen hinzu
RescanCooldownMs30000Mindestabstand (ms) zwischen zwei Gruppensuchen, die aus dem Panel gestartet werden
  • Beim ersten Start erhält die Gruppe hinter AcePermission (standardmäßig group.admin) vollen Zugriff und das Recht, Zugriffe zu bearbeiten, damit niemand ausgesperrt wird. Admin-Gruppen des Frameworks (admin, god, superadmin, owner), die dabei gefunden werden, erhalten vollen Zugriff auf die Module, aber nicht das Recht, Zugriffe zu bearbeiten.
  • Ein Spieler, dessen Gruppen zu keiner Rolle passen, behält vollen Zugriff, wenn er AcePermission (oder das ACE command) hat. Ein Spieler, der zu einer Rolle passt, behält die Grenzen dieser Rolle.
  • Ausgesperrt? Führen Sie hzaccess_recover <gruppe> in der Serverkonsole aus (zum Beispiel hzaccess_recover admin): Diese Gruppe erhält wieder vollen Zugriff und das Recht, Zugriffe zu bearbeiten.

Abhängige Ressourcen neu starten

HZBridge.AutoRestartDependents = false

Wird hz_lib gestoppt, stoppen auch alle Ressourcen, die davon abhängen. Mit true werden diese Ressourcen wieder gestartet, sobald hz_lib zurück ist. Standardmäßig aus: Es würde auch Ressourcen starten, die Sie absichtlich gestoppt lassen.


Debug

HZBridge.Debug = false

Auf true setzen, um ausführliche Logs mit dem Präfix [HZ Bridge] in der Konsole zu aktivieren. Nützlich, um Erkennungsprobleme zu untersuchen.


Vollständiges Beispiel

HZBridge = {}

HZBridge.Framework     = 'auto'
HZBridge.Inventory     = 'auto'
HZBridge.Notifications = 'auto'
HZBridge.Dispatch      = 'auto'
HZBridge.Target        = 'auto'
HZBridge.Menu          = 'auto'
HZBridge.Banking       = 'auto'

HZBridge.Callback = {
    Timeout   = 15000,
    RateLimit = 50,
}

HZBridge.DispatchRelay = {
    RateLimit         = 5,
    RateLimitWindowMs = 10000,
    MaxTextLength     = 200,
    MaxJobs           = 20,
}

HZBridge.Locale = 'en'

HZBridge.Panel = {
    AcePermission      = 'admin',
    DevAllowAll        = false,
    RateLimitWrites    = 10,
    RateLimitWindowMs  = 5000,
    SessionTokenTtlMs  = 5 * 60 * 1000,
    AuditRetentionDays = 90,
}

HZBridge.Panel.AccessControl = {
    Enabled               = true,
    Resolution            = 'union',
    CapsMemoTtlMs         = 1000,
    ScrapePermissionsCfg  = true,
    PermissionsCfgPath    = 'config/permissions.cfg',
    RestartRequiresManage = false,
    CuratedGroups         = {
        'god', 'owner', 'superadmin', 'admin', 'headadmin', 'sradmin',
        'dev', 'developer', 'mod', 'moderator', 'trialmod', 'support', 'helper',
    },
    RescanCooldownMs      = 30000,
}

HZBridge.AutoRestartDependents = false

HZBridge.Debug = false

Empfehlung: Lassen Sie die Erkennung auf 'auto', außer Sie haben einen konkreten Grund, ein System zu erzwingen. Die automatische Erkennung ist zuverlässig und deckt alle üblichen Setups ab.