Cómo funcionan las integraciones#
Backrooms llega a cada recurso de terceros a través de un pequeño archivo puente sin cifrar y elige cuál usar según lo que esté en marcha al arrancar. La consola del servidor muestra el resultado en cada arranque:
[qs-backrooms:INFO] Started - framework: qb | inventory: ox_inventory | target: ox_targetCapa | Compatible | Sin él |
|---|---|---|
Framework |
| Standalone: el dinero y los ítems los guarda el propio script, identificados por licencia. Suficiente para probarlo en un servidor vacío. |
Inventario |
| Una bolsa de Backrooms dentro de cada partida (12 espacios, 18 kg). Lo que un jugador saca al escapar va al inventario de tu framework. |
Target |
| Los contenedores y los cuerpos usan el aviso |
Ambulancia |
| El script reanima a los jugadores por sí mismo. |
Notificaciones |
| ox_lib, que de todos modos es una dependencia. Dentro de una partida siempre se usan las notificaciones propias del script. |
Etiquetas 3D |
| Texto dibujado simple sobre las entradas y los supervivientes caídos. |
HUD |
| Tu HUD sigue en pantalla durante una partida hasta que lo conectes en |
Voz |
| Hablar no hace ruido. |
Teléfono |
| Solo se bloquean las teclas del teléfono. |
Misiones |
| Sin misiones. |
Base de datos |
| Obligatorio. El único. |
Cada integración opcional se degrada en silencio. Un recurso que falta hace que esa parte recurra a una alternativa, no que falle — por eso importa la línea de arranque. Usa solo un inventario y un target: con dos del mismo tipo iniciados, no está garantizado cuál se elige.
Frameworks#
Cada framework tiene un puente de cliente y otro de servidor en custom/esx/, custom/qb/ y custom/standalone/. El archivo de servidor gestiona el dinero, los ítems, las reanimaciones, los metadatos y quién cuenta como administrador; el archivo de cliente sabe si el jugador está cargado y si está muerto. Qbox funciona con el puente de QBCore.
La detección es una pequeña tabla al principio de config/config.lua. Si renombraste el recurso de tu framework, añade el nuevo nombre a la izquierda:
-- config/config.lua
local frameworks = {
['es_extended'] = 'esx',
['qb-core'] = 'qb',
['qbx_core'] = 'qb',
['my-core'] = 'qb', -- your renamed resource
}
Config.Framework = DependencyCheck(frameworks) or 'standalone'Los puentes llaman al framework por su nombre habitual — exports['es_extended'] o exports['qb-core'] al principio de cada archivo —, así que cámbialo ahí también. Las tablas inventories y targets justo debajo funcionan igual.
Standalone#
Sin framework, Backrooms guarda un registro por jugador en el almacenamiento propio del recurso — efectivo, banco, ítems y metadatos —, identificado por su licencia. Las recompensas por escapar llegan ahí, y los administradores son quienes tienen el ace command. Está pensado para pruebas; en un servidor en producción, úsalo con tu framework.
Inventarios#
Los ítems encontrados durante una partida van directamente al inventario del propio jugador, con los límites de peso y espacios de ox_inventory. Cada ítem usable de Backrooms se registra en ox_inventory al arrancar — la consola indica Registered 11 usable items with ox_inventory —, así que se puede usar desde el inventario normal además de desde la bolsa de Backrooms.
Igual que con ox_inventory: los ítems están en el inventario del jugador, y los usables se registran mediante los ítems usables de tu framework. qs-inventory también recibe las tres misiones de Backrooms de abajo.
El inventario predeterminado de ESX, qb-inventory y el resto usan una bolsa de Backrooms durante la partida: 12 espacios y 18 kg, que se abre con F2. Al escapar con botín, los ítems pasan al inventario de tu framework, donde se registran como ítems usables con ESX o QBCore.
Targets#
Con ox_target o qs-target, los contenedores de botín y los cuerpos tienen opciones de target — Search y Search the body — que solo funcionan mientras el jugador está dentro de una partida. Las salidas, las taquillas y las entradas siempre usan el aviso [E]. Ambos puentes están en client/custom/target.lua.
Trabajos de ambulancia y reanimaciones#
No hace falta editar tu trabajo de ambulancia.
Framework | Cómo se detecta la muerte | Cómo se reanima a un jugador |
|---|---|---|
ESX |
|
|
QBCore · Qbox | Los metadatos |
|
Standalone | La salud del jugador. | El script lo resucita. |
Dos ajustes deciden cómo comparten una muerte los Backrooms y tu trabajo de ambulancia: Wake up inside after dying — y su probabilidad — en Getting in, y Revive on the way out, que desactivas si tu trabajo de ambulancia debe ocuparse de los jugadores que salen muertos.
¿Usas otro script de ambulancia? Añade su evento de reanimación a framework:revive en el puente de tu framework — custom/esx/client.lua y server.lua, o los de custom/qb/.
Notificaciones, etiquetas y tu HUD#
client/custom/main.lua es donde los Backrooms se comunican con la pantalla, y puedes cambiar cada una de sus funciones:
Función | Qué hace |
|---|---|
| Dentro de una partida, las notificaciones propias del script. Fuera, |
| Las etiquetas sobre las entradas y los supervivientes caídos — |
| Se llama con |
Para ocultar tu propio HUD durante una partida, añade su export a SetCustomHud:
-- client/custom/main.lua
function SetCustomHud(visible)
if GetResourceState('qs-interface') == 'started' then
exports['qs-interface']:ToggleHud(visible)
end
-- your HUD
if GetResourceState('my-hud') == 'started' then
exports['my-hud']:SetVisible(visible)
end
endTeléfonos y otros scripts durante una partida#
Mientras un jugador está dentro, los Backrooms bloquean las teclas del teléfono y lanzan un evento de cliente que le indica a qs-smartphone que se retire — y otra vez cuando termina la partida. La lista también está en el state bag del jugador, LocalPlayer.state['qs-backrooms:blocked'], mientras dura la partida:
AddEventHandler('qs-backrooms:client:blockResource', function(resource, blocked)
-- resource: 'qs-smartphone'
-- blocked: true when the run starts, false when it ends
end)Para cualquier otro teléfono, radio o menú, comprueba exports['qs-backrooms']:IsInBackrooms() antes de abrirlo, o escucha los eventos de servidor de Comandos y exports.
Logs de Discord#
Las entradas, descensos, escapes, muertes, acciones de administración y nuevas entradas se pueden publicar en un canal de Discord. Define el webhook como convar en server.cfg — set, no setr, para que nunca llegue a un cliente:
set qs_backrooms_webhook "https://discord.com/api/webhooks/..."
set qs_backrooms_webhook_name "The Backrooms" # optional
set qs_backrooms_webhook_avatar "https://..." # optionalLog | Se envía cuando |
|---|---|
Backrooms Entry | Un jugador entra, con el nivel y la forma de entrar. |
Backrooms Admin Entry | Un administrador o un script envía dentro a un jugador. |
Backrooms Descent | Un jugador baja más. |
Backrooms Escape | Un jugador escapa, con el efectivo que se le pagó. |
Backrooms Death | Un jugador muere dentro, con el nivel y la causa. |
Backrooms Admin Removal |
|
Backrooms Door Placed | Un administrador coloca una entrada. |
Cada embed nombra al jugador con su identificador. Los logs se ponen en cola y se envían de uno en uno, así que un servidor con mucha actividad nunca satura Discord. Todo se construye en DiscordLog() en server/custom/main.lua, que tu propio código también puede llamar.
Misiones#
Con qs-inventory en marcha, cada jugador recibe tres misiones de Backrooms la primera vez que entra:
Misión | Se completa al |
|---|---|
Enter the Unknown | Entrar en los Backrooms. |
Escape the Madness | Escapar al menos una vez. |
Descend Deeper | Llegar a la planta más profunda. El progreso crece con cada nivel. |
Sus títulos, descripciones, recompensas y niveles requeridos están al principio de server/custom/main.lua.
Dinero e ítems#
Las recompensas por escapar se pagan en efectivo mediante framework:addMoney en el puente de servidor de tu framework, y los precios de las máquinas se cobran mediante framework:removeMoney, del efectivo o del banco. Los ítems pasan por framework:addItem, removeItem y getItemCount en el mismo archivo, que los delegan en ox_inventory o qs-inventory cuando alguno está en marcha. Otra cuenta de dinero u otra gestión de ítems se cambia ahí. server/custom/main.lua registra los ítems usables al arrancar y ofrece los helpers GiveItem, RemoveItem, HasItem y Notify para tus propias adiciones.
Idiomas#
Se incluyen 41 idiomas en locales/: inglés, español, francés, alemán, portugués, italiano, neerlandés, polaco, turco, ruso, ucraniano, árabe, chino, japonés, coreano y más. Elige uno en el panel de ajustes (General → Language) y se aplica a todos los jugadores a la vez, o define el predeterminado para todos los recursos de Quasar con setr qs:locale "de".
Para cambiar un texto, edita su línea en el archivo JSON de ese idioma. Una clave que falta en una traducción recurre al inglés, y la consola la nombra al arrancar.



