Cómo funciona
SL-QuickWheel es una capa de interfaz. Nunca guarda su propia copia de los objetos del jugador: cada vez que se abre la rueda, los lee del inventario, y cada acción se delega en las funciones de ese inventario. Así la rueda se mantiene coherente con todo lo demás de tu servidor, incluidos los hooks, los logs y las comprobaciones del anticheat.
Detección
Sección titulada «Detección»Con Config.Inventory = 'auto', el inventario se elige en este orden:
ox_inventory, si está en marcha, con cualquier framework.- El inventario de QBCore, en QBCore.
- El inventario de ESX, en ESX.
- Modo nativo en cualquier otro caso.
El framework se detecta de la misma forma, comprobando qbx_core, después qb-core y después es_extended. Ambos se pueden fijar con Config.Inventory y Config.Framework.
Funciones por inventario
Sección titulada «Funciones por inventario»| ox_inventory | Inventarios de QBCore | Inventario de ESX | |
|---|---|---|---|
| Leer objetos | GetPlayerItems |
PlayerData.items |
loadout e inventory |
| Equipar un arma | useSlot, como su barra rápida |
qb-weapons:client:UseWeapon |
Selecciona el arma en la mano |
| Usar un objeto | useSlot |
UseItem de qb-inventory |
ESX.UseItem |
| Dar | giveItemToTarget |
RemoveItem y AddItem |
Funciones del jugador |
| Tirar | RemoveItem y CustomDrop |
La forma de tirar del propio inventario | Recogida de ESX |
| Contenedores | GetInventory, CanCarryItem, RemoveItem, AddItem |
CreateInventory, GetInventory, CanAddItem, RemoveItem, AddItem |
No disponible |
| Movimientos de la hotbar | swapItems, como su ventana |
RemoveItem y AddItem |
No disponible |
Con ox_inventory, equipar mediante useSlot hace que ox siga gestionando la munición, la durabilidad y sus propias comprobaciones. Cuando Config.WeaponAnimations es false, se omiten sus animaciones de enfundar y desenfundar para que el cambio sea inmediato.
Validación en el servidor
Sección titulada «Validación en el servidor»Usar, dar, tirar, coger, guardar y los movimientos de la hotbar pasan por eventos de servidor que comprueban, antes de llamar al inventario:
- que la cantidad es un número entero entre 1 y 1.000.000;
- que el jugador tiene realmente ese objeto en ese hueco;
- en Dar, que el destinatario existe, no es el propio jugador y está dentro de
Config.GiveDistance; - en los contenedores, que el jugador puede alcanzarlo: un maletero sin cerrojo cercano, una guantera solo desde dentro del vehículo u objetos en el suelo a pocos metros, y que los objetos caben;
- un límite de una acción cada 300 ms por jugador.
Si una comprobación falla, no se mueve nada. Si una transferencia falla a medias, por ejemplo porque el destino está lleno, el objeto vuelve a su origen.
Archivos
Sección titulada «Archivos»| Archivo | Editable | Contenido |
|---|---|---|
config.lua |
Sí | Toda la configuración |
client/, server/, shared/ |
No (escrow) | Lógica de la rueda y adaptadores de inventario |
locales/ |
No (escrow) | Textos en inglés y español |
html/ |
Compilado | La interfaz |