Skip to content

DonPlastico/DP-Inventory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎒 [FiveM] ¡EL INVENTARIO DEFINITIVO! | DP-Inventory 🎒

DP-Inventory Banner

License FiveM QBCore Vue.js

📝 Descripción General

¡Olvida todo lo que sabías sobre inventarios en FiveM! DP-Inventory es una reescritura masiva desde cero del clásico `qb-inventory`. Se ha transformado en un ecosistema moderno, optimizado y visualmente espectacular gracias a su frontend rediseñado con Vue.js 3, CSS3 avanzado y comunicación mediante Axios.

¿Qué es y qué hace?

Es el núcleo central de gestión de ítems e interacciones para el jugador. Entre sus múltiples sistemas integrados destacan:

- 🎨 Interfaz Rediseñada en Vue.js 3: Diseño oscuro, moderno, minimalista, bordes limpios e Iconos Iconify. Reactividad perfecta.
- 📁 Sistema de Pestañas (Tabs): Navega fluidamente entre Inventario, Personaje, Ropa, Armas, Vehículo, Ajustes y Panel Admin.
- 🎒 Mochilas Inteligentes (Sistema Stash): Las mochilas (`custom_bag_X`) son stashes portátiles con identificadores únicos (`bag_XXXXXX`).
- 🛡️ Chalecos y Slots Dedicados: Slots de equipamiento visuales (101 y 102) independientes para tu mochila y chaleco antibalas.
- 📊 Durabilidad Visual Inteligente: Barras de progreso precisas bajo cada ítem que indican la calidad de armas y desgaste de chalecos.
- 🖱️ Drag & Drop Avanzado: Arrastra y suelta fluidamente entre inventarios, maleteros, guanteras o tira directamente al suelo.
- 📱 Menús Contextuales Modernos: Haz clic derecho en cualquier ítem para desplegar opciones dinámicas (Usar, Dar a cercanos, Tirar, Dividir, Copiar Nº Serie, Accesorios).
- 🔫 Sistema de Accesorios de Armas: Panel modal dedicado para inspeccionar el arma en 3D, ver su número de serie y acoplar/desacoplar silenciadores, miras y cargadores arrastrando accesorios.

¿Cómo funciona? (Mecánicas Backend / Frontend)

Todo el backend ha sido reescrito para eliminar los temidos dupes (duplicación de ítems) y mejorar el rendimiento. Cuenta con sistemas altamente inmersivos y seguros:

- Optimización O(1) y Caché RAM: El servidor no satura la base de datos. Los inventarios, tiendas y drops se cargan en la memoria RAM del servidor al arrancar. Los bucles innecesarios se han eliminado en favor de accesos directos por slot.
- Mecánica de Mochilas Realista (Reducción de Peso): La mochila no solo te da slots extra, sino que el servidor calcula el peso total de los ítems en su interior y lo divide entre 3. Si llevas 30kg dentro de la mochila, tu personaje solo sentirá 10kg de carga real.
- Anti-Desbordamiento Automático: Si te quitas una mochila llena, el servidor detecta los ítems que ya no caben en tus bolsillos normales y los tira automáticamente al suelo en una bolsa física (evitando borrados accidentales o exploits de espacio).
- Sincronización Visual Inteligente (Ropa y Props): Al equipar un chaleco o mochila, detecta el género (Hombre/Mujer) y aplica el ID de ropa exacto. Las armas largas que no llevas en la mano se renderizan físicamente en tu espalda mediante props 3D.
- Seguridad Anti-Loss y Locks: Si dos personas intentan abrir el mismo maletero o bolsa del suelo, el servidor lo bloquea (lock). Además, los inventarios se guardan instantáneamente en BD al cerrarse y cuentan con un escudo de guardado automático al apagar el servidor (integración con eventos de txAdmin).
- Documentos Inmersivos (Chat 3D): Usar el DNI o la Licencia de Conducir calcula las coordenadas exactas y genera una tarjeta HTML en el chat únicamente para los jugadores que se encuentren a menos de 3 metros de distancia.

¿Qué te permite?

