Economize 20% hoje mesmo Use o código WELCOME ao finalizar a compra. BEM-VINDO

Ajuste de inventário e peso: de items.lua para metadados

Resumo: Este guia fornece predefinições de peso/slot prontas para produção, tabelas de orçamento de itens, opções copiáveis e coláveis itens.lua Definições (ESX/QBCore/ox_inventory) e manuais de migração segura entre inventários populares. Use-o para eliminar o drama da sobrecarga, impedir o excesso de itens e manter sua economia coerente.


Por que o ajuste de estoque é importante

Uma economia de RP estável depende de escassez, atrito e escolhas significativas. Regras de estoque (slots, peso, limites de pilha, metadados como durabilidade/séries) são as alavancas que tornam essas escolhas reais. Se todos puderem carregar tudo, os preços despencam e os ciclos se rompem. Ajuste o estoque primeiro e, em seguida, itere seus preços, pagamentos e perdas. Para uma economia mais ampla, consulte nosso pilar: Projetando uma economia equilibrada para GTA RP: preços, perdas e progressão.


Modelos: Slots vs. Peso vs. Híbrido

Somente slots

  • Modelo cognitivo simples; cada item = 1 slot ou definido por classes de tamanho.
  • Fraco em diferenciar pilhas pesadas de leves; explora por meio de muitos itens pequenos de alto valor.

Somente peso

  • Cada item tem um peso (geralmente gramas). Os jogadores têm Peso máximo por contêiner. Realismo forte; precisa de padrões bem pensados.

Híbrido (recomendado)

  • Limite de peso global e Limite de slot. Impede exploits de micro e mega itens. Funciona melhor para RP.

Dica: Mantenha os números legíveis. Se modelar em gramas, use números inteiros (por exemplo, água = 500g) e bonés redondos para jogadores (por exemplo, Peso máximo = 120.000).


Predefinições padrão (copiar e adaptar)

Abaixo estão pontos de partida testados em batalha. Ajuste ±10–20% após uma semana de telemetria na cidade.

Inventário do jogador (presencial)

Escala de servidorModeloPeso máximo (g)SlotsNotas
Novo/Pequeno (≤40 pop)Híbrido80,00030Integração mais rápida; menos pontos problemáticos iniciais.
Médio (40–150)Híbrido120,00035Balanceado para RP geral; bom para trabalhos diversos.
High-Pop (150+)Híbrido150,00032Ajuste os espaços para coibir a acumulação; mantenha o peso justo.

Veículos (padrões comuns)

RecipientePeso máximo (g)SlotsJustificativa
Porta-luvas10,0005Um pequeno estoque incentiva o planejamento.
Porta-malas de sedans80,00020Linha de base.
Porta-malas de SUV/Van120,00025Veículos utilitários se tornam significativos.
Caminhão (utilitário)180,00028Jogabilidade de logística.
Armazenamento de motocicletas8,0003Poucas embolsações.

Esconderijos e recipientes especiais

TipoPeso máximo (g)SlotsNotas
Estoque da casa (nível 1/2/3)120k / 180k / 240k40 / 60 / 80Incentiva melhorias habitacionais.
Armário de empregos80,00020Evite exploits de transferência.
Armário de Provas240,000120Conveniência do administrador/LEO; registro de auditoria necessário.

Orçamentos de peso de itens (por classe)

Use isso para atribuir pesos consistentes. Pense atrito relativo não realismo.

AulaExemplosPeso sugerido (g)
Muito leveLâmina de arrombamento, USB, SIM5–50
LuzMunição de pistola (10), bandagem, lanche100–250
MédioGarrafa de água, hambúrguer, kit de reparo400–800
PesadoCaixa de munição para rifle (30), tanque de oxigênio, caixa de material1.500–4.000
Muito PesadoCaixa de armas, bolsa de dinheiro (marcada)6.000–12.000

Munição: Orçamento por unidade para pilhas agrupadas (por exemplo, 9 mm = 15 g cada → 30 rodadas ≈ 450g) ou representar como caixas (por exemplo, Caixa de 9mm (30) = 500g).


