qbcore-framework/qb-inventário

inventário qbcore

Características

  • Esconderijos (pessoais e/ou compartilhados)
  • Porta-malas e porta-luvas do veículo
  • Acessórios para armas
  • Lojas
  • Itens descartados

Baixar

Documentação

Introdução

  • Lida com todo o armazenamento do jogador, como itens pessoais, de veículo, estoque e itens descartados
  • lojas de qb integração para exibir todos os itens disponíveis para compra
  • Suporte integrado para máquinas de venda automática utilizáveis

Todas as exportações listadas são somente para SERVIDOR, a menos que especificado

Estado do inventário

O estado do inventário é controlado por meio de bolsas de estado usando um nome de bolsa de estado de inv_ocupado. Você pode usar este estado para controlar se o inventário deve ser aberto ou não

Exemplo (servidor):

Cópia

RegisterCommand('checkState', function(source) local player = Player(source) local state = player.state.inv_busy print('O estado atual do inventário é', state) end, true) RegisterCommand('lockInventory', function(source) local player = Player(source) player.state.inv_busy = true print('O estado atual do inventário é', state) end, true) RegisterCommand('unlockInventory', function(source) local player = Player(source) player.state.inv_busy = false print('O estado atual do inventário é', state) end, true)

Exemplo (cliente):

Cópia

RegisterCommand('lockInventory', função() LocalPlayer.state:set('inv_busy', verdadeiro, verdadeiro) fim, falso) RegisterCommand('unlockInventory', função() LocalPlayer.state:set('inv_busy', falso, verdadeiro) fim, falso)

Informações do item

Você pode usar SetItemData para conseguir isso

Os itens oferecem suporte a informações adicionais que podem ser adicionadas a eles por meio de um informação atributo. Essas informações serão exibidas no item quando o jogador passar o mouse sobre ele em um formato de par chave-valor

Exemplo:

Cópia

RegisterCommand('addItemWithInfo', function(source, args) local itemName = args[1] se não for itemName então retorne end local info = { uniqueData1 = 'uniqueData1', uniqueData2 = 'uniqueData2', uniqueData3 = 'uniqueData3', uniqueData4 = 'uniqueData4', } exports['qb-inventory']:AddItem(source, itemName, 1, false, info, 'qb-inventory:testAdd') end, true) RegisterCommand('editItemWithInfo', function(source) local Player = QBCore.Functions.GetPlayer(source) se não for Player então retorne end local items = Player.PlayerData.items local itemInfo = items[1] print(json.encode(itemInfo, { indent = true })) itemInfo.info = { newInfo = 'Nova informação' } print(json.encode(itemInfo, { indent = true })) itens[1] = itemInfo Player.Functions.SetPlayerData('itens', itens) fim, true)

CarregarInventário

Esta função recuperará o inventário dos jogadores do banco de dados por meio de seu identificador exclusivo, também conhecido como cidadãoidCópia

exports['qb-inventory']:LoadInventory(fonte, id do cidadão)
  • fonte: número
  • cidadãoid: corda
  • retorna: mesa

Cópia

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

SalvarInventário

Esta função salva os itens atuais dos jogadores no banco de dadosCopiar

exports['qb-inventory']:SaveInventory(fonte, offline)
  • fonte: número
  • desconectado: booleano

Exemplo:

Cópia

RegisterCommand('saveInv', função(fonte) exports['qb-inventory']:SaveInventory(fonte, falso) fim)

Limpar inventário

Cópia

exports['qb-inventory']:LimparInventário(fonte, filtrarItens)
  • fonte: número
  • Itens de filtro: corda | tabela

Exemplo:Copiar

RegisterCommand('clearInventoryExcludeItem', function(source, args) local filterItem = args[1] if not filterItem then return end exports['qb-inventory']:ClearInventory(source, filterItem) print('Inventário limpo para o jogador '..source..', excluindo o item: '..filterItem) end, true) RegisterCommand('clearInventoryExcludeItems', function(source) local filterItems = {'item1', 'item2'} exports['qb-inventory']:ClearInventory(source, filterItems) print('Inventário limpo para o jogador '..source..', excluindo os itens: '..table.concat(filterItems, ', ')) end, true)

