Ox Inventory
Um inventário baseado em slot com metadados de item para "item uniqueness".
Explore mais de 24.000 imagens estilizadas e fiéis ao lore em Artwork Inventory e use o código ox10 para 10% de desconto.
Instalação
Recomendamos fortemente consultar Guias para configurar Git, Node.js e bun.
Instale todas as dependências do resource
Baixe uma release ou compile o código-fonte.
- Baixe a release mais recente.
git clone https://github.com/overextended/ox_inventory.git
cd ox_inventory/web
bun i
bun run buildInstale as dependências opcionais
Estes resources não são obrigatórios, mas fornecem funcionalidades adicionais.
Ordem de start dos resources
É importante que seus resources iniciem em uma ordem lógica para evitar erros por dependências ausentes.
start oxmysql # this should be one of the first resources
start ox_lib
start framework # the name of your framework (i.e. ox_core, es_extended, qbx_core)
start ox_target
start ox_inventoryConfiguração
A configuração do resource é feita usando convars.
### Shared
# Activate specific event handlers and functions (supported: ox, esx, qbx, nd)
setr inventory:framework "esx"
# Number of slots for player inventories
setr inventory:slots 50
# Maximum carry capacity for players, in grams (frameworks may override this)
setr inventory:weight 30000
# Number of slots for drop inventories
setr inventory:dropslots 50
# Maximum drop capacity, in grams
setr inventory:dropweight 30000
# Integrated support for qtarget/ox_target stashes, shops, etc
# Note: qtarget is deprecated, a future update may drop support (ox_target only, or gated features)
setr inventory:target false
# Jobs with access to police armoury, evidence lockers, etc
setr inventory:police ["police", "sheriff"]
# Set dumpsters as networked entities. Not recommended due to CNetObj limits and entity lockdown.
setr inventory:networkdumpsters 0
### Client
# The URL to load item images from
setr inventory:imagepath "nui://ox_inventory/web/images"
# Weapons will reload after reaching 0 ammo
setr inventory:autoreload false
# Blur the screen while accessing the inventory
setr inventory:screenblur true
# Default hotkeys to access primary and secondary inventories, and hotbar
setr inventory:keys ["F2", "K", "TAB"]
# Enable control action when inventory is open
setr inventory:enablekeys [249]
# Weapons must be aimed before shooting
setr inventory:aimedfiring false
# Show a list of all nearby players when giving items
setr inventory:giveplayerlist false
# Toggle weapon draw/holster animations
setr inventory:weaponanims true
# Toggle item notifications (add/remove)
setr inventory:itemnotify true
# Toggle weapon item notifications (equip/holster)
setr inventory:weaponnotify true
# Disable drop markers and spawn a prop instead
setr inventory:dropprops true
# Set the default model used for drop props
setr inventory:dropmodel "prop_med_bag_01b"
# Disarm the player if an unexpected weapon is in use (i.e. did not use the weapon item)
setr inventory:weaponmismatch true
# Ignore weapon mismatch checks for the given weapon type (e.g. ['WEAPON_SHOVEL', 'WEAPON_HANDCUFFS'])
setr inventory:ignoreweapons []
# Suppress weapon and ammo pickups
setr inventory:suppresspickups 1
# Disables weapons for all players
setr inventory:disableweapons 0
# Enable /steal command registration
setr inventory:enablestealcommand 1
# Disable inventory setup notification (Inventory is ready to use)
setr inventory:disablesetupnotification 0
### Server
# Compare current version to latest release on GitHub
set inventory:versioncheck true
# Stashes will be wiped after remaining unchanged for the given time
set inventory:clearstashes "6 MONTH"
# Stashes will be saved in groups and not individually per query
set inventory:bulkstashsave 1
# Discord webhook url, used for imageurl metadata content moderation (image embeds)
set inventory:webhook ""
# Logging via ox_lib (0: Disable, 1: Standard, 2: Include AddItem/RemoveItem, and all shop purchases)
set inventory:loglevel 1
# Item prices fluctuate in shops
set inventory:randomprices true
# Loot will randomly generate inside unowned vehicles and dumpsters
set inventory:randomloot true
# Minimum job grade to remove items from evidence lockers
set inventory:evidencegrade 2
# Trim whitespace from vehicle plates when checking owned vehicles
setr inventory:trimplate true
# Set the contents of randomly generated inventories
# [item name, minimum, maximum, loot chance]
set inventory:vehicleloot [
["cola", 1, 1],
["water", 1, 1],
["garbage", 1, 2, 50],
["panties", 1, 1, 5],
["money", 1, 50],
["money", 200, 400, 5],
["bandage", 1, 1]
]
set inventory:dumpsterloot [
["mustard", 1, 1],
["garbage", 1, 3],
["money", 1, 10],
["burger", 1, 1]
]
# Used to enforce custom item images set in item metadata
# Only enforced when inventory:webhook is set to a valid discord webhook url
set inventory:validhosts {
"r2.fivemanage.com": true,
"i.fmfile.com": true
}
# Set the markers for the various drops, stashes, shops
# These all follow the same strucutre, if the json strings are invalid it will fallback to a generic marker
setr inventory:dropmarker {
"type": 2,
"colour": [150, 30, 30],
"scale": [0.3, 0.2, 0.15]
}
setr inventory:shopmarker {
"type": 29,
"colour": [30, 150, 30],
"scale": [0.5, 0.5, 0.5]
}
setr inventory:evidencemarker {
"type": 2,
"colour": [30, 30, 150],
"scale": [0.3, 0.2, 0.15]
}
setr inventory:craftingmarker {
"type": 2,
"colour": [150, 150, 30],
"scale": [0.3, 0.2, 0.15]
}
# Set items to sync with framework accounts
set inventory:accounts ["money"]Incompatibilidades de framework
Se você estiver substituindo um inventário embutido do framework, haverá erros de compatibilidade.
Se você não quiser ou não for capaz de resolver incompatibilidades, não instale este resource.
- Qualquer framework com sistema próprio de inventário, item ou weapon deve apresentar problemas de compatibilidade.
- Money como item pode entrar em conflito com sistemas bancários/de contas.
- Você pode sincronizar esses valores com server.syncInventory.
Consulte a issue #1297 para problemas de compatibilidade conhecidos.
Usando um framework sem suporte
Se seu framework não tem suporte oficial, você terá que implementá-lo por conta própria.
Se você estiver substituindo um sistema de inventário existente/embutido, isso pode ser complicado, mas caso contrário é uma tarefa bem simples.
Esta configuração é altamente opinativa e rígida, então depende da sua própria habilidade como desenvolvedor para fazê-la funcionar.
Configure um submódulo bridge
Defina primeiro o framework de destino: pode ser o nome, um acrônimo ou apenas "custom".
setr inventory:framework "custom"Copie o diretório ox do diretório bridge e dê a ele o nome que você usou acima.
As funções e os manipuladores de eventos mínimos já estão adicionados aqui, mas você precisará alterá-los para corresponder ao seu framework; não podemos ajudar aqui. Você pode consultar os outros bridges de framework se precisar de inspiração.
Configure as referências do banco de dados
Dê uma olhada no módulo mysql. Você precisará referenciar suas tabelas de jogador/veículo e colunas de id.
elseif shared.framework == 'custom' then
playerTable = 'characters' -- table storing player / character data
playerColumn = 'charid' -- primary key for identifying the character (i.e. identifier, citizenid, id)
vehicleTable = 'vehicles' -- table storing owned vehicle data
vehicleColumn = 'id' -- primary key for identifying the vehicle (i.e. plate, vin, id)
end