Cupón WELCOME disponible Usa el código WELCOME al finalizar la compra hasta el 31 de julio de 2026. WELCOME

Ajuste de inventario y peso: de items.lua a metadatos

Resumen:Esta guía le ofrece ajustes preestablecidos de peso/ranura listos para producción, tablas de presupuesto de artículos y archivos copiables y pegables. items.lua Definiciones (ESX/QBCore/ox_inventory) y guías de migración segura entre inventarios populares. Úselo para eliminar el problema de la sobrecarga, detener la sobrecarga de artículos y mantener la coherencia de su economía.


Por qué es importante ajustar el inventario

Una economía de rol estable depende de la escasez, la fricción y las decisiones significativas. Las reglas de inventario (espacios, peso, límites de acumulación, metadatos como durabilidad/números de serie) son los factores que hacen que esas decisiones sean reales. Si todos pueden llevar todo, los precios se desploman y los bucles se rompen. Ajusta primero el inventario y luego itera tus precios, pagos y sumideros. Para una economía más amplia, consulta nuestro pilar: Diseño de una economía equilibrada para GTA RP: precios, pérdidas y progresión.


Modelos: Ranuras vs. Peso vs. Híbrido

Solo tragamonedas

  • Modelo cognitivo simple; cada ítem = 1 ranura o definido por clases de tamaño.
  • Débil para diferenciar acumulaciones pesadas de ligeras; se aprovecha de muchos objetos diminutos de alto valor.

Sólo peso

  • Cada artículo tiene un peso (normalmente en gramos). Los jugadores tienen peso máximo Por contenedor. Gran realismo; requiere valores predeterminados bien pensados.

Híbrido (recomendado)

  • Límite de peso global y Límite de ranuras. Previene exploits de micro y megaobjetos. Funciona mejor para RP.

ConsejoMantenga los números legibles para humanos. Si modela en gramos, use números enteros (p. ej., agua = 500g) y gorras de jugadores redondos (por ejemplo, peso máximo = 120.000).


Ajustes preestablecidos predeterminados (copiar y adaptar)

A continuación se muestran puntos de partida probados en batalla. Ajuste ±10–20% después de una semana de telemetría en la ciudad.

Inventario de jugadores (en persona)

Escala de servidorModeloPeso máximo (g)TragamonedasNotas
Nuevo/Pequeño (≤40 pp)Híbrido80,00030Incorporación más rápida; menos problemas iniciales.
Medianos (40–150)Híbrido120,00035Equilibrado para RP general; bueno para diversos trabajos.
Pop de alta gama (más de 150)Híbrido150,00032Ajustar las ranuras para frenar el acaparamiento y mantener un peso justo.

Vehículos (valores predeterminados comunes)

RecipientePeso máximo (g)TragamonedasRazón fundamental
Guantera10,0005Pequeño alijo que fomenta la planificación.
Baúl de los sedanes80,00020Base.
Baúl de SUV/furgoneta120,00025Los vehículos utilitarios adquieren significado.
Camión (utilitario)180,00028Jugabilidad logística.
Almacenamiento de motocicletas8,0003Bolsillos mínimos.

Escondites y contenedores especiales

TipoPeso máximo (g)TragamonedasNotas
Alijo de la casa (niveles 1/2/3)120k / 180k / 240k40 / 60 / 80Incentiva la mejora de las viviendas.
Casillero de trabajo80,00020Prevenir exploits de transferencia.
Casillero de pruebas240,000120Conveniencia para administrador/LEO; se requiere registro de auditoría.

Presupuestos de peso de artículos (por clase)

Utilice esto para asignar pesos consistentes. Piense fricción relativa No realismo.

ClaseEjemplosPeso sugerido (g)
Muy claroHoja para ganzúas, USB, SIM5–50
LuzMunición de pistola (10), vendaje, refrigerio100–250
MedioBotella de agua, hamburguesa, kit de reparación.400–800
PesadoCaja de munición para rifle (30), tanque de oxígeno, caja de material1.500–4.000
Muy pesadoCaja de armas, bolsa de dinero (marcada)6.000–12.000

Munición: Presupuesto por unidad para pilas agrupadas (por ejemplo, 9 mm = 15 g cada uno → 30 rondas ≈ 450 g) o representar como cajas (por ejemplo, Caja de 9 mm (30) = 500 g).


Tamaños de pila y estrategia de ranuras

  • Materias primas (comida, medicamentos): apile de 5 a 20 para reducir el tedio.
  • Munición: apila de 30 a 60 para pistolas; de 60 a 120 para rifles cuando están en caja.
  • Tapetes de artesanía:Apila 100–250; mantén un peso significativo.
  • Armas: pila = 1, metadatos únicos (número de serie, durabilidad).

Patrones de metadatos (durabilidad, números de serie, archivos adjuntos, calidad)

Diseñe los metadatos como un pequeño esquema. Mantenga los campos mínimos, tipificados y validados.

Esquema de metadatos canónicos (recomendación)

