qbcore-framework/inventaire-qb

Inventaire de QBcore

Caractéristiques

  • Cachettes (personnelles et/ou partagées)
  • Coffre et boîte à gants du véhicule
  • Accessoires d'armes
  • Boutiques
  • Objets lâchés

Télécharger

Documentation

Introduction

  • Gère tout le stockage du joueur, comme le stockage personnel, le véhicule, la réserve et les largages
  • boutiques qb intégration pour afficher tous les articles disponibles à l'achat
  • Prise en charge intégrée des distributeurs automatiques utilisables

Toutes les exportations répertoriées sont réservées au SERVEUR, sauf indication contraire

État de l'inventaire

L'état de l'inventaire est contrôlé via des sacs d'état utilisant un nom de sac d'état de inv_busy. Vous pouvez utiliser cet état pour contrôler si l'inventaire doit pouvoir être ouvert ou non

Exemple (serveur) :

Copie

RegisterCommand('checkState', function(source) local player = Player(source) local state = player.state.inv_busy print('L'état actuel de l'inventaire est', state) end, true) RegisterCommand('lockInventory', function(source) local player = Player(source) player.state.inv_busy = true print('L'état actuel de l'inventaire est', state) end, true) RegisterCommand('unlockInventory', function(source) local player = Player(source) player.state.inv_busy = false print('L'état actuel de l'inventaire est', state) end, true)

Exemple (client) :

Copie

RegisterCommand('lockInventory', function() LocalPlayer.state:set('inv_busy', true, true) fin, false) RegisterCommand('unlockInventory', function() LocalPlayer.state:set('inv_busy', false, true) fin, false)

Informations sur l'article

Vous pouvez utiliser SetItemData pour y parvenir

Les éléments prennent en charge des informations supplémentaires qui peuvent leur être ajoutées via un informations attribut. Ces informations s'afficheront sur l'élément lorsque le joueur passera dessus dans un format de paire clé/valeur

Exemple:

Copie

RegisterCommand('addItemWithInfo', function(source, args) local itemName = args[1] si ce n'est pas itemName alors renvoie fin local info = { uniqueData1 = 'uniqueData1', uniqueData2 = 'uniqueData2', uniqueData3 = 'uniqueData3', uniqueData4 = 'uniqueData4', } exportations['qb-inventory']:AddItem(source, itemName, 1, false, info, 'qb-inventory:testAdd') fin, true) RegisterCommand('editItemWithInfo', function(source) local Player = QBCore.Functions.GetPlayer(source) si ce n'est pas Player alors renvoie fin local éléments = Player.PlayerData.items local itemInfo = éléments[1] print(json.encode(itemInfo, { indent = true })) itemInfo.info = { newInfo = 'Nouvelles informations' } print(json.encode(itemInfo, { indent = vrai })) éléments[1] = itemInfo Player.Functions.SetPlayerData('éléments', éléments) fin, vrai)

Charger l'inventaire

Cette fonction récupérera l'inventaire des joueurs de la base de données via leur identifiant unique, également appelé citoyenCopie

exportations['qb-inventory']:LoadInventory(source, citizenid)
  • source: nombre
  • citoyenid: chaîne
  • retours: tableau

Copie

RegisterCommand('getInv', function(source) local Player = QBCore.Functions.GetPlayer(source) local citizenId = Player.PlayerData.citizenid local items = exportations['qb-inventory']:LoadInventory(source, citizenid) print(json.encode(items, { indent = true })) fin)

EnregistrerInventaire

Cette fonction enregistre les éléments actuels des joueurs dans la base de donnéesCopier

exportations['qb-inventory']:SaveInventory(source, hors ligne)
  • source: nombre
  • hors ligne: booléen

Exemple:

Copie

RegisterCommand('saveInv', function(source) exportations['qb-inventory']:SaveInventory(source, false) fin)

Effacer l'inventaire

Copie

exportations['qb-inventory']:Effacer l'inventaire(source, éléments de filtre)
  • source: nombre
  • Éléments de filtre : chaîne | tableau

Exemple : Copier

