
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.luaDefiniciones (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áximoPor 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 servidor | Modelo | Peso máximo (g) | Tragamonedas | Notas |
|---|---|---|---|---|
| Nuevo/Pequeño (≤40 pp) | Híbrido | 80,000 | 30 | Incorporación más rápida; menos problemas iniciales. |
| Medianos (40–150) | Híbrido | 120,000 | 35 | Equilibrado para RP general; bueno para diversos trabajos. |
| Pop de alta gama (más de 150) | Híbrido | 150,000 | 32 | Ajustar las ranuras para frenar el acaparamiento y mantener un peso justo. |
Vehículos (valores predeterminados comunes)
| Recipiente | Peso máximo (g) | Tragamonedas | Razón fundamental |
|---|---|---|---|
| Guantera | 10,000 | 5 | Pequeño alijo que fomenta la planificación. |
| Baúl de los sedanes | 80,000 | 20 | Base. |
| Baúl de SUV/furgoneta | 120,000 | 25 | Los vehículos utilitarios adquieren significado. |
| Camión (utilitario) | 180,000 | 28 | Jugabilidad logística. |
| Almacenamiento de motocicletas | 8,000 | 3 | Bolsillos mínimos. |
Escondites y contenedores especiales
| Tipo | Peso máximo (g) | Tragamonedas | Notas |
|---|---|---|---|
| Alijo de la casa (niveles 1/2/3) | 120k / 180k / 240k | 40 / 60 / 80 | Incentiva la mejora de las viviendas. |
| Casillero de trabajo | 80,000 | 20 | Prevenir exploits de transferencia. |
| Casillero de pruebas | 240,000 | 120 | Conveniencia 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.
| Clase | Ejemplos | Peso sugerido (g) |
|---|---|---|
| Muy claro | Hoja para ganzúas, USB, SIM | 5–50 |
| Luz | Munición de pistola (10), vendaje, refrigerio | 100–250 |
| Medio | Botella de agua, hamburguesa, kit de reparación. | 400–800 |
| Pesado | Caja de munición para rifle (30), tanque de oxígeno, caja de material | 1.500–4.000 |
| Muy pesado | Caja de armas, bolsa de dinero (marcada) | 6.000–12.000 |
Munición: Presupuesto por unidad para pilas agrupadas (por ejemplo,
9 mm = 15 gcada 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óncomprobar 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/servidorcomportamientos 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
- 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 qb → inventario_de_bueyes
Campos del mapa
Elementos QB.lua→datos de buey/items.lua(nombre,etiqueta,peso,pila/único,comportamientos cliente/servidor).inventario de jugadorestabla: convertirinformaciónJSON →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
- Establecer global
useWeight = verdaderoen configuración (varía según la bifurcación). - Reemplazar por artículo
límiteconpeso(g). Para artículos anteriormentelímite = -1, asignar pesos realistas. - 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ón→metadatos. - Esté atento a las teclas personalizadas (
calidad,imagen,creadoEn). Normalizar al esquema canónico.
Equilibrio del flujo de trabajo (sprint de 1 semana)
- Día 0:Implementar ajustes preestablecidos; migrar elementos a la tabla de presupuesto.
- Día 1–2: Telemetría de captura: peso promedio transportado, espacios utilizados, distribución de elementos por trabajo.
- Día 3:Ajustar los valores atípicos (+5–10% peso en los 5 elementos principales acumulados).
- Día 4–5:Roles del vehículo: mejorar los baúles utilitarios; debilitar el abuso de la guantera.
- Día 6:Perecederos: añadir
expiraciónpara consumibles de alto margen. - 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 incluirde 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
notascampos.
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.
Recursos relacionados con FiveMX
Utilice estas secciones de FiveMX para comparar productos relacionados, categorías y guías de configuración antes de elegir un recurso.






