qbcore-framework/qb-inventar

Qbcore-Inventar

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ürgerIDKopie

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 OpenShopwird 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;

Lizenz

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Erhalten Sie 20% Rabatt auf alle Full QBCore Server
de_DE_formalDeutsch (Sie)