RegisterCommand('clearInventoryExcludeItem', function(source, args) local filterItem = args[1] if not filterItem then return end exportations['qb-inventory']:ClearInventory(source, filterItem) print('Inventaire effacé pour le joueur '..source..', à l'exclusion des éléments : '..filterItem) fin, true) RegisterCommand('clearInventoryExcludeItems', function(source) local filterItems = {'item1', 'item2'} exportations['qb-inventory']:ClearInventory(source, filterItems) print('Inventaire effacé pour le joueur '..source..', à l'exclusion des éléments : '..table.concat(filterItems, ', ')) fin, true)

FermerInventaire

Copie

exportations['qb-inventory']:CloseInventory(source, identifiant)
  • source: nombre
  • identifiant: chaîne

Exemple : Copier

RegisterCommand('closeInventory', function(source) exportations['qb-inventory']:CloseInventory(source) print('Inventaire fermé pour le joueur '..source..' et inventaire '..identifier..' défini sur fermé') fin, true)

Inventaire ouvert

Copie

exportations['qb-inventory']:OpenInventory(source, identifiant, données)
  • source: nombre
  • identifiant: chaîne | facultatif
  • données: tableau | optionnel

Exemple:

Copie

RegisterCommand('openinv', function(source) exportations['qb-inventory']:OpenInventory(source) fin, true) RegisterCommand('openinvbyname', function(source, args) inventaire localName = args[1] exportations['qb-inventory']:OpenInventory(source, inventaireName) fin, true) RegisterCommand('openinvbynamewithdata', function(source, args) inventaire localName = args[1] données locales = { label = 'Réserve personnalisée', poids maximal = 400000, emplacements = 500 } exportations['qb-inventory']:OpenInventory(source, inventaireName, données) fin, true)

Ouvrir l'inventaire par identifiant

Copie

exportations['qb-inventory']:OpenInventoryById(source, playerId)
  • source: nombre
  • ID joueur : nombre

Exemple:

Copie

RegisterCommand('openplayerinv', function(source, args) local playerId = tonumber(args[1]) exportations['qb-inventory']:OpenInventoryById(source, playerId) fin, vrai)

