Page cover

▫️snt-inventory

• Exports -> Itemlist (shared: server & client)

exports['snt-inventory']:getItemList()
-- retorna a lista de itens cadastrados, com exatamente as mesmas informações cadastradas no arquivo 'config.shared.lua'.

--------------------------------------------------

exports['snt-inventory']:isRegisteredItem(item)
-- retorna se um item está cadastrado ou não (true or false) pelo seu index.

--------------------------------------------------

exports['snt-inventory']:getItemName(item)
-- retorna o nome 'bonitinho' de um item pelo seu index.

--------------------------------------------------

exports['snt-inventory']:getItemDescription(item)
-- retorna a descrição de um item pelo seu index.

--------------------------------------------------

exports['snt-inventory']:getItemDurability(item)
-- retorna a durabilidade em minutos de um item (0 = sem durabilidade) pelo seu index.

--------------------------------------------------

exports['snt-inventory']:getItemWeight(item)
-- retorna o peso de um item pelo seu index.

--------------------------------------------------

exports['snt-inventory']:getItemType(item)
-- retorna o tipo de um item (se ele tiver um) pelo seu index.

--------------------------------------------------

exports['snt-inventory']:isItemPropertyEnabled(item,property)
-- retorna se um item tem uma determinada propriedade habilitada, pelo seu index.
-- propriedades existentes: 
'droppable' -- se pode ser descartado
'sendable' -- se pode ser enviado
'storable' -- se pode ser guardado em containers (qualquer um: baú, malas, luvas)
'stolenable' -- se pode ser retirado durante revistas

---------------------------------------------------

exports['snt-inventory']:getItemLimit(item)
-- retorna o limite de um item no inventário se ele tiver, caso contrário irá retornar 0.

---------------------------------------------------

exports['snt-inventory']:getErrorFormattedMessage(result)
-- retorna uma mensagem de erro específica para o resultado da utilização de algum export do inventory, EM ALGUMAS SITUAÇÕES, se não for uma das situações abaixo irá retornar a mensagem padrão 'ESPAÇO INSUFICIENTE NA MOCHILA'.
-- como já de conhecimento, todos os exports retornam um resultado, ex:

local succs,result exports['snt-inventory']:addInventoryItem(...)
if not succs then -- não foi entregue o item, logo result = MOTIVO.
    print(result) -> 'Invalid param -> amount.'
    print(getErrorFormattedMessage(result)) -> 'QUANTIDADE INVÁLIDA'
end

---------------------------------------------------

• Exports -> Mochila/Inventário (server)

exports['snt-inventory']:saveAllInventories()
-- salva todos os inventários salvos em cache de forma instantanea

--------------------------------------------------

exports['snt-inventory']:saveCharacterInventory(characterId)
-- salva instantaneamente o inventário de um personagem, pelo seu id.

--------------------------------------------------

exports['snt-inventory']:timedSaveCharacterInventory(characterId)
-- adiciona o inventário de um personagem à fila de salvamento desincronizada (otimização)

--------------------------------------------------

 exports['snt-inventory']:getCharacterInventory(characterId)
 -- retorna o inventário de um personagem pelo seu id.
 -- o inventário de um personagem é uma tabela no seguinte formato:
 inventory = {
    ['id slot'] = {
        i = 'itemindex',
        a = quantidade,
        md = {}, -- tabela de metadados, se possuir
        d = durabilidade -- time (ms)
    }
 }

--------------------------------------------------

exports['snt-inventory']:getCharacterInventoryCurrentWeight(characterId)
-- retorna o peso em uso do inventário de um personagem, pelo seu id.

--------------------------------------------------

exports['snt-inventory']:getCharacterInventoryMaxWeight(characterId)
-- retorna o peso máximo do inventário de um personagem, pelo seu id.

--------------------------------------------------

exports['snt-inventory']:setCharacterInventoryMaxWeight(characterId,value)
-- define o peso máximo do inventário de um personagem, pelo seu id.

--------------------------------------------------

exports['snt-inventory']:getCharacterInventoryEmptySlots(characterId)
-- retorna quantos slots estão vazios no inventário de um personagem, pelo seu id.

