jaksam_inventory/_hooks.
Best Practices
Filter nutzen
Verwende immer passende Filter, um unnötige Hook-Ausführungen zu vermeiden
Frühe Rückgaben
Nutze frühe
returns, um Hooks zu verlassen, wenn Bedingungen nicht erfüllt sindPerformance
Halte die Hook-Logik schlank, um die Inventar-Performance nicht zu beeinträchtigen
Anwendungsbeispiele
- Verhindern, dass Spieler Items mit dem Metadaten-Feld
sole_ownerstehlen (z.B. VIP-Items) - Verhindern, dass Spieler Polizeiwaffen in ihr persönliches Inventar verschieben
- Nur einen Rucksack pro Spieler-Inventar erlauben
- Items craften, indem ein bestimmtes Item auf ein anderes gezogen wird (z.B. Brot auf Fleisch ziehen ergibt ein Sandwich)
- Item-Nutzung blockieren, wenn der Spieler gefesselt ist oder sich in bestimmten Zonen befindet
- Item-Nutzungsstatistiken und Erfolge erfassen
- Die Nutzung bestimmter Items in Fahrzeugen verhindern
- Neuen Spieler-Inventaren bei der Erstellung Starter-Items hinzufügen
- Mülltonnen oder Stashes bei der Erstellung mit zufälligen Items vorbefüllen
API-Funktionen
Einen Hook registrieren
Parameter
Rückgabewert
Einen Hook deregistrieren
Parameter
Alle Hooks einer Resource deregistrieren
Parameter
Options-Parameter
Der Options-Parameter akzeptiert eine Table mit Filtern zur Performance-Optimierung.- Allgemein (alle Events)
- Inventar-Filter
- Übertragungs-Filter
Verfügbare Hook-Events
Hook-Verhalten
Priorität
Höhere Zahlen werden zuerst ausgeführt (Standard: 0)
Rückgabewerte
return nil oder return true: die Aktion wird fortgesetzt.return false, "message", "notifyType": verhindert die Aktion und stoppt die weitere Hook-Ausführung. Die Parameter message und notifyType sind optional (notifyType kann "error", "success", "info" sein)Ausnahme -
onPreOpenInventory: die Nachricht wird dem Spieler nicht angezeigt, weil das Vorladen sie wiederholen würde. Rufe notifyPlayer innerhalb des Hooks auf, wenn du dem Spieler den Grund mitteilen möchtest.ox_inventory-Kompatibilität
Wenn die ox_inventory-Kompatibilitätsressource installiert ist, wirdexports.ox_inventory:registerHook(...) in die obigen nativen Hooks übersetzt, sodass ox_inventory-Scripts ohne Änderungen funktionieren. Payloads werden in das ox-Format umgewandelt, und auch die ox-Optionsnamen (itemFilter, typeFilter, inventoryFilter, print) werden übersetzt.
Das Registrieren eines nicht unterstützten Hooks gibt eine Warnung aus und liefert
nil zurück, statt einen Fehler zu werfen.
Drei Unterschiede, die bei der Migration zu beachten sind:
- Ein ox-Hook kann nur erlauben oder blockieren; er kann keine eigene Nachricht oder Benachrichtigungsart liefern. Nutze dafür die nativen Hooks
openInventoryerbt die Anforderung der Zustandslosigkeit, die unteronPreOpenInventorybeschrieben ist- Spieler-Inventare werden unterschiedlich identifiziert. ox-Hooks erhalten die Server-ID des Spielers als number (
inventoryId = 4), passend zu ox_inventory. Native Hooks erhalten den Charakter-Identifier von jaksam als string (inventoryId = "char1:35030084..."). Jeder andere Inventartyp verwendet in beiden Fällen dieselbe string-ID
