Stashes Personalizados
Podemos configurar stashes personalizados fora do recurso utilizando a função exportada RegisterStash.
Primeiro, precisamos definir as propriedades do stash.
Propriedades do stash
- id:
string- Nome único para identificar o stash no banco de dados.
- label:
string- Nome exibido ao visualizar o stash.
- slots:
number- Quantidade de slots que o stash terá.
- weight:
number- Peso máximo do inventário do stash.
- owner?:
stringorbooleantrue: Cada jogador tem seu próprio stash único, mas pode solicitar abrir o stash de outro jogador.false: Existe apenas um stash compartilhado entre todos os jogadores.string: O stash pertence explicitamente ao proprietário informado, geralmente um identificador de jogador.
- groups?:
table- Pares chave-valor com nome do job e grade mínima para acessar o stash. (
{["police"] = 0, ["ambulance"] = 2}) - name:
string - grade:
number
- Pares chave-valor com nome do job e grade mínima para acessar o stash. (
- coords?:
vector3ortable- Você pode definir as coordenadas do stash para impedir que ele seja aberto se o jogador não estiver próximo.
- Vetor ou tabela contendo as coordenadas do stash.
Example
Below the value is hardset, but it could be loaded from the database (especially if there are unknown fields, i.e. owner)
-- Server
local stash = {
id = '42wallabyway',
label = '42 Wallaby Way',
slots = 50,
weight = 100000,
owner = 'char1:license'
}
AddEventHandler('onServerResourceStart', function(resourceName)
if resourceName == 'ox_inventory' or resourceName == GetCurrentResourceName() then
exports.ox_inventory:RegisterStash(stash.id, stash.label, stash.slots, stash.weight, stash.owner)
end
end)
-- Client
exports.ox_inventory:openInventory('stash', {id='42wallabyway', owner=property.owner})O exemplo a seguir é baseado nos dados do banco do esx_property.
-- Server
local properties
MySQL.query('SELECT * FROM `properties`', {}, function(result)
properties = result
end)
RegisterNetEvent('ox:loadStashes', function(id)
local stash = properties[id]
if stash then
-- id: 1, name: WhispymoundDrive, label: 2677 Whispymound Drive, coords: {"x":118.748,"y":566.573,"z":175.697}
ox_inventory:RegisterStash(stash.name, stash.label, 50, 100000, true, false, json.encode(stash.room_menu))
end
end)
-- Client
local ox_inventory = exports.ox_inventory
if ox_inventory:openInventory('stash', property.id) == false then
TriggerServerEvent('ox:loadStashes')
ox_inventory:openInventory('stash', property.id)
endRecurso de exemplo
Criamos um recurso de exemplo demonstrando como utilizar corretamente a API de stash: