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ãoid
Có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;