✅ Reorganizar tu equipo de forma visual y rápida (Soporte avanzado para Hotbar 1-5) 🎒.
✅ Acciones rápidas de personaje (Cachear, Amenazar, Cargar, Caballito) 🧍‍♂️.
✅ Integración con Rockstar Editor para grabar clips de forma segmentada 🎬.
✅ Gestión completa de Ropa (quitar y poner prendas específicas al instante) 👕.
✅ Modificar el estilo de apuntado (Normal, Gangster, Cowboy) y posición de armas a la espalda 🔫.
✅ Control total del vehículo desde el inventario (Motor, ancla de barcos, asientos, puertas y ventanillas) 🚗.
✅ Panel de Administración Integrado para inspeccionar jugadores, maleteros y stashes remotamente 👑.
✅ Comandos Admin Inteligentes (`/giveitem` genera autometadatos: DNIs con tu nombre, armas con número de serie único y calidad al 100%, etc.) 🛠️.
Cursor Libre (Tecla J): Permite ocultar el ratón para rotar la cámara y mirar a tu alrededor mientras mantienes el inventario abierto en pantalla 🖱️.


🚀 Instalación

Requisitos previos

- Servidor FiveM con QBCore Framework instalado y actualizado.
- Base de datos MySQL configurada (oxmysql).

🚀 Guía de Instalación y SQL

1. **Descargar el script** y colocar la carpeta en tu servidor. Eliminar tu antiguo `qb-inventory`, `lj-inventory` o el que tengas.
- ⚠️ Asegúrate de que el nombre de la carpeta sea exactamente `DP-Inventory`.
2. **Base de Datos (IMPORTANTE)**.
- Ejecuta los archivos `DP-Inventory.sql` y `migrate.sql` en tu base de datos. Esto creará la tabla `dp_preferences` para guardar los ajustes de los usuarios y adaptará las tablas necesarias.
3. **Instalación de Ítems Especiales (Mochilas)**.
- Abre tu archivo `qb-core/shared/items.lua` y añade las mochilas custom. - **REGLAS DE ORO PARA MOCHILAS:** - El `name` (ID técnico) debe contener **siempre** la palabra `custom_bag` al principio. - Debe tener `unique = true`, `useable = true` y `shouldClose = true`. - Puedes definir los huecos con `bagSlots` y el peso interno con `bagMaxWeight`. - **Ejemplo para copiar y pegar:** ```lua -- ══════════════════════════════════════════════════════ -- MOCHILAS CUSTOM (SISTEMA STASH - PESO DINÁMICO) -- ══════════════════════════════════════════════════════ custom_bag_1 = { name = 'custom_bag_1', label = 'Bolsa de Deporte', weight = 500, -- Peso base (vacía). El server suma el peso del interior aquí. type = 'item', image = 'custom_bag_1.png', unique = true, -- OBLIGATORIO para inyectarle la ID del Stash useable = true, shouldClose = true, bagSlots = 15, -- Slots que tendrá al abrirse bagMaxWeight = 50000, -- Peso máximo soportado en el interior (50 KG) description = 'Una bolsa de deporte amplia. Su peso total en tu inventario dependerá de lo que guardes en su interior.' }, custom_bag_2 = { name = 'custom_bag_2', label = 'Macuto de Asalto Oculto', weight = 1000, type = 'item', image = 'custom_bag_2.png', unique = true, useable = true, shouldClose = true, bagSlots = 30, bagMaxWeight = 100000, -- 100 KG description = 'Macuto reforzado e impermeabilizado. Perfecto para ocultar material sensible.' }, ``` 4. **Dependencias visuales**.
- Asegúrate de copiar la carpeta de imágenes (Más de 7.000 imágenes) dentro de `ui/images`.
5. **Asegurar el recurso**.
- Añade `ensure DP-Inventory` a tu `server.cfg`.


📂 Estructura del Script