FecharInventário

Cópia

exports['qb-inventory']:FecharInventário(fonte, identificador)
  • fonte: número
  • identificador: corda

Exemplo:Copiar

RegisterCommand('closeInventory', function(source) exports['qb-inventory']:CloseInventory(source) print('Inventário fechado para o jogador '..source) end, true) RegisterCommand('closeInventoryByName', function(source, identifier) exports['qb-inventory']:CloseInventory(source, identifier) print('Inventário fechado para o jogador '..source..' e inventário '..identifier..' definido como fechado') end, true)

Inventário aberto

Cópia

exports['qb-inventory']:OpenInventory(fonte, identificador, dados)
  • fonte: número
  • identificador: sequência | opcional
  • dados: tabela | opcional

Exemplo:

Cópia

RegisterCommand('openinv', função(fonte) exports['qb-inventory']:OpenInventory(fonte) fim, true) RegisterCommand('openinvbyname', função(fonte, argumentos) local inventoryName = args[1] exports['qb-inventory']:OpenInventory(fonte, inventoryName) fim, true) RegisterCommand('openinvbynamewithdata', função(fonte, argumentos) local inventoryName = args[1] local data = { label = 'Stash personalizado', maxweight = 400000, slots = 500 } exports['qb-inventory']:OpenInventory(fonte, inventoryName, dados) fim, true)

Inventário aberto por ID

Cópia

exports['qb-inventory']:OpenInventoryById(fonte, playerId)
  • fonte: número
  • playerId: número

Exemplo:

Cópia

RegisterCommand('openplayerinv', função(fonte, argumentos) playerId local = tonumber(args[1]) exports['qb-inventory']:OpenInventoryById(fonte, playerId) fim, verdadeiro)

Inventário aberto por ID fechará o inventário do jogador alvo (se aberto) e o bloqueará via estado. Ele então desbloqueará quando o jogador de abertura o fechar

CriarLoja

Cópia

exportações['qb-inventory']:CreateShop(shopData)
  • Dados da loja: mesa

Cópia