Ouvrir l'inventaire par identifiant fermera l'inventaire du joueur cible (s'il est ouvert) et le verrouillera via l'état. Il se déverrouillera ensuite lorsque le joueur qui l'ouvre le fermera

Créer une boutique

Copie

exportations['qb-inventory']:CreateShop(shopData)
  • données de la boutique: tableau

Copie

articles locaux = { { nom = 'sandwich', montant = 10, prix = 5 } } RegisterCommand('createShop', fonction(source) local playerPed = GetPlayerPed(source) local playerCoords = GetEntityCoords(playerPed) exportations['qb-inventory']:CreateShop({ nom = 'testShop', étiquette = 'Test Shop', coords = playerCoords, -- emplacements facultatifs = #items, articles = articles }) fin, vrai)

Coordonnées transmises à créerBoutique sera vérifié par rapport aux coordonnées actuelles du joueur lorsque Boutique ouverteest appelé si les coordonnées ont été fournies pendant créerBoutique

Boutique ouverte

Copie

exportations['qb-inventory']:OpenShop(source, nom)
  • source: nombre
  • nom: chaîne

Copie

RegisterCommand('openShop', function(source) exportations['qb-inventory']:OpenShop(source, 'testShop') fin)

PeutAjouterUnArticle

Copie

exportations['qb-inventory']:CanAddItem(source, article, montant)
  • source: nombre
  • article: chaîne
  • montant: nombre
  • retours: booléen

Exemple : Copier

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('Peut ajouter '..amount..' de l'article '..itemName) else print('Impossible d'ajouter '..amount..' de l'article '..itemName..'. Reason: '..reason) end end, true)

Ajouter un article

Copie

exportations['qb-inventory']:AddItem(identifiant, article, montant, emplacement, informations, raison)
  • identifiant: nombre
  • article: chaîne
  • montant: nombre
  • fente: nombre | booléen
  • info: tableau | booléen
  • raison: chaîne
  • retours: booléen

Exemple:

Copie

RegisterCommand('addItem', function(source, args) local itemName = args[1] si ce n'est pas itemName alors renvoie fin exportations['qb-inventory']:AddItem(source, itemName, 1, false, false, 'qb-inventory:testAdd') fin, true)

Supprimer l'élément

Copie

exportations['qb-inventory']:RemoveItem(identifiant, article, montant, emplacement, raison)
  • identifiant: nombre
  • article: chaîne
  • montant: nombre
  • fente: nombre | booléen
  • raison: chaîne
  • retours: booléen

Copie

RegisterCommand('removeItem', function(source, args) local itemName = args[1] si ce n'est pas itemName alors renvoie fin exportations['qb-inventory']:RemoveItem(source, itemName, 1, false, 'qb-inventory:testRemove') fin, true)

Définir l'inventaire

Copie

exportations['qb-inventory']:SetInventory(source, éléments)
  • source: nombre
  • articles: tableau

Exemple : Copier

RegisterCommand('setInventory', function(source) local items = { { nom = 'sandwich', quantité = 10, type = 'item', info = {}, emplacement = 1 }, { nom = 'water_bottle', quantité = 10, type = 'item', info = {}, emplacement = 2 } } exportations['qb-inventory']:SetInventory(source, items) fin, vrai)

Définir les données de l'élément

Cette fonction utilise GetItemByName pour trouver l'élémentName transmisCopy

exportations['qb-inventory']:SetItemData(source, itemName, clé, val)
  • source: nombre
  • Nom de l'élément: chaîne
  • clé: chaîne
  • valeur: chaîne | tableau
  • retours: booléen

Exemple : Copier

RegisterCommand('setItemData', function(source, args) local itemName = args[1] local key = args[2] local val = args[3] si ce n'est pas itemName ou pas key ou pas val alors renvoie end local success = exports['qb-inventory']:SetItemData(source, itemName, key, val) si succès alors print('Définir les données pour l'élément '..itemName..': '..key..' = '..val) else print('Échec de la définition des données pour l'élément '..itemName) end end, true)

Exemple d'informations sur l'article :

Copie

RegisterCommand('setItemData', function(source) local itemName = 'markedbills' local key = 'info' local val = { worth = 1000 } si ce n'est pas itemName ou pas key ou pas val alors renvoie fin local success = exportations['qb-inventory']:SetItemData(source, itemName, key, val) si succès alors print('Définir les données pour l'élément '..itemName..': '..key..' = '..json.encode(val, { indent = true })) else print('Échec de la définition des données pour l'élément '..itemName) fin fin, true)

Utiliser l'élément

Copie

exportations['qb-inventory']:UseItem(nom_élément, ...)
  • Nom de l'élément: chaîne
  • . . . : fonction

Exemple : Copier

RegisterCommand('useItem', function(source, args) local itemName = args[1] si ce n'est pas itemName alors renvoie fin exportations['qb-inventory']:Useitem(itemName, function() print('Article utilisé avec le nom de '..itemName) fin) fin, vrai)

A un article

Cette exportation est également disponible pour une utilisation sur le clientCopier

exportations['qb-inventory']:HasItem(source, articles, quantité)
  • source: nombre
  • articles: chaîne | tableau
  • montant: nombre
  • retours: booléen

Exemple : Copier

RegisterCommand('hasSingleItem', function(source) local item = 'item1' local amount = 5 local hasItem = exports['qb-inventory']:HasItem(source, item, amount) if hasItem then print('Le joueur '..source..' a '..amount..' de '..item) else print('Le joueur '..source..' n'a pas '..amount..' de '..item) end end, true) RegisterCommand('hasMultipleItems', function(source) local items = {'item1', 'item2'} local amount = 5 local hasItems = exports['qb-inventory']:HasItem(source, items, amount) if hasItems then print('Le joueur '..source..' a '..amount..' de chaque article : '..table.concat(items, ', ')) else print('Le joueur '..source..' n'a pas '..quantité..' de chaque élément : '..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('Le joueur '..source..' a les éléments spécifiés avec leurs montants') else print('Le joueur '..source..' n'a pas les éléments spécifiés avec leurs montants') end end, true)

Obtenir des emplacements par article

Copie

exportations['qb-inventory']:GetSlotsByItem(éléments, nom de l'élément)
  • articles: tableau
  • Nom de l'élément: chaîne
  • retours: tableau

Exemple : Copier

RegisterCommand('getSlots', function(source, args) local itemName = args[1] si ce n'est pas itemName alors renvoie fin local Player = QBCore.Functions.GetPlayer(source) local items = Player.PlayerData.Items local slots = exportations['qb-inventory']:GetSlotsByItem(items, itemName) pour _, slot dans ipairs(slots) faire print(slot) fin fin, vrai)

Obtenir le premier emplacement par élément

Copie

exportations['qb-inventory']:GetFirstSlotByItem(éléments, nom de l'élément)
  • articles: tableau
  • Nom de l'élément: chaîne
  • retours: nombre

Exemple : Copier

RegisterCommand('getFirstSlot', function(source, args) local itemName = args[1] si ce n'est pas itemName alors renvoie fin local Player = QBCore.Functions.GetPlayer(source) local items = Player.PlayerData.Items local slot = exports['qb-inventory']:GetFirstSlotByItem(items, itemName) si slot alors print('Le premier emplacement contenant l'élément '..itemName..' est : '..slot) else print('Aucun emplacement trouvé contenant l'élément '..itemName) fin fin, vrai)

Obtenir un élément par emplacement

Copie

exportations['qb-inventory']:GetItemBySlot(source, emplacement)
  • source: nombre
  • fente: nombre
  • retours: tableau

Exemple : Copier

RegisterCommand('getItem', function(source, args) local slot = tonumber(args[1]) if not slot then return end local item = exports['qb-inventory']:GetItemBySlot(source, slot) if item then print('L'élément dans l'emplacement '..slot..' est : '..item.name) else print('Aucun élément trouvé dans l'emplacement '..slot) end end, true)

Obtenir l'élément par nom

exportations['qb-inventory']:GetItemByName(source, élément)
  • source: nombre
  • article: chaîne
  • retours: tableau
RegisterCommand('getItemByName', function(source, args) local itemName = args[1] if not itemName then return end local item = exports['qb-inventory']:GetItemByName(source, itemName) if item then print('La première occurrence de l'élément '..itemName..' est dans l'emplacement : '..item.slot) else print('Aucun élément trouvé avec le nom '..itemName) end end, true)

Obtenir des éléments par nom

exportations['qb-inventory']:GetItemsByName(source, élément)
  • source: nombre
  • article: chaîne
  • retours: tableau

Exemple : Copier

RegisterCommand('getItemsByName', function(source, args) local itemName = args[1] if not itemName then return end local items = exports['qb-inventory']:GetItemsByName(source, itemName) if #items > 0 then print('Articles nommés '..itemName..' trouvés dans les emplacements :') for _, item in ipairs(items) do print(item.slot) end else print('Aucun article trouvé avec le nom '..itemName) end end, true)

Obtenir le nombre d'éléments

exportations['qb-inventory']:GetItemCount(source, éléments)
  • source: nombre
  • articles: chaîne | tableau
  • retours: nombre

Exemple : Copier

RegisterCommand('getItemCount', function(source, args) local itemName = args[1] if not itemName then return end local itemCount = exports['qb-inventory']:GetItemCount(source, itemName) if itemCount and itemCount > 0 then print('Vous avez '..itemCount..' d'éléments : '..itemName) else print('Aucun élément trouvé avec le nom '..itemName) end end, true) RegisterCommand('getItemCounts', function(source) local itemNames = {“pomme”, “banane”, “orange”} local itemCount = exports['qb-inventory']:GetItemCount(source, itemNames) if itemCount and itemCount > 0 then print('Vous avez '..itemCount..' des éléments : '..table.concat(itemNames, “, “)) else print('Aucun élément trouvé avec les noms : '..table.concat(itemNames, “, “)) fin fin, vrai)

Installation

Manuel

  • Téléchargez le script et placez-le dans le [qb] répertoire.
  • Importer qb-inventaire.sql dans votre base de données
  • Ajoutez le code suivant à votre server.cfg/resouces.cfg

Migration depuis l'ancien inventaire qb

Base de données

Téléchargez le nouveau inventaire.sql fichier pour créer le nouveau inventaires tableau

Utilisez le fourni migrer.sql fichier pour migrer toutes vos données d'inventaire enregistrées à partir de réserves, de coffres, etc.

Une fois terminé, vous pouvez supprimer articles de boîte à gants objets de réserve et articles de coffre tables de votre base de données

CRÉER UNE TABLE SI ELLE N'EXISTE PAS `inventories` (`id` INT(11) NOT NULL AUTO_INCREMENT, `identifier` VARCHAR(50) NOT NULL, `items` LONGTEXT DEFAULT ('[]'), PRIMARY KEY (`identifier`), KEY `id` (`id`) ) MOTEUR=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

Licence

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *


Bénéficiez d'une remise de 20% sur tous les serveurs QBCore complets
fr_FRFrançais