{ "serial": "string", // ID único del arma "owner": "citizenid|identifier", "durability": 0.0, // 0.0–1.0; deterioro por uso/tiempo "quality": 100, // 0–100; umbral de reparación 25 "ammo": 0, // entero; cargadores del arma "tint": 0, // entero (índice de tinte del juego) "attachments": ["flashlight", "scope"], "expiry": 0, // marca de tiempo Unix; objetos perecederos "notes": "" // texto pequeño; evitar sobrecarga }

Durabilidad y deterioro

  • Armas: decaimiento 0,5–1,5% por cargador; probabilidad de atasco <5% por debajo de una calidad de 20%.
  • Herramientas (ganzúas, taladro): consume % al usarlo; se rompe a los 0.
  • Productos perecederos: expiración comprobar en uso; penalización obsoleta o bloqueo.

Seguridad y rendimiento

  • Valide los metadatos del lado del servidor; nunca confíe en las escrituras del cliente.
  • Limitar el tamaño de los metadatos (p. ej., <512 bytes). Los blobs grandes afectan negativamente al guardado/carga y las cargas útiles de red.
  • Utilice enumeraciones para archivos adjuntos y tintes.

Código: items.lua / definiciones de elementos por marco

Ejemplo de ESX (es_extended)

-- esx items.lua (ejemplo) — peso en gramos; un peso negativo significa que no se cuenta en los modos heredados ['water'] = { label = 'Botella de agua', weight = 500, stack = true, close = true, description = 'Manténgase hidratado.' }, ['bandage'] = { label = 'Vendaje', weight = 150, stack = true, close = true }, ['lockpick'] = { label = 'Ganzúa', weight = 50, stack = true, close = true }, ['pistol_ammo'] = { label = 'Munición de pistola (30)', weight = 450, stack = true, close = true, description = '9 mm, caja de 30.' }, ['weapon_pistol'] = { etiqueta = 'Pistola', peso = 1500, pila = falso, cierre = verdadero, degradación = 0.01, único = verdadero },

Para las variantes de ESX que aún utilizan límite en lugar de peso, colocar límite = -1 (ilimitado) y cambia el saldo económico por peso a nivel mundial.

QBCore (compartido/items.lua) ejemplo

-- qb-core shared/items.lua ['water'] = { nombre = 'water', etiqueta = 'Botella de agua', peso = 500, tipo = 'item', imagen = 'water.png', único = falso, utilizable = verdadero, shouldClose = verdadero, descripción = 'Mantente hidratado.', combinable = nulo }, ['bandage'] = { nombre = 'bandage', etiqueta = 'Vendaje', peso = 150, tipo = 'item', imagen = 'bandage.png', único = falso, utilizable = verdadero, shouldClose = verdadero }, ['lockpick'] = { nombre = 'lockpick', etiqueta = 'Lockpick', peso = 50, tipo = 'item', imagen = 'lockpick.png', único = falso, utilizable = verdadero, shouldClose = verdadero }, ['pistol_ammo'] = { nombre = 'pistol_ammo', etiqueta = 'Munición de pistola (30)', peso = 450, tipo = 'ítem', imagen = 'pistol_ammo.png', único = falso, utilizable = verdadero, shouldClose = verdadero }, ['pistola_de_arma'] = { nombre = 'pistola_de_arma', etiqueta = 'Pistola', peso = 1500, tipo = 'arma', imagen = 'pistola_de_arma.png', único = verdadero, utilizable = falso, shouldClose = verdadero, información = { número de serie = '', durabilidad = 1.0, munición = 12, accesorios = {} } },

inventario_buey (datos/elementos.lua) ejemplo

return { water = { label = 'Botella de agua', peso = 500, pila = true, cliente = { status = { thirst = 25000 }, anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' } }, }, vendage = { label = 'Vendaje', peso = 150, pila = true }, lockpick = { label = 'Ganzúa', peso = 50, pila = true }, pistol_ammo = { label = 'Munición de pistola (30)', peso = 450, pila = true }, weapon_pistol = { label = 'Pistola', peso = 1500, pila = false, allowArmed = true, consume = 0, -- manejado por el sistema de durabilidad ammo = { type = 'AMMO_PISTOL', count = 12 }, metadata = { serial = true, durability = true, attachments = true }, }, }

inventario_de_bueyes apoya a los ricos cliente/servidor comportamientos en las definiciones de elementos: prefiera los elementos integrados en lugar de scripts ad hoc para estandarizar el comportamiento.


Ejemplos de aplicación híbrida

Configuración del contenedor QBCore (ejemplo)

-- 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
}

Configuración del inventario de ox_inventory (ejemplo)

-- ox_inventory/server/custom/stashes.lua lib.addstash('casa_nivel1', 40, 120000) lib.addstash('casa_nivel2', 60, 180000) lib.addstash('casa_nivel3', 80, 240000)

Manuales de migración (seguros y reversibles)

Principios

  1. Primero, tome una instantánea de la base de datos. 2) Migre elementos/metadatos con scripts idempotentes. 3) Ejecute en paralelo en un servidor de prueba. 4) Proporcione SQL de reversión.

A) inventario qbinventario_de_bueyes