Tamanhos de pilha e estratégia de slots

  • Commodities (comida, remédios): empilhe de 5 a 20 para reduzir o tédio.
  • Munição: empilhe 30–60 para pistolas; 60–120 para rifles quando encaixotados.
  • Tapetes de artesanato: empilhe 100–250; mantenha o peso significativo.
  • Armas: pilha = 1, metadados exclusivos (serial, durabilidade).

Padrões de metadados (durabilidade, seriais, anexos, qualidade)

Projete metadados como um pequeno esquema. Mantenha os campos mínimos, digitados e validados.

Esquema de metadados canônicos (recomendação)

{ "serial": "string", // id exclusivo da arma "owner": "citizenid|identifier", "durability": 0.0, // 0.0–1.0; decaimento por uso/tempo "quality": 100, // 0–100; limite reparável 25 "ammo": 0, // inteiro; carregadores de armas "tint": 0, // inteiro (índice de tonalidade do jogo) "attachments": ["flashlight", "scope"], "expiry": 0, // unix timestamp; itens perecíveis "notes": "" // texto pequeno; evitar inchaço }

Durabilidade e Decadência

  • Armas: decaimento 0,5–1,5% por carregador; chance de atolamento <5% abaixo da qualidade 20%.
  • Ferramentas (arrombadores, furadeiras): consome % ao usar; quebra em 0.
  • Perecíveis: termo verificar no momento do uso; penalidade de obsolescência ou bloqueio.

Segurança e Desempenho

  • Valide metadados no lado do servidor; nunca confie em gravações do cliente.
  • Limite o tamanho dos metadados (por exemplo, <512 bytes). Blobs grandes prejudicam o salvamento/carregamento e as cargas úteis da rede.
  • Use enumerações para anexos e matizes.

Código: itens.lua / definições de itens por estrutura

Exemplo ESX (es_extended)

-- esx items.lua (exemplo) — peso em gramas; peso negativo significa que não é contado nos modos legados ['water'] = { label = 'Garrafa de água', weight = 500, stack = true, close = true, description = 'Mantenha-se hidratado.' }, ['bandage'] = { label = 'Bandage', weight = 150, stack = true, close = true }, ['lockpick'] = { label = 'Lockpick', weight = 50, stack = true, close = true }, ['pistol_ammo'] = { label = 'Munição de pistola (30)', weight = 450, stack = true, close = true, description = '9mm, caixa com 30.' }, ['weapon_pistol'] = { label = 'Pistol', weight = 1500, stack = false, close = true, degrade = 0.01, unique = true },

Para variantes do ESX que ainda usam limite em vez de peso, definir limite = -1 (ilimitado) e alterne o equilíbrio da economia por meio do peso globalmente.

QBCore (compartilhado/itens.lua) exemplo

-- qb-core shared/items.lua ['water'] = { nome = 'water', rótulo = 'Garrafa de água', peso = 500, tipo = 'item', imagem = 'water.png', exclusivo = false, useable = true, shouldClose = true, descrição = 'Mantenha-se hidratado.', combinable = nil }, ['bandage'] = { nome = 'bandage', rótulo = 'Bandage', peso = 150, tipo = 'item', imagem = 'bandage.png', exclusivo = false, useable = true, shouldClose = true }, ['lockpick'] = { nome = 'lockpick', rótulo = 'Lockpick', peso = 50, tipo = 'item', imagem = 'lockpick.png', exclusivo = false, useable = true, shouldClose = true }, ['pistol_ammo'] = { nome = 'pistol_ammo', rótulo = 'Pistol Munição (30)', peso = 450, tipo = 'item', imagem = 'pistol_ammo.png', exclusivo = falso, utilizável = verdadeiro, shouldClose = verdadeiro }, ['weapon_pistol'] = { nome = 'weapon_pistol', rótulo = 'Pistola', peso = 1500, tipo = 'arma', imagem = 'weapon_pistol.png', exclusivo = verdadeiro, utilizável = falso, shouldClose = verdadeiro, informação = { serial = '', durabilidade = 1,0, munição = 12, anexos = {} } },

inventário_de_bois (dados/itens.lua) exemplo

retornar { água = { rótulo = 'Garrafa de água', peso = 500, pilha = true, cliente = { status = { sede = 25000 }, anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' } }, }, bandagem = { rótulo = 'Bandagem', peso = 150, pilha = true }, lockpick = { rótulo = 'Lockpick', peso = 50, pilha = true }, munição_de_pistola = { rótulo = 'Munição de pistola (30)', peso = 450, pilha = true }, pistola_de_arma = { rótulo = 'Pistola', peso = 1500, pilha = false, allowArmed = true, consumir = 0, -- manipulado pelo sistema de durabilidade munição = { tipo = 'PISTOLA_DE_AMMO', contagem = 12 }, metadados = { serial = true, durabilidade = true, anexos = true }, }, }

inventário de bois apoia ricos cliente/servidor comportamentos em definições de itens — prefira scripts integrados em vez de scripts ad hoc para padronizar o comportamento.


Exemplos de aplicação híbrida

Configuração do contêiner QBCore (exemplo)

-- qb-inventory/server/config.lua (illustrative)
Config.PlayerMaxWeight = 120000
Config.PlayerMaxSlots = 35
Config.Vehicle = {
  glovebox = { weight = 10000, slots = 5 },
  trunk = function(class)
    if class == 'sedan' then return 80000, 20 end
    if class == 'suv' or class == 'van' then return 120000, 25 end
    if class == 'truck' then return 180000, 28 end
    return 60000, 18
  end
}

configuração do estoque ox_inventory (exemplo)

-- ox_inventory/server/custom/stashes.lua lib.addstash('house_tier1', 40, 120000) lib.addstash('house_tier2', 60, 180000) lib.addstash('house_tier3', 80, 240000)

Manuais de Migração (seguros e reversíveis)

Princípios

  1. Primeiro, faça um snapshot do banco de dados. 2) Migre itens/metadados com scripts idempotentes. 3) Execute lado a lado em um servidor de preparação. 4) Forneça SQL de rollback.

UM) qb-inventárioinventário de bois

