Merkmale
- Verstecke (persönlich und/oder geteilt)
- Kofferraum und Handschuhfach
- Waffenaufsätze
- Geschäfte
- Gegenstandsabwürfe
Herunterladen
Dokumentation
Einführung
- Verwaltet den gesamten Speicher des Spielers wie persönliche Daten, Fahrzeuge, Verstecke, Drops
- qb-shops Integration zur Anzeige aller zum Kauf verfügbaren Artikel
- Integrierte Unterstützung für nutzbare Verkaufsautomaten
Alle aufgeführten Exporte sind nur SERVER, sofern nicht anders angegeben
Inventarstatus
Der Lagerbestand wird über State Bags kontrolliert, die den State Bag Namen haben: inv_busy
. Mit diesem Status können Sie steuern, ob das Inventar geöffnet werden kann oder nicht
Beispiel (Server):
Kopie
RegisterCommand('checkState', Funktion (Quelle) lokaler Spieler = Spieler (Quelle) lokaler Status = Spieler.Status.inv_busy drucken('Aktueller Status des Inventars ist', Status) Ende, wahr) RegisterCommand('lockInventory', Funktion (Quelle) lokaler Spieler = Spieler (Quelle) Spieler.Status.inv_busy = wahr drucken('Aktueller Status des Inventars ist', Status) Ende, wahr) RegisterCommand('unlockInventory', Funktion (Quelle) lokaler Spieler = Spieler (Quelle) Spieler.Status.inv_busy = falsch drucken('Aktueller Status des Inventars ist', Status) Ende, wahr)
Beispiel (Kunde):
Kopie
RegisterCommand('Inventar sperren', Funktion() LocalPlayer.state:set('inv_busy', true, true) Ende, false) RegisterCommand('Inventar entsperren', Funktion() LocalPlayer.state:set('inv_busy', false, true) Ende, false)
Artikelinformationen
Sie können SetItemData verwenden, um dies zu erreichen
Artikel unterstützen zusätzliche Informationen, die ihnen über einen Info
Attribut. Diese Informationen werden auf dem Gegenstand angezeigt, wenn der Spieler mit der Maus darüber fährt, in einem Schlüssel-Wert-Paarformat
Beispiel:
Kopie
RegisterCommand('addItemWithInfo', Funktion(Quelle, Argumente) lokaler ItemName = Argumente[1] wenn nicht ItemName, dann returniere Ende lokale Info = { uniqueData1 = 'uniqueData1', uniqueData2 = 'uniqueData2', uniqueData3 = 'uniqueData3', uniqueData4 = 'uniqueData4', } exports['qb-inventory']:AddItem(Quelle, ItemName, 1, false, Info, 'qb-inventory:testAdd') Ende, true) RegisterCommand('editItemWithInfo', Funktion(Quelle) lokaler Player = QBCore.Functions.GetPlayer(Quelle) wenn nicht Player, dann returniere Ende lokale Items = Player.PlayerData.items lokale ItemInfo = Items[1] print(json.encode(itemInfo, { indent = true })) itemInfo.info = { newInfo = 'Neue Info' } print(json.encode(itemInfo, { indent = true })) Elemente[1] = Elementinfo Player.Functions.SetPlayerData('Elemente', Elemente) Ende, true)
Lagerbestand laden
Diese Funktion ruft das Inventar des Spielers aus der Datenbank über seine eindeutige Kennung ab, auch bekannt als BürgerID
Kopie
Exporte['qb-inventory']:LoadInventory(Quelle, Bürger-ID)
- Quelle:
Nummer
- Bürger-ID:
Schnur
- Rückgabewerte:
Tisch
Kopie
RegisterCommand('getInv', Funktion (Quelle) lokaler Player = QBCore.Functions.GetPlayer(Quelle) lokale citizenId = Player.PlayerData.citizenid lokale Elemente = Exporte['qb-inventory']:LoadInventory(Quelle, citizenid) drucken(json.encode(items, { indent = true })) Ende)
Inventar speichern
Diese Funktion speichert die aktuellen Gegenstände des Spielers in der DatenbankKopieren
Exporte['qb-inventory']:SaveInventory(Quelle, offline)
- Quelle:
Nummer
- offline:
Boolescher Wert
Beispiel:
Kopie
RegisterCommand('saveInv', Funktion(Quelle) exportiert['qb-inventory']:SaveInventory(Quelle, false) Ende)
Inventar löschen
Kopie
Exporte['qb-inventory']:ClearInventory(Quelle, Filterelemente)
- Quelle:
Nummer
- filterItems:
Zeichenfolge | Tabelle
Beispiel: Kopieren
RegisterCommand('clearInventoryExcludeItem', Funktion (Quelle, Argumente) lokales FilterItem = Argumente[1] wenn nicht FilterItem dann returniere Ende Exporte['qb-inventory']:ClearInventory(Quelle, FilterItem) drucken('Inventar für Spieler '..Quelle..' gelöscht, ausgenommen Item: '..FilterItem) Ende, wahr) RegisterCommand('clearInventoryExcludeItems', Funktion (Quelle) lokale FilterItems = {'Item1', 'Item2'} Exporte['qb-inventory']:ClearInventory(Quelle, FilterItems) drucken('Inventar für Spieler '..Quelle..' gelöscht, ausgenommen Items: '..Tabelle.concat(FilterItems, ', ')) Ende, wahr)
Lagerbestand schließen
Kopie
exports['qb-inventory']:CloseInventory(Quelle, Kennung)
- Quelle:
Nummer
- Kennung:
Schnur
Beispiel: Kopieren
RegisterCommand('closeInventory', Funktion (Quelle) exportiert['qb-inventory']:CloseInventory(Quelle) drucken('Inventar für Spieler '..source' geschlossen) Ende, wahr) RegisterCommand('closeInventoryByName', Funktion (Quelle, Kennung) exportiert['qb-inventory']:CloseInventory(Quelle, Kennung) drucken('Inventar für Spieler '..source..' geschlossen und Inventar '..kennung..' auf geschlossen gesetzt') Ende, wahr)
Offenes Inventar
Kopie
exports['qb-inventory']:OpenInventory(Quelle, Kennung, Daten)
- Quelle:
Nummer
- Kennung:
Zeichenfolge | optional
- Daten:
Tabelle | optional
Beispiel:
Kopie
RegisterCommand('openinv', Funktion(Quelle) exportiert['qb-inventory']:OpenInventory(Quelle) Ende, wahr) RegisterCommand('openinvbyname', Funktion(Quelle, Argumente) lokaler Bestandsname = Argumente[1] exportiert['qb-inventory']:OpenInventory(Quelle, Bestandsname) Ende, wahr) RegisterCommand('openinvbynamewithdata', Funktion(Quelle, Argumente) lokaler Bestandsname = Argumente[1] lokale Daten = { Bezeichnung = 'Custom Stash', max. Gewicht = 400000, Slots = 500 } exportiert['qb-inventory']:OpenInventory(Quelle, Bestandsname, Daten) Ende, wahr)
Öffnen SieInventoryById
Kopie
Exporte['qb-inventory']:OpenInventoryById(Quelle, Spieler-ID)
- Quelle:
Nummer
- Spieler-ID:
Nummer
Beispiel:
Kopie
RegisterCommand('openplayerinv', Funktion(Quelle, Argumente) lokale Spieler-ID = Zielnummer(Argumente[1]) exportiert['qb-inventory']:OpenInventoryById(Quelle, Spieler-ID) Ende, wahr)
Öffnen SieInventoryById
schließt das Inventar des Zielspielers (falls geöffnet) und sperrt es über den Status. Es wird dann entsperrt, wenn der öffnende Spieler es schließt
Shop erstellen
Kopie
Exporte['qb-inventory']:CreateShop(shopData)
- ShopDaten:
Tisch
Kopie
lokale Artikel = { { Name = „Sandwich“, Menge = 10, Preis = 5 } } RegisterCommand(„createShop“, Funktion (Quelle) lokaler SpielerPed = GetPlayerPed(Quelle) lokale SpielerKoordinaten = GetEntityCoords(SpielerPed) Exporte[„qb-inventory“]:CreateShop({ Name = „TestShop“, Bezeichnung = „Test Shop“, Koordinaten = SpielerKoordinaten, -- optionale Slots = #items, Artikel = Artikel }) Ende, wahr)
Koordinaten werden weitergegeben an Shop erstellen
wird mit den aktuellen Koordinaten des Spielers verglichen, wenn OpenShop
wird aufgerufen, wenn Koordinaten angegeben wurden während Shop erstellen
OpenShop
Kopie
Exporte['qb-inventory']:OpenShop(Quelle, Name)
- Quelle:
Nummer
- Name:
Schnur
Kopie
RegisterCommand('openShop', Funktion(Quelle) exportiert['qb-inventory']:OpenShop(Quelle, 'testShop') Ende)
KannArtikelHinzufügen
Kopie
exports['qb-inventory']:CanAddItem(Quelle, Artikel, Menge)
- Quelle:
Nummer
- Artikel:
Schnur
- Menge:
Nummer
- Rückgabewerte:
Boolescher Wert
Beispiel: Kopieren
RegisterCommand('canAddItem', function(source, args) local itemName = args[1] local amount = tonumber(args[2]) if not itemName or not amount then return end local canAdd, reason = exports['qb-inventory']:CanAddItem(source, itemName, amount) if canAdd then print('Kann '..amount..' von Artikel '..itemName' hinzufügen) else print('Kann '..amount..' von Artikel '..itemName..' nicht hinzufügen. Grund: '..reason) end end, true)
Artikel hinzufügen
Kopie
exports['qb-inventory']:AddItem(Kennung, Artikel, Menge, Slot, Info, Grund)
- Kennung:
Nummer
- Artikel:
Schnur
- Menge:
Nummer
- Slot:
Zahl | Boolesch
- Info:
Tabelle | Boolesch
- Grund:
Schnur
- Rückgabewerte:
Boolescher Wert
Beispiel:
Kopie
RegisterCommand('addItem', Funktion (Quelle, Argumente) lokaler Itemname = Argumente[1] wenn nicht Itemname, dann zurückgeben Ende Exporte['qb-inventory']:AddItem(Quelle, Itemname, 1, falsch, falsch, 'qb-inventory:testAdd') Ende, wahr)
Entfernen
Kopie
exports['qb-inventory']:RemoveItem(Kennung, Artikel, Menge, Slot, Grund)
- Kennung:
Nummer
- Artikel:
Schnur
- Menge:
Nummer
- Slot:
Zahl | Boolesch
- Grund:
Schnur
- Rückgabewerte:
Boolescher Wert
Kopie
RegisterCommand('removeItem', Funktion (Quelle, Argumente) lokaler Itemname = Argumente[1] wenn nicht Itemname, dann zurückgeben, Ende Exporte['qb-inventory']:RemoveItem(Quelle, Itemname, 1, falsch, 'qb-inventory:testRemove') Ende, wahr)
Inventar festlegen
Kopie
Exporte['qb-inventory']:SetInventory(Quelle, Artikel)
- Quelle:
Nummer
- Artikel:
Tisch
Beispiel: Kopieren
RegisterCommand('setInventory', Funktion (Quelle) lokale Artikel = { { Name = 'Sandwich', Menge = 10, Typ = 'Artikel', Info = {}, Steckplatz = 1 }, { Name = 'Wasserflasche', Menge = 10, Typ = 'Artikel', Info = {}, Steckplatz = 2 } } exportiert['qb-inventory']:SetInventory(Quelle, Artikel) Ende, wahr)
SetItemData
Diese Funktion verwendet GetItemByName, um den übergebenen itemName zu findenCopy
exporte['qb-inventory']:SetItemData(Quelle, Artikelname, Schlüssel, Wert)
- Quelle:
Nummer
- Artikelname:
Schnur
- Schlüssel:
Schnur
- Wert:
Zeichenfolge | Tabelle
- Rückgabewerte:
Boolescher Wert
Beispiel: Kopieren
RegisterCommand('setItemData', function(source, args) local itemName = args[1] local key = args[2] local val = args[3] if not itemName or not key or not val then return end local success = exports['qb-inventory']:SetItemData(source, itemName, key, val) if success then print('Daten für Artikel '..itemName..' festlegen: '..key..' = '..val) else print('Daten für Artikel '..itemName' konnten nicht festgelegt werden) end end, true)
Beispiel für Artikelinformationen:
Kopie
RegisterCommand('setItemData', function(source) local itemName = 'markedbills' local key = 'info' local val = {worth = 1000 } wenn nicht itemName oder nicht key oder nicht val dann returniere end local success = exports['qb-inventory']:SetItemData(source, itemName, key, val) wenn erfolgreich dann drucke('Daten für Artikel '..itemName..' festlegen: '..key..' = '..json.encode(val, {indent = true })) sonst drucke('Daten für Artikel '..itemName' konnten nicht festgelegt werden) end end, true)
Artikel verwenden
Kopie
Exporte['qb-inventory']:UseItem(itemName, ...)
- Artikelname:
Schnur
- . . . :
Funktion
Beispiel: Kopieren
RegisterCommand('useItem', function(source, args) local itemName = args[1] if not itemName then return end exports['qb-inventory']:Useitem(itemName, function() print('Gebrauchter Artikel mit dem Namen '..itemName) end) end, true)
HatArtikel
Dieser Export ist auch auf dem Client verfügbar.
exports['qb-inventory']:HasItem(Quelle, Artikel, Menge)
- Quelle:
Nummer
- Artikel:
Zeichenfolge | Tabelle
- Menge:
Nummer
- Rückgabewerte:
Boolescher Wert
Beispiel: Kopieren
RegisterCommand('hasSingleItem', Funktion (Quelle) lokales Item = 'Item1' lokale Menge = 5 lokales hasItem = exports['qb-inventory']:HasItem(Quelle, Item, Menge) wenn hasItem dann drucken('Player '..source..' hat '..Menge..' von '..Item') sonst drucken('Player '..source..' hat nicht '..Menge..' von '..Item') Ende Ende, true) RegisterCommand('hasMultipleItems', Funktion (Quelle) lokale Items = {'Item1', 'Item2'} lokale Menge = 5 lokale hasItems = exports['qb-inventory']:HasItem(Quelle, Items, Menge) wenn hasItems dann drucken('Player '..source..' hat '..Menge..' von jedem Item: '..table.concat(Items, ', ')) sonst drucken('Player '..source..' hat nicht '..amount..' von jedem Gegenstand haben: '..table.concat(items, ', ')) end end, true) RegisterCommand('hasMultipleItemsWithAmounts', function(source) local itemsWithAmounts = {item1 = 5, item2 = 10} local hasItemsWithAmounts = exports['qb-inventory']:HasItem(source, itemsWithAmounts) if hasItemsWithAmounts then print('Player '..source..' hat die angegebenen Gegenstände mit ihren Mengen') else print('Player '..source..' hat die angegebenen Gegenstände mit ihren Mengen nicht') end end, true)
SlotsByItem abrufen
Kopie
exporte['qb-inventory']:GetSlotsByItem(Artikel, Artikelname)
- Artikel:
Tisch
- Artikelname:
Schnur
- Rückgabewerte:
Tisch
Beispiel: Kopieren
RegisterCommand('getSlots', Funktion (Quelle, Argumente) lokaler ItemName = Argumente[1] wenn nicht ItemName, dann returniere Ende lokaler Player = QBCore.Functions.GetPlayer(Quelle) lokale Items = Player.PlayerData.Items lokale Slots = Exporte['qb-inventory']:GetSlotsByItem(Items, ItemName) für _, Slot in ipairs(Slots) mache Drucken(Slot) Ende Ende, true)
GetFirstSlotByItem
Kopie
exporte['qb-inventory']:GetFirstSlotByItem(Artikel, Artikelname)
- Artikel:
Tisch
- Artikelname:
Schnur
- Rückgabewerte:
Nummer
Beispiel: Kopieren
RegisterCommand('getFirstSlot', Funktion (Quelle, Argumente) lokaler ItemName = Argumente[1] wenn nicht ItemName, dann returniere Ende lokaler Player = QBCore.Functions.GetPlayer(Quelle) lokale Items = Player.PlayerData.Items lokaler Slot = Exporte['qb-inventory']:GetFirstSlotByItem(Items, ItemName) wenn Slot, dann drucke('Erster Slot mit Item '..itemName..' ist: '..slot) sonst drucke('Kein Slot mit Item '..itemName' gefunden) Ende Ende, true)
GetItemBySlot
Kopie
Exporte['qb-inventory']:GetItemBySlot(Quelle, Slot)
- Quelle:
Nummer
- Slot:
Nummer
- Rückgabewerte:
Tisch
Beispiel: Kopieren
RegisterCommand('getItem', Funktion (Quelle, Argumente) lokaler Slot = tonumber(Argumente[1]) wenn kein Slot, dann returniere Ende lokaler Artikel = Exporte['qb-inventory']:GetItemBySlot(Quelle, Slot) wenn Artikel, dann drucke('Artikel in Slot '..slot..' ist: '..item.name) sonst drucke('Kein Artikel in Slot '..slot' gefunden) Ende Ende, true)
GetItemByName
Exporte['qb-inventory']:GetItemByName(Quelle, Artikel)
- Quelle:
Nummer
- Artikel:
Schnur
- Rückgabewerte:
Tisch
RegisterCommand('getItemByName', Funktion (Quelle, Argumente) lokaler ItemName = Argumente[1] wenn nicht ItemName, dann returniere Ende lokaler Item = Exporte['qb-inventory']:GetItemByName(Quelle, ItemName) wenn Item, dann drucke('Erstes Vorkommen von Item '..itemName..' ist im Slot: '..item.slot') sonst drucke('Kein Item mit Namen '..itemName' gefunden) Ende Ende, true)
GetItemsByName
exporte['qb-inventory']:GetItemsByName(Quelle, Artikel)
- Quelle:
Nummer
- Artikel:
Schnur
- Rückgabewerte:
Tisch
Beispiel: Kopieren
RegisterCommand('getItemsByName', Funktion (Quelle, Argumente) lokaler ItemName = Argumente[1] wenn nicht ItemName, dann returniere Ende lokale Items = Exporte['qb-inventory']:GetItemsByName(Quelle, ItemName) wenn #items > 0, dann drucke('Items mit dem Namen '..itemName..' in Slots gefunden:') für _, Item in ipairs(Items) drucke(Item.Slot) Ende, sonst drucke('Keine Items mit dem Namen '..itemName' gefunden) Ende Ende, true)
GetItemCount
exporte['qb-inventory']:GetItemCount(Quelle, Artikel)
- Quelle:
Nummer
- Artikel:
Zeichenfolge | Tabelle
- Rückgabewerte:
Nummer
Beispiel: Kopieren
RegisterCommand('getItemCount', Funktion (Quelle, Argumente) lokaler Artikelname = Argumente[1] wenn nicht Artikelname, dann returniere Ende lokaler Artikelanzahl = Exporte['qb-Inventar']:GetItemCount(Quelle, Artikelname) wenn Artikelanzahl und Artikelanzahl > 0, dann drucke('Sie haben '..itemCount..' des Artikels: '..itemName') sonst drucke('Keine Artikel mit dem Namen '..itemName' gefunden) Ende Ende, wahr) RegisterCommand('getItemCounts', Funktion (Quelle) lokale Artikelnamen = {"Apfel", "Banane", "Orange"} lokaler Artikelanzahl = Exporte['qb-Inventar']:GetItemCount(Quelle, Artikelnamen) wenn Artikelanzahl und Artikelanzahl > 0, dann drucke('Sie haben '..itemCount..' der Artikel: '..table.concat(Artikelnamen, ", ")) sonst drucke('Keine Artikel mit den Namen gefunden: '..table.concat(itemNames, “, “)) Ende Ende, true)
Installation
Handbuch
- Laden Sie das Skript herunter und fügen Sie es in die
[qb]
Verzeichnis. - Import
qb-inventory.sql
in Ihrer Datenbank - Fügen Sie den folgenden Code zu Ihrer server.cfg/resouces.cfg hinzu
Migration vom alten qb-inventory
Datenbank
Laden Sie die neue Bestandsaufnahme.sql
Datei zum Erstellen der neuen Vorräte
Tisch
Verwenden Sie die bereitgestellten migrieren.sql
Datei zum Migrieren aller Ihrer gespeicherten Inventardaten aus Verstecken, Truhen usw.
Sobald Sie fertig sind, können Sie löschen Handschuhfachartikel
Abonnieren
und Koffergegenstände
Tabellen aus Ihrer Datenbank
TABELLE ERSTELLEN, WENN `Inventare` NICHT VORHANDEN SIND ( `id` INT(11) NICHT NULL AUTO_INCREMENT, `Bezeichner` VARCHAR(50) NICHT NULL, `Artikel` LONGTEXT DEFAULT ('[]'), PRIMARY KEY (`Bezeichner`), KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;