itens locais = { { nome = 'sanduíche', quantidade = 10, preço = 5 } } RegisterCommand('createShop', função(fonte) playerPed local = GetPlayerPed(fonte) playerCoords local = GetEntityCoords(playerPed) exports['qb-inventory']:CreateShop({ nome = 'testShop', rótulo = 'Test Shop', coords = playerCoords, -- slots opcionais = #items, itens = itens }) fim, verdadeiro)

Coordenadas sendo passadas para criarLoja será verificado em relação às coordenadas atuais do jogador quando Loja abertaé chamado se as coordenadas foram fornecidas durante criarLoja

Loja aberta

Cópia

exports['qb-inventory']:OpenShop(fonte, nome)
  • fonte: número
  • nome: corda

Cópia

RegisterCommand('openShop', função(fonte) exports['qb-inventory']:OpenShop(fonte, 'testShop') fim)

PodeAdicionarItem

Cópia

exports['qb-inventory']:CanAddItem(fonte, item, quantidade)
  • fonte: número
  • item: corda
  • quantia: número
  • retorna: booleano

Exemplo:Copiar

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('Pode adicionar '..quantidade..' do item '..itemName) else print('Não é possível adicionar '..quantidade..' do item '..itemName..'. Motivo: '..reason) end end, true)

AdicionarItem

Cópia

exports['qb-inventory']:AddItem(identificador, item, quantidade, slot, informação, motivo)
  • identificador: número
  • item: corda
  • quantia: número
  • slot: número | booleano
  • informação: tabela | booleano
  • razão: corda
  • retorna: booleano

Exemplo:

Cópia

RegisterCommand('addItem', function(source, args) local itemName = args[1] se não for itemName então retorne fim exports['qb-inventory']:AddItem(source, itemName, 1, false, false, 'qb-inventory:testAdd') fim, verdadeiro)

RemoverItem

Cópia

exports['qb-inventory']:RemoveItem(identificador, item, quantidade, slot, motivo)
  • identificador: número
  • item: corda
  • quantia: número
  • slot: número | booleano
  • razão: corda
  • retorna: booleano

Cópia

RegisterCommand('removeItem', function(source, args) local itemName = args[1] se não for itemName então retorne fim exports['qb-inventory']:RemoveItem(source, itemName, 1, false, 'qb-inventory:testRemove') fim, verdadeiro)

DefinirInventário

Cópia

exports['qb-inventory']:SetInventory(fonte, itens)
  • fonte: número
  • Unid: mesa

Exemplo:Copiar

RegisterCommand('setInventory', function(source) itens locais = { { nome = 'sanduíche', quantidade = 10, tipo = 'item', info = {}, slot = 1 }, { nome = 'garrafa_de_água', quantidade = 10, tipo = 'item', info = {}, slot = 2 } } exports['qb-inventory']:SetInventory(source, itens) fim, true)

Definir dados do item

Esta função usa GetItemByName para encontrar o itemName que está sendo passadoCopy

exports['qb-inventory']:SetItemData(fonte, itemName, chave, val)
  • fonte: número
  • Nome do item: corda
  • chave: corda
  • valor: corda | tabela
  • retorna: booleano

Exemplo:Copiar

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('Definir dados para o item '..itemName..': '..key..' = '..val) else print('Falha ao definir dados para o item '..itemName) end end, true)

Exemplo de informações do item:

Cópia

RegisterCommand('setItemData', function(source) local itemName = 'markedbills' local key = 'info' local val = { worth = 1000 } 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('Definir dados para o item '..itemName..': '..key..' = '..json.encode(val, { indent = true })) else print('Falha ao definir dados para o item '..itemName) end end, true)

UsarItem

Cópia

exportações['qb-inventory']:UseItem(itemName, ...)
  • Nome do item: corda
  • . . . : função

Exemplo:Copiar

RegisterCommand('useItem', function(source, args) local itemName = args[1] se não for itemName então retorne fim exports['qb-inventory']:Useitem(itemName, function() print('Item usado com o nome de '..itemName) fim) fim, true)

TemItem

Esta exportação também está disponível para uso no clientCopy

exports['qb-inventory']:HasItem(fonte, itens, quantidade)
  • fonte: número
  • Unid: corda | tabela
  • quantia: número
  • retorna: booleano

Exemplo:Copiar

RegisterCommand('hasSingleItem', function(source) item local = 'item1' quantidade local = 5 local hasItem = exports['qb-inventory']:HasItem(source, item, quantidade) if hasItem then print('Jogador '..source..' tem '..quantidade..' de '..item) else print('Jogador '..source..' não tem '..quantidade..' de '..item) end end, true) RegisterCommand('hasMultipleItems', function(source) itens locais = {'item1', 'item2'} quantidade local = 5 local hasItems = exports['qb-inventory']:HasItem(source, itens, quantidade) if hasItems then print('Jogador '..source..' tem '..quantidade..' de cada item: '..table.concat(items, ', ')) else print('O jogador '..source..' não tem '..amount..' de cada item: '..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('O jogador '..source..' tem os itens especificados com suas quantidades') else print('O jogador '..source..' não tem os itens especificados com suas quantidades') end end, true)

ObterSlotsPorItem

Cópia

exports['qb-inventory']:GetSlotsByItem(itens, itemName)
  • Unid: mesa
  • Nome do item: corda
  • retorna: mesa

Exemplo:Copiar

RegisterCommand('getSlots', function(source, args) local itemName = args[1] se não for itemName então retorne fim local Player = QBCore.Functions.GetPlayer(source) local items = Player.PlayerData.Items local slots = exports['qb-inventory']:GetSlotsByItem(items, itemName) para _, slot em ipairs(slots) do print(slot) fim fim, true)

ObterPrimeiroSlotPorItem

Cópia

exports['qb-inventory']:GetFirstSlotByItem(itens, itemName)
  • Unid: mesa
  • Nome do item: corda
  • retorna: número

Exemplo:Copiar

RegisterCommand('getFirstSlot', function(source, args) local itemName = args[1] se não for itemName então return end local Player = QBCore.Functions.GetPlayer(source) local items = Player.PlayerData.Items local slot = exports['qb-inventory']:GetFirstSlotByItem(items, itemName) se slot então print('O primeiro slot contendo o item '..itemName..' é: '..slot) else print('Nenhum slot encontrado contendo o item '..itemName) end end, true)

ObterItemPorSlot

Cópia

exports['qb-inventory']:GetItemBySlot(fonte, slot)
  • fonte: número
  • slot: número
  • retorna: mesa

Exemplo:Copiar

RegisterCommand('getItem', function(source, args) local slot = tonumber(args[1]) se não for slot então retorne fim local item = exports['qb-inventory']:GetItemBySlot(source, slot) se item então imprima('Item no slot '..slot..' é: '..item.name) senão imprima('Nenhum item encontrado no slot '..slot) fim fim, true)

ObterItemPorNome

exports['qb-inventory']:GetItemByName(fonte, item)
  • fonte: número
  • item: corda
  • retorna: mesa
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('A primeira ocorrência do item '..itemName..' está no slot: '..item.slot) else print('Nenhum item encontrado com o nome '..itemName) end end, true)

ObterItensPorNome

exports['qb-inventory']:GetItemsByName(fonte, item)
  • fonte: número
  • item: corda
  • retorna: mesa

Exemplo:Copiar

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('Itens chamados '..itemName..' encontrados em slots:') for _, item in ipairs(items) do print(item.slot) end else print('Nenhum item encontrado com o nome '..itemName) end end, true)