Campos del mapa

  • Elementos QB.luadatos de buey/items.lua (nombre, etiqueta, peso, pila/único, comportamientos cliente/servidor).
  • inventario de jugadores tabla: convertir información JSON → metadatos (serie, durabilidad, munición).

Pseudocódigo (mezcla de Lua y SQL)

-- 1) Exportar artículos QB a una tabla Lua/JSON -- 2) Generar entradas ox items.lua -- 3) Transformar inventarios para el artículo en 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

Ejemplo de SQL (estilo PostgreSQL/MySQL)

-- Copia de seguridad CREATE TABLE backup_playeritems AS SELECT * FROM playeritems; -- Ejemplo de transformación para una sola familia de elementos 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');

Trampas

  • Artículos únicos: hacer cumplir pila = falso; asegúrese de que los duplicados no se fusionen.
  • Sistemas de munición: reconciliar las convenciones de munición en caja y suelta.
  • Imágenes/iconos: re-direccionar las imágenes de los elementos para que coincidan con el nombre de Ox.

B) ESX (basado en límites) → modelo de peso

  1. Establecer global useWeight = verdadero en configuración (varía según la bifurcación).
  2. Reemplazar por artículo límite con peso (g). Para artículos anteriormente límite = -1, asignar pesos realistas.
  3. Migre los límites de almacenamiento/vehículo según corresponda.

Pase con guión

para nombre, artículo en pares (Ítems) hacer si artículo.limit y no artículo.peso entonces artículo.peso = estimateWeightFromClass(nombre) artículo.limit = nil fin fin

DO) inventario qs / inventario lj → QBCore/buey

  • El mapeo de campo es similar a QB: informaciónmetadatos.
  • Esté atento a las teclas personalizadas (calidad, imagen, creadoEn). Normalizar al esquema canónico.

Equilibrio del flujo de trabajo (sprint de 1 semana)

  1. Día 0:Implementar ajustes preestablecidos; migrar elementos a la tabla de presupuesto.
  2. Día 1–2: Telemetría de captura: peso promedio transportado, espacios utilizados, distribución de elementos por trabajo.
  3. Día 3:Ajustar los valores atípicos (+5–10% peso en los 5 elementos principales acumulados).
  4. Día 4–5:Roles del vehículo: mejorar los baúles utilitarios; debilitar el abuso de la guantera.
  5. Día 6:Perecederos: añadir expiración para consumibles de alto margen.
  6. Día 7:Publicar notas del parche; establecer una revisión de dos semanas.

Telemetría mínima

  • % tiempo comprometido, promedio de ranuras utilizadas, los 20 artículos principales por cantidad y peso total, percentiles de utilización de existencias.

Lista de verificación de control de calidad (lista para enviar)

  • Todos los artículos tienen peso, pilay etiquetas claras.
  • Las armas son único/no apilar e incluir de serie, durabilidad.
  • Los contenedores hacen cumplir ambos peso y ranuras (donde sea compatible).
  • Las clases de vehículos se asignan a capacidades sensibles.
  • Alijos escalonados según la progresión.
  • Migraciones respaldadas y reversiones probadas.
  • Tamaño de metadatos limitado; validado del lado del servidor.

Plantillas descargables (en línea)

Presupuesto de peso CSV (copiar a Hojas de cálculo de Google)

nombre, etiqueta, clase, peso_g, pila, tamaño_de_pila agua, botella de agua, consumible, 500, verdadero, 10 venda, venda, médico, 150, verdadero, 5 ganzúa, ganzúa, herramienta, 50, verdadero, 10 munición_de_pistola, munición_de_pistola (30), munición, 450, verdadero, 5 arma_pistola, pistola, arma, 1500, falso, 1

Tabla de capacidad del vehículo (CSV)

contenedor,peso_g,ranuras Guantera,10000,5 Baúl Sedán,80000,20 Baúl SUV/Van,120000,25 Baúl Camión,180000,28 Motocicleta,8000,3

Errores comunes y soluciones

  • Los jugadores siempre están sobrecargados → Reducir el peso de los 3 objetos más comunes en 15%; aumentar el límite de jugadores en 10%.
  • Acaparamiento infinito de microartículos → Introduzca un límite de ranura; establezca el peso mínimo del artículo (por ejemplo, 25 g).
  • Inflación económica por acumulación de existencias → Añadir productos perecederos expiración, creación de fricción de peso de entrada o tarifas de alijo.
  • Hinchazón de la base de datos → Podar claves de metadatos; evitar grandes notas campos.

Próximos pasos

  • Implemente los ajustes preestablecidos híbridos anteriores y luego itere con telemetría.
  • Alinee la fricción del inventario con los pagos y los precios: consulte nuestra publicación sobre economía para lavabos y modelos de progresión que combinan bien con estas configuraciones.

¿Tienes preguntas sobre una bifurcación específica del framework o un inventario personalizado? Cuéntanos los detalles y adaptaré las configuraciones exactas.

Lucas
Lucas

Soy Luke, gamer y me encanta escribir sobre FiveM, GTA y juegos de rol. Dirijo una comunidad de juegos de rol y tengo unos 10 años de experiencia administrando servidores.

Artículos: 436