▫️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