Campos do mapa

  • Itens QB.luadados/itens ox.lua (nome, rótulo, peso, pilha/único, comportamentos cliente/servidor).
  • inventário do jogador tabela: converter informação JSON → metadados (serial, durabilidade, munição).

Pseudocódigo (mistura Lua/SQL)

-- 1) Exportar itens QB para uma tabela Lua/JSON -- 2) Gerar entradas ox items.lua -- 3) Transformar inventários para item em qb_inventory_rows do local meta = json.decode(item.info or '{}') local metadata = { serial = meta.serial, durability = meta.durability or 1.0, ammo = meta.ammo or 0, attachments = meta.attachments or {}, } insert_into_ox_inventory(item.name, item.amount, metadata) end

Exemplo de SQL (estilo PostgreSQL/MySQL)

-- Backup CREATE TABLE backup_playeritems AS SELECT * FROM playeritems; -- Exemplo de transformação para uma única família de itens UPDATE playeritems SET metadata = JSON_OBJECT( 'serial', JSON_EXTRACT(info, '$.serial'), 'durability', COALESCE(JSON_EXTRACT(info, '$.durability'), 1.0), 'ammo', COALESCE(JSON_EXTRACT(info, '$.ammo'), 0), 'attachments', COALESCE(JSON_EXTRACT(info, '$.attachments'), JSON_ARRAY()) ) WHERE name IN ('weapon_pistol','weapon_pistol_mk2');

Pegadinhas

  • Itens únicos: impor pilha = falso; garantir que duplicatas não sejam mescladas.
  • Sistemas de munição: reconciliar convenções de munição em caixa e munição solta.
  • Imagens/ícones: reordene as imagens dos itens para corresponder à nomenclatura do boi.

