Cómo funcionan las integraciones#
Todo lo que toca otro recurso está en un pequeño archivo puente abierto en client/custom/ o server/custom/. Cuando arranca qs-housing, mira qué recursos ya están en ejecución y carga el puente correspondiente para cada capa.
Capa | Compatibles | Sin ella |
|---|---|---|
Framework | es_extended · qb-core · qbx_core | Standalone: una plantilla que completas en |
Inventario | qs-inventory · ox_inventory · qb-inventory · ps-inventory · core_inventory · codem-inventory · origen_inventory · jaksam_inventory · tgiann-inventory · ak47_inventory · inventory (Chezza) | Los almacenes no se abren. En ESX puro, establece |
Garaje | qs-advancedgarages · qb-garages · jg-advancedgarages · cd_garage · okokGarage · loaf_garage · rcore_garage · zerio-garage · codem-garage · ak47_garage · ak47_qb_garage · vms_garagesv2 · cs-garages · msk_garage · RxGarages · ws_garage-v2 · op-garages · op_garages_v2 · bazufix-garages | Las casas no tienen garaje. |
Armario | qs-appearance · illenium-appearance · fivem-appearance · qb-clothing · codem-appearance · ak47_clothing · raid_clothes · rcore_clothes · rcore_clothing · origen_clothing · sleek-clothestore · tgiann-clothing · p_appearance · 0r-clothingv2 · 17mov_CharacterSystem | El menú de conjuntos propio del framework (esx_skin o qb-clothing). |
Target | ox_target · qb-target, con | Avisos [E] y marcadores en pantalla. |
Teléfono | qs-smartphone-pro · qs-smartphone · lb-phone · gksphone · okokPhone · roadphone · codem-phone | El número de teléfono de los carteles de "se vende" viene del framework. |
Banca / sociedad | Se configura a mano en |
|
Dispatch | qs-dispatch | Una alerta integrada: un blip de 10 segundos y una notificación para |
Sonido 3D | mx-surround · qs-3dsound · xsound | El reproductor de música de la casa queda en silencio. |
Clima | Renewed-Weathersync · qb-weathersync · cd_easytime · vSync · av_weather | La lluvia y la noche pueden verse dentro de los shells. |
Text UI · HUD | qs-textui · qs-interface | Texto 3D simple. |
Seguro | m-insurance | Sin póliza de seguro de hogar al comprar. |
Forzar la detección#
Cada capa de config/main.lua es una lista de nombres de recursos. Sustituye la detección por un valor fijo cuando haya dos candidatos en ejecución a la vez, o cuando uses un script cuyo nombre no conoce la lista:
-- Auto, the default: the started resource from the list is used.
Config.Inventory = DependencyCheck(inventories) or 'default'
-- Forced: always use this bridge.
Config.Inventory = 'ox_inventory'
Config.Garage = 'jg-advancedgarages'
Config.Wardrobe = 'illenium-appearance'
Config.Phone = 'lb-phone'El valor es el nombre del archivo puente. Hay dos puentes que nunca se detectan automáticamente y deben configurarse así: esx_inventory (inventario) y yseries (teléfono).
Banca y dinero de la sociedad#
Cuando una casa construida en el creador se vende por primera vez, Config.SocietyCommision del precio va a la sociedad del trabajo del creador. El alquiler de los alquileres de empresa también va ahí. Config.Society no se detecta — configúralo según tu servidor:
Valor | Para |
|---|---|
| ESX (por defecto). La cuenta |
| QBCore y Qbox. |
| Esos scripts de banca. El valor distingue mayúsculas y minúsculas. |
| Se paga como impuesto municipal. |
| Sin sociedad: el creador recibe directamente la primera venta. |
Las apps de banca también pueden pagar hipotecas, alquileres y facturas en nombre de un jugador a través de la API de apps — consulta Comandos y exports.
Targets y menús radiales#
Con Config.UseTarget = true, cada aviso — puertas, almacén, armario, muebles, basura, mascotas, el robot, inmobiliarias — se convierte en una opción de ox_target o qb-target. Con ello desactivado, el script dibuja avisos [E] y marcadores.
Para entrar y salir desde un menú radial, oculta el texto de la puerta con Config.DisableHouseEnterExitDrawText = true y dispara estos eventos de cliente:
TriggerEvent('housing:radial:enterHouse')
TriggerEvent('housing:radial:exitHouse')Teléfonos#
Todos los teléfonos compatibles proporcionan el número del agente en los carteles de "se vende". Con qs-smartphone o qs-smartphone-pro, la app Housing va más allá: explora el mercado y el mapa, compra, alquila y vende, paga el alquiler y las facturas, enciende las luces, gestiona los códigos de la caja fuerte, compra mejoras y pide comida, bailarinas y muebles. Sus reglas están en Config.PhoneHousing:
Config.PhoneHousing = {
requireProximityForPurchase = true, -- must stand near a house to buy or rent it from the phone
purchaseMaxDistance = 48.0,
actionCooldownSeconds = 2,
}qs-smartphone también incluye el cargador de teléfono de la casa (F3 → Charge).
El clima dentro de las casas#
Los shells se colocan en el cielo, así que el clima real se colaría dentro. Al entrar, client/custom/weather/weather.lua pausa el script de clima, fuerza un clima despejado y la hora Config.TimeInterior (23), y lo reanuda al salir. Para un script de clima que no esté en la lista, añade sus eventos de pausa y reanudación a ese archivo.
Anticheat (FiveGuard)#
El creador, el modo decoración, el modo foto, la cámara de la puerta y las vistas previas de IPL alejan la cámara del jugador, y entrar en un shell lo teletransporta. Los anticheats lo interpretan como freecam, noclip o teletransporte. Indica el nombre de tu recurso de FiveGuard y qs-housing pedirá permisos temporales justo en esos momentos:
Config.FiveGuard = 'your-fiveguard-resource' -- false to disableLos permisos solo se conceden a jugadores cerca de una casa o con acceso al creador, y se retiran en cuanto se cierra la cámara. Para otro anticheat, reemplaza la función grant() en server/custom/anticheat.lua. Si tu anticheat bloquea InteractSound, establece Config.DisableInteractSound = true.
Logs de Discord y fotos#
Pega un webhook en config/webhooks.lua y cada acción importante se publica como embed: casas creadas, compradas, alquiladas, vendidas y transferidas; alquileres y facturas pagados; desahucios; mejoras y muebles comprados o vendidos; llaves físicas creadas, entregadas y eliminadas.
-- config/webhooks.lua
DiscordWebhook = 'https://discord.com/api/webhooks/...'
WebhookColor = 16711680Las fotos de los anuncios (creador y F3) y las miniaturas de muebles se suben a FiveManage. Pon tu token en config/fivemanage.lua; ambos archivos son solo de servidor y nunca llegan a los jugadores.
-- config/fivemanage.lua
Config.FiveManageToken = 'your-token'Añadir un backend#
Dar soporte a un script que no está en la lista requiere un solo archivo:
Copia el puente más parecido
Cada puente es un pequeño archivo abierto, por ejemplo
client/custom/inventory/ox_inventory.lua. Copia el que más se parezca a tu script y renómbralo.Cambia su guarda y sus funciones
La primera línea sale antes de tiempo salvo que su capa coincida con el archivo, como
if Config.Inventory ~= 'my_inventory' then return end. Apúntala a tu nombre y cambia las llamadas internas por los exports de tu script.Capa
Funciones que debe proporcionar
Inventario (cliente)
openStash(data, uniq),ToggleInventoryClothing(state)Armario (cliente)
openWardrobe()Garaje (servidor / cliente)
TriggerAddHouseGarage,TriggerHouseUpdateGarage,TriggerHouseRemoveGarage/OpenGarage,StoreVehicleTeléfono (servidor)
GetPlayerPhone(source)Sociedad (servidor)
AddMoneyToSociety(source, society, amount)Dispatch (cliente)
AlarmDispatch(house),SensorDispatch()Selecciónalo
Establece el valor a mano (ver Forzar la detección), o añade
['your-resource'] = 'my_inventory'a la lista de la capa enconfig/main.lua. Reinicia.
Los frameworks se amplían de la misma forma: el puente standalone enumera cada función que llama el script, cada una marcada con lo que debe devolver.
Idiomas#
Se incluyen 41 traducciones en locales/: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi y zh. Elige una en config/main.lua, o para todos los recursos de Quasar a la vez en server.cfg:
setr qs:locale "es"Cualquier texto que falte en una traducción usa el inglés. Para añadir un idioma, copia en.json con un nuevo código, tradúcelo y establece el locale — basta con reiniciar el recurso. La conformación del texto árabe usa el recurso support-arabic. Aura Voice reconoce los comandos en su propio idioma, configurado en config/assistant.lua.