ObterContagemDeItens

exports['qb-inventory']:GetItemCount(fonte, itens)
  • fonte: número
  • Unid: corda | tabela
  • retorna: número

Exemplo:Copiar

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('Você tem '..itemCount..' do item: '..itemName) else print('Nenhum item encontrado com o nome '..itemName) end end, true) RegisterCommand('getItemCounts', function(source) local itemNames = {“apple”, “banana”, “orange”} local itemCount = exports['qb-inventory']:GetItemCount(source, itemNames) if itemCount and itemCount > 0 then print('Você tem '..itemCount..' dos itens: '..table.concat(itemNames, “, “)) else print('Nenhum item encontrado com os nomes: '..table.concat(itemNames, “, “)) fim fim, verdadeiro)

Instalação

Manual

  • Baixe o script e coloque-o no [qb] diretório.
  • Importar qb-inventário.sql no seu banco de dados
  • Adicione o seguinte código ao seu server.cfg/resouces.cfg

Migrando do antigo qb-inventory

Banco de dados

Carregue o novo inventário.sql arquivo para criar o novo inventários mesa

Use o fornecido migrar.sql arquivo para migrar todos os seus dados de inventário salvos de estoques, baús, etc.

Depois de concluído, você pode excluir itens de porta-luvas itens escondidos e itens de tronco tabelas do seu banco de dados

CRIAR TABELA SE NÃO EXISTIR `inventários` ( `id` INT(11) NÃO NULO INCREMENTO AUTOMÁTICO, `identificador` VARCHAR(50) NÃO NULO, `itens` TEXTO LONGO PADRÃO ('[]'), CHAVE PRIMÁRIA (`identificador`), CHAVE `id` (`id`) ) ENGINE=InnoDB INCREMENTO AUTOMÁTICO=1 PADRÃO CONJUNTO DE CARACTERES=utf8mb4;

Licença

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *


Ganhe 20% de desconto em qualquer servidor QBCore completo
pt_BRPortuguês do Brasil