exports['snt-inventory']:clearCharacterInventory(characterId)
-- limpa completamente o inventário de um personagem.

--------------------------------------------------

exports['snt-inventory']:getInventoryItemAmount(characterId,item)
-- retorna a quantidade que um personagem possuí de um item específico em seu inventário, pelo id do personagem e o index do item.

--------------------------------------------------

local succs,result =
exports['snt-inventory']:removeInventoryItem(characterId,item,amount,notify,slot)
-- remover item(s) do inventário de um personagem.
-- os parâmetros notify & slot são OPCIONAIS.
-- retorna dois valores: succs (se foi removido), result (string do resultado, útil para debugs / desenvolvimento)

--------------------------------------------------

local succs,result =
exports['snt-inventory']:addInventoryItem(characterId,item,amount,notify,slot,metadatas)
-- remover item(s) do inventário de um personagem.
-- os parâmetros notify, slot & metadatas são OPCIONAIS.
-- retorna dois valores: succs (se foi adicionado), result (string do resultado, útil para debugs / desenvolvimento)
-- METADATAS: veja o exemplo/como utilizar no próximo bloco de código.

--------------------------------------------------

local can = exports['snt-inventory']:canReceiveItems(characterId,item,amount)
-- retorna se o inventário de um personagem possuí espaço (peso & slots) suficiente para receber uma quantidade de um determinado item.

--------------------------------------------------

local can = exports['snt-inventory']:canReceiveBulkItems(characterId,bulkTable)
-- mesma coisa do anterior, porém serve para verificar se o personagem pode receber diversos itens e quantidades diferentes, passando uma tabela no formato abaixo:
bulkTable = {
    ['item'] = amount,
    ['item2'] = amount2,
    ['item3'] = amount3
}

--------------------------------------------------

local has_item,slot,slot_data = 
exports['snt-inventory']:hasItemWithMetadata(characterId,item,key,value)
-- checa se um inventário tem determinado metadata.

--------------------------------------------------

• Usando Metadados em Itens

-- No exemplo abaixo vamos adicionar o metadado 'owner' com o valor '1' para o item gerado.

local metadados = {
    ['owner'] = 1
} -- você pode inserir o que quiser nos metadados.

exports['snt-inventory']:addInventoryItem(1,'card',1,true,nil,metadados)

-- Desta forma, será dado 01x item card para o ID 1 com o metadado 'owner' = 1 definido.

-- ATENÇÃO: itens com metadados (assim como itens com durabilidade) NÃO podem ser stackados. Principalmente armas. A má utilização/desenvolvimento nesta esfera poderá causar munições sendo duplicadas.

-- no arquivo 'functions.server.lua', o próprio inventário já irá lhe fornecer a tabela 'metadados' do item, caso ela exista.
-- caso contrário, para verificar se o item possuí metadados é só pegar o inventário do personagem, percorrer os itens e verificar se existe a key 'md' em evidência.

--------------------------------------------------

-- No exemplo abaixo vamos checar se um personagem possuí um item com determinado metadado (key - valor).

local has_item,slot,slot_data = 
exports['snt-inventory']:hasItemWithMetadata(characterId,'card','owner',1)

if has_item then
    -- o personagem possuí o item 'card' com o metadado 'owner' = 1.
    -- slot = slot que o item está no inventory
    -- slot_data = todos os dados do slot, como salvo no banco de dados.
else
    -- o personagem não possuí o item com o metadado desejado.
end

--------------------------------------------------

• Exports -> Containers (server)

-- Entenda por 'container': baús, porta-malas, porta-luvas, etc.

exports['snt-inventory']:clearContainerInventory(key)
-- limpa o inventário de um container pela sua key/identificador.

--------------------------------------------------

exports['snt-inventory']:openExternalChest(src,key,weight,webhook)
-- cria (se inexistente) um baú e abre para a source especificada, deve ser passada a 'key' para identificação/salvamento do baú, o peso máximo 'weight' e caso queira o webhook para envio de logs (opcional).

• Exports -> Client

exports['snt-inventory']:tryOpenTrunkChest()
-- abrir o porta malas de um veículo próximo

exports['snt-inventory']:tryInspect()
-- revistar o personagem próximo

Last updated