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'
| Option | Beschreibung |
'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'
| Option | Beschreibung |
'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'
| Option | Beschreibung |
'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'
| Option | Beschreibung |
'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'
| Option | Beschreibung | Funktionen |
'auto' | Automatische Erkennung (empfohlen) | — |
'ox_lib' | ox\_lib erzwingen | Context, Input, Alert, TextUI, Progress, Menu |
'qb-menu' | qb-menu erzwingen | Context, Input (qb-input), TextUI (qb-core) |
'esx' | ESX-Menü erzwingen | Context, Listenmenü, TextUI |
'native' | Nativer GTA-Fallback | Tastatureingabe, 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'
| Option | Beschreibung |
'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.
| Option | Beschreibung |
'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)
}
| Parameter | Typ | Beschreibung |
Timeout | integer | Millisekunden, bevor ein Callback abläuft |
RateLimit | integer | Max. 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.
| Parameter | Standard | Beschreibung |
RateLimit | 5 | Max. Alarme pro Spieler in einem Zeitfenster (0 = unbegrenzt) |
RateLimitWindowMs | 10000 | Länge des Zeitfensters in ms |
MaxTextLength | 200 | Titel, Nachricht und Code werden auf so viele Zeichen gekürzt |
MaxJobs | 20 | Max. 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,
}
| Parameter | Standard | Beschreibung |
AcePermission | 'admin' | ACE-Knoten, der /hzpanel öffnet. Siehe Berechtigungen einrichten |
DevAllowAll | false | true lässt jeden das Panel öffnen, ohne jede Prüfung. Nur für einen Entwicklungsserver |
RateLimitWrites | 10 | Max. Speichervorgänge pro Admin in einem Zeitfenster |
RateLimitWindowMs | 5000 | Länge dieses Zeitfensters in ms |
SessionTokenTtlMs | 300000 | Eine Panel-Sitzung läuft nach dieser Zeit ohne Aktivität ab (5 Min.) |
AuditRetentionDays | 90 | In 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).
| Parameter | Standard | Beschreibung |
Enabled | true | false = 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 |
CapsMemoTtlMs | 1000 | Wie lange (ms) die Rechte eines Spielers zwischen zwei Prüfungen zwischengespeichert bleiben. Klein halten |
ScrapePermissionsCfg | true | Liest 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 |
RestartRequiresManage | false | Ein Modul aus dem Panel neu zu starten erfordert config. true verlangt zusätzlich manage |
CuratedGroups | 13 übliche Namen | Gruppennamen, die in der Rollenauswahl angeboten werden, bevor sie auf Ihrem Server gefunden werden. Fügen Sie Ihre eigenen Staff-Gruppen hinzu |
RescanCooldownMs | 30000 | Mindestabstand (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.