B) ESX (baseado em limite) → modelo de peso

  1. Definir global useWeight = verdadeiro na configuração (varia de acordo com o fork).
  2. Substituir por item limite com peso (g). Para itens anteriormente limite = -1, atribua pesos realistas.
  3. Migre os limites de estoque/veículos adequadamente.

Passe com script

para nome, item em pares (itens) faça se item.limit e não item.weight então item.weight = estimateWeightFromClass (nome) item.limit = nil fim fim

C) qs-inventário / lj-inventário → QBCore/ox

  • O mapeamento de campos é semelhante ao QB: informaçãometadados.
  • Fique atento às chaves personalizadas (qualidade, imagem, criado em). Normalizar para o esquema canônico.

Balanceamento do fluxo de trabalho (sprint de 1 semana)

  1. Dia 0: Implementar predefinições; migrar itens para a tabela de orçamento.
  2. Dia 1–2: Capture telemetria: peso médio de transporte, slots usados, distribuição de itens por trabalho.
  3. Dia 3: Reduzir valores discrepantes (+5–10% de peso nos 5 principais itens acumulados).
  4. Dia 4–5: Funções dos veículos: melhorar porta-malas utilitários; diminuir abuso do porta-luvas.
  5. Dia 6: Perecíveis: adicionar termo para consumíveis de alta margem.
  6. Dia 7: Publicar notas de patch; definir uma revisão de duas semanas.

Telemetria Mínima

  • % tempo sobrecarregado, slots médios usados, 20 principais itens por contagem e peso total, percentis de utilização do estoque.

Lista de verificação de controle de qualidade (pronto para envio)

  • Todos os itens têm peso, pilha, e rótulos claros.
  • As armas são exclusivo/não empilhar e incluir serial, durabilidade.
  • Os contêineres reforçam ambos peso e ranhuras (onde suportados).
  • As classes de veículos são mapeadas para capacidades sensatas.
  • Os estoques aumentam conforme a progressão.
  • Migrações com backup; rollback testado.
  • Tamanho de metadados limitado; validado no lado do servidor.

Modelos para download (em linha)

Orçamento de peso CSV (copiar para o Planilhas Google)

nome,rótulo,classe,peso_g,pilha,tamanho_da_pilha água,garrafa de água,consumível,500,verdadeiro,10 bandagem,bandagem,médica,150,verdadeiro,5 lockpick,lockpick,ferramenta,50,verdadeiro,10 munição_de_pistola,munição_de_pistola (30),munição,450,verdadeiro,5 arma_pistola,pistola,arma,1500,falso,1

Tabela de Capacidade de Veículos (CSV)

contêiner,peso_g,vagas Porta-luvas,10000,5 Porta-malas de sedan,80000,20 Porta-malas de SUV/van,120000,25 Porta-malas de caminhão,180000,28 Motocicleta,8000,3

Armadilhas e soluções comuns

  • Os jogadores sempre sobrecarregados → Reduzir o peso dos 3 itens mais onipresentes em 15%; aumentar o limite de jogadores em 10%.
  • Acumulação infinita de microitens → Introduzir limite de slot; definir peso mínimo do item (por exemplo, 25 g).
  • Inflação da economia via estocagem → Adicionar perecíveis termo, fricção de peso de entrada de artesanato ou taxas de estoque.
  • Inchaço do banco de dados → Podar chaves de metadados; evitar grandes notas campos.

Próximos passos

  • Implemente as predefinições híbridas acima e depois itere com telemetria.
  • Alinhe o atrito do inventário com os pagamentos e preços - veja nossa postagem de economia para pias e modelos de progressão que combinam bem com essas configurações.

Tem dúvidas sobre uma bifurcação específica de framework ou um inventário personalizado? Compartilhe os detalhes e eu personalizarei as configurações exatas.

Lucas
Lucas

Eu sou Luke, sou um gamer e adoro escrever sobre FiveM, GTA e roleplay. Eu administro uma comunidade de roleplay e tenho cerca de 10 anos de experiência em administração de servidores.

Artigos: 570