Personalización
Los ajustes están en config.lua. Los archivos que hablan con tu framework, tu inventario y tu recurso de target se dejan abiertos, para que un servidor que hace las cosas de otra forma pueda adaptarlos sin tocar el núcleo con escrow.
Qué archivo decide qué
Sección titulada «Qué archivo decide qué»| Archivo o carpeta | Qué decide | ¿Abierto? |
|---|---|---|
config.lua | Todos los ajustes de esta página, la función de notificación, los ítems y los sabores | Abierto |
locales/*.lua | Todos los textos: menú, etiquetas del target, mensajes. Un archivo por idioma | Abierto |
server_functions.lua | Obtener un jugador, añadir, quitar y comprobar ítems, registrar los ítems usables, el callback de la lista de sabores y ReduceStress | Abierto |
client/client_functions.lua | Leer los datos del jugador y la comprobación de trabajo para el menú de preparación | Abierto |
target/target.lua | Todas las opciones de target en cachimbas y muebles, para ox_target y qb-target | Abierto |
client/client.lua, server/server.lua, locale.lua | La colocación, la manguera, el humo, la propiedad y los suministros | Con escrow |
html/ | El menú de preparación: index.html, style.css, script.js | Archivos sin cifrar |
inventory_items/ | Definiciones de ítems listas para ESX, ox_inventory y QBCore | Referencia |
inventory_images/ | Un icono por ítem | Recursos gráficos |
mic_hookah_prop/stream/ | Los diez modelos de cachimba | Recursos gráficos, recurso aparte |
Framework, target e imágenes
Sección titulada «Framework, target e imágenes»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.Locale | Idioma | en |
Config.Framework | esx, qbcore o qbox | esx |
Config.ESXResourceName | El nombre de la carpeta de ESX | es_extended |
Config.QBResourceName | El nombre de la carpeta de QBCore | qb-core |
Config.QBoxResourceName | El nombre de la carpeta de QBox | qbx_core |
Config.Target | ox_target o qb-target | ox_target |
Config.QBTargetResourceName | El nombre de la carpeta de qb-target | qb-target |
Config.InventoryImagePath | De dónde carga el menú de preparación los iconos de sabores | nui://ox_inventory/web/images/ |
| Opción | Qué hace | Por defecto |
|---|---|---|
Config.AdminGroups | Grupos que pueden abrir el menú de cualquier cachimba o mueble, y recogerlo. false significa que todo el mundo cuenta como admin | false |
Config.AllowedJobs | Trabajos que pueden abrir el menú de preparación. false significa cualquier trabajo | false |
Tal como viene, cualquiera puede gestionar la cachimba de cualquiera. Para que cada cachimba pertenezca al jugador que la colocó, pon tus grupos de staff en Config.AdminGroups, por ejemplo admin y superadmin. En ESX la lista se compara con el grupo del jugador; en QBCore y QBox, con el campo permission del jugador.
Con una lista puesta:
| Quién | Open Setup Menu | Recoger | Grab Hose |
|---|---|---|---|
| El jugador que la colocó | sí (si su trabajo está permitido) | sí | sí |
| Un grupo de admin | sí (si su trabajo está permitido) | sí | sí |
| Cualquier otro | no | no | sí |
Config.AllowedJobs solo protege el menú de preparación. Cualquiera puede coger la manguera y fumar de una cachimba encendida.
Fumar y suministros
Sección titulada «Fumar y suministros»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.MaxActiveTime | Lo que significa “lleno” para el carbón y el agua. Un hookah_coal o un hookah_water lo llena hasta aquí | 1800 |
Config.ConsumptionPerPuff | Cuánto resta cada calada al charcoal y al water | 10 y 10 |
Config.MaxPuffsPerSession | Se calcula a partir de los dos anteriores (1800 ÷ 10 = 180). Es solo de referencia; el script no lo lee | 180 |
Config.MaxHoseDistance | Metros que se estira la manguera antes de romperse | 3.5 |
Config.MaxSimultaneousUsers | Límite previsto de personas fumando de la misma cachimba | 4 |
Config.Stress | Llama a ReduceStress en cada calada | true |
La cachimba no se consume con el tiempo: el carbón y el agua solo bajan cuando alguien da una calada. Cuando cualquiera de los dos llega a cero, la cachimba se apaga y hay que rellenarla.
ReduceStress en server_functions.lua recibe el ID de servidor del jugador en cada calada cuando Config.Stress está activado. Viene vacío, con ejemplos comentados: un evento de cliente, un export o un evento de servidor de tu recurso de estrés o de HUD. Pon ahí tu llamada.
| Opción | Qué hace | Por defecto |
|---|---|---|
Config.Particle | Qué partícula se usa: un dict y un name | scr_recartheft / scr_wheel_burnout |
Config.VapeExhale | Tamaño del humo | 0.5 |
La config marca estas dos como “no las cambies a menos que sepas lo que haces”. Cada nube dura tres segundos y se muestra a los jugadores que estén a menos de 150 metros.
Cachimbas, muebles y sabores
Sección titulada «Cachimbas, muebles y sabores»Las listas completas están en 🎒 Ítems.
Config.HookahItems: nombre del ítem → modelo. Para añadir una cachimba, el modelo tiene que estar en stream (por ejemplo en mic_hookah_prop/stream/ con una entrada en su .ytyp); después añade la línea aquí y el ítem a tu inventario.
Config.PlaceableProps: nombre del ítem → propModel, type (furniture) e isChair. Sirve cualquier prop del juego base. Pon isChair = true en todo lo que deba ofrecer Sit Down.
Config.Flavors: nombre del ítem → ajustes:
| Campo | Qué hace |
|---|---|
Label | Nombre que se muestra en el menú de preparación |
SmokeColor | Color R, G, B del humo |
ScreenEffect | Nombre de un efecto de pantalla de GTA que se aplica a quien fuma, o false para ninguno |
EffectDuration | Segundos que dura el efecto de pantalla |
La config enlaza una lista de nombres de efectos de pantalla junto a Config.Flavors. Para añadir un sabor, copia una entrada, dale un nombre de ítem nuevo y añade el ítem y su icono a tu inventario.
Notificaciones
Sección titulada «Notificaciones»Config.Notify en config.lua envía todos los mensajes: ShowNotification en ESX, Functions.Notify en QBCore y QBox, y la consola en cualquier otro caso. Sustituye su contenido para usar tu propio recurso de notificaciones.
Idiomas
Sección titulada «Idiomas»En locales/ vienen once archivos: en, es, fr, de, it, pt, ru, cn, nl, pl, tr. Elige uno con Config.Locale.
El comentario encima de Config.Locale también menciona jp, pero no viene ningún archivo en japonés; si lo pones, aparece “Locale [jp] does not exist”.
Cada archivo cubre el menú de preparación, las etiquetas del target y los mensajes. Unas pocas palabras están escritas en el Lua en lugar de en los archivos de idioma: las indicaciones de colocación (Rotate Right, Rotate Left, Height Up, Height Down, Place Prop, Cancel), “You are already placing an object” y “None” para un sabor vacío.
Para añadir un idioma: copia locales/en.lua, cambia la clave del principio por tu código y tradúcelo. El manifest carga solo todo lo que hay en locales/, así que no hay nada más que registrar. Pon Config.Locale, haz refresh y reinicia.
Adaptarlo a tu servidor
Sección titulada «Adaptarlo a tu servidor»| Para cambiar | Edita |
|---|---|
| Un framework propio | El objeto del framework al final de config.lua, y las funciones de server_functions.lua y client/client_functions.lua |
| Otro inventario | AddItem, RemoveItem y HasItem en server_functions.lua, y el registro de ítems usables que hay debajo |
| Otro target | target/target.lua: las listas de opciones son compartidas, solo cambian las dos llamadas addModel / AddTargetModel |
| Etiquetas, iconos o distancia del target | target/target.lua para iconos y distancia, locales/ para las etiquetas |
| Reglas de trabajos | CheckJobAccess en client/client_functions.lua |
En QBCore y QBox con ox_inventory arrancado, server_functions.lua también registra cada ítem de cachimba y de mueble mediante el propio hook de uso de ox_inventory, como respaldo para configuraciones en las que el bridge de ítems de QBCore no transmite el uso.
Teclas y comandos
Sección titulada «Teclas y comandos»| Tecla o comando | Cuándo | Qué hace |
|---|---|---|
| E | Sujetando una cachimba | Empieza a colocarla |
| X | Sujetando una cachimba | La guarda sin colocarla |
| Rueda del ratón | Colocando | Gira la vista previa |
| Flecha arriba / abajo | Colocando | Sube o baja la vista previa |
| E | Colocando | La deja |
| X | Colocando | Cancela |
| E | Sujetando la manguera de una cachimba encendida | Da una calada |
| X (“Hookah - Stand Up X”) | Sentado | Te levantas. Cada jugador puede reasignarla en sus controles de FiveM |
/hookah:chair:stand_up | Sentado | Lo mismo, como comando |