DP-Inventory
├── 📁 client
│   ├── 📄 backitems.lua (Lógica de armas/objetos a la espalda visuales)
│   ├── 📄 backpack_cl.lua (Sincronización visual de chalecos y mochilas en ped)
│   ├── 📄 drops.lua (Gestión de props físicos y objetos en el suelo)
│   ├── 📄 main_client.lua (Núcleo del cliente, callbacks, acciones y NUI)
│   └── 📄 vehicles.lua (Cálculos de clase para maleteros/guanteras y animaciones)
├── 📁 config
│   ├── 📄 backitems.lua
│   ├── 📄 config.lua
│   └── 📄 vehicles.lua
├── 📁 locales
│   └── 📄 cs.lua, de.lua, en.lua, es.lua, nl.lua
├── 📁 server
│   ├── 📄 backpack_sv.lua (Cálculo de penalización de peso y desbordamiento de ítems)
│   ├── 📄 commands.lua (Comandos admin /testreq, /giveitem con metadatos)
│   ├── 📄 functions.lua (Funciones base CRUD O(1), metadatos, validaciones)
│   └── 📄 main_server.lua (Núcleo del servidor, callbacks, persistencia SQL, preferencias)
├── 📁 ui
│   ├── 📁 images (Más de 7.000 imágenes de ítems)
│   ├── 🌐 index.html (Estructura base y Vue.js template)
│   ├── 📄 script.js (Lógica Vue.js, Axios, Drag&Drop)
│   └── 🎨 style.css (Estilos, Grid, animaciones, variables de color)
├── 📄 DP-Inventory.sql
├── 📝 README.md
├── 📄 fxmanifest.lua
└── 📄 migrate.sql

🎮 Controles por Defecto y Comandos

[F2] - Abrir/Cerrar el inventario (configurable).
[J] - Activar/Desactivar el Modo Cursor Libre (navega con WASD/Ratón mientras está abierto).
[Z] - Mostrar/Ocultar Cinturón visual (Hotbar).
[1] al [5] - Usar rápidamente los ítems de la Hotbar.
/giveitem - (Solo Admin) Dar un ítem a un jugador.
/randomitems - (Solo Admin) Dá ítems aleatorios a un jugador.
/clearinv - (Solo Admin) Vacia el inventario de un jugador.
/testreq - (Solo Admin) Muestra el UI de ítems requeridos para desarrollo/tests.


⚙️ Dependencias

📦 Requisitos del Sistema

Recurso Descripción / Estado
FW QB-Core 🔴 OBLIGATORIO
SQL oxmysql 🔴 OBLIGATORIO
W qb-weapons 🔴 OBLIGATORIO (Para sistema de accesorios)
DP DP-TextUI 🔴 OBLIGATORIO (Para los botones de interación con las bolsas/items)


🖼️ Vistas Previas

Interfaz Principal y Tooltips Dinámicos



Menú Contextual e Inspección de Armas (WIP)



Pestaña de Acciones de Vehículo y Ropa



Sistema de Notificaciones Monocromáticas (ItemBox)



Panel Maestro de Administración



🎥 Video Demostrativo

Ver Funcionamiento

Video Demostrativo DP-Inventory



🔮 Posibles Mejoras Futuras (Roadmap)

Desarrollos planeados y correcciones en curso para próximas versiones.

🚧 Roadmap y Sugerencias

TAREA / IDEA EXPLICACIÓN ESTADO
Menú de Documentos (Tab Personaje) Replicar el script de k5_documents desde cero y meter un export para que se acceda directamente desde este botón del inventario. ⏳ Pendiente
Posicionamiento de Armas (Tab Armas) Arreglar las posiciones exactas de las pistolas y armas grandes (posiciones de bones) del ped cuando se usa el menú de posicionamiento. 🛠️ En proceso
Integración DP-VehicleKeys (Tab Vehículo) Cambiar el botón simple de llaves. Al hacer clic, ocultará los controles y mostrará una lista (estilo panel admin) para dar llaves a cercanos, ver quién tiene copia, etc. Requerirá export al futuro sistema DP-Vehiclekeys. 💡 Planificado
Posicionamiento Libre de la UI (Tab Ajustes) Permitir al jugador mover la UI libremente por la pantalla, guardando el Top y Left en la Base de Datos mediante porcentajes (%). Al mover el inventario primario, el secundario/stash/drop se moverá en conjunto dinámicamente con él. (Cono el DP-AdminMenu o DP-Boombox_v2) 🚀 Próximo

Autor: DP-Scripts
Versión: 1.2.5

About

¡Olvida todo lo que sabías sobre inventarios en FiveM! DP-Inventory es una reescritura masiva desde cero del clásico `qb-inventory`. Se ha transformado en un ecosistema moderno, optimizado y visualmente espectacular gracias a su frontend rediseñado con Vue.js 3, CSS3 avanzado y comunicación mediante Axios.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors