Skip to content

Cuxial Bridge

La capa de compatibilidad que usan todos los scripts de Cuxial para hablar con tu framework, inventario y target.

Cuxial Bridge permite que un mismo script funcione en QBox, QBCore o ESX sin editarlo. Los scripts le piden al bridge jugadores, dinero, trabajos, items y opciones de target; el bridge traduce cada petición a lo que use tu servidor.

Es gratuito y de código abierto. Lo necesitan todos los scripts de Cuxial y se instala una sola vez.

Con qué es compatible ​

CapaCompatiblesSe detecta por
FrameworkQBox, QBCore, ESXqbx_core, qb-core, es_extended
Inventarioox_inventory, qb-inventoryRecurso con ese nombre
Targetsleepless_interact, ox_target, qb-targetRecurso con ese nombre

La detección sigue el orden de cada fila. Si hay dos opciones en marcha, gana la primera: qbx_core sobre qb-core, ox_inventory sobre qb-inventory, sleepless_interact sobre ox_target.

Si no se detecta nada, el bridge recurre a QBox, ox_inventory y ox_target.

Algunos scripts requieren un framework concreto: Cuxial Multichar requiere QBox o QBCore. La página de cada script indica sus requisitos.

Instalación ​

Instala la dependencia ​

Cuxial Bridge necesita ox_lib. Comprueba que está instalado y que arranca antes que el bridge.

Copia el recurso ​

Descarga la última versión desde GitHub y coloca la carpeta cuxial_bridge en tu directorio resources. Cada versión y sus cambios están en la página de releases.

Mantén el nombre de carpeta cuxial_bridge. Todos los scripts lo cargan con ese nombre exacto y no arrancan si lo cambias.

Arráncalo después de tu framework ​

Añádelo debajo de tu framework, inventario y target, y encima de todos los scripts de Cuxial.

server.cfg
cfg
ensure ox_lib
ensure qbx_core
ensure ox_inventory
ensure ox_target

ensure cuxial_bridge

Sustituye las líneas de framework, inventario y target por las que use tu servidor.

Revisa la consola del servidor ​

Al arrancar, el bridge muestra lo que ha detectado:

[cuxial_bridge] listo framework=qbox inventario=ox_inventory target=ox_target contexto=server

Si los tres valores coinciden con tu servidor, ya está.

Configuración ​

Cuxial Bridge no tiene archivo de configuración. Las convars de abajo solo hacen falta cuando la detección elige la opción equivocada.

Forzar una opción ​

ConvarPor defectoValores
cuxial_bridge:frameworkautoauto, qbox, qbcore, esx
cuxial_bridge:inventoryautoauto, ox_inventory, qb-inventory
cuxial_bridge:targetautoauto, sleepless_interact, ox_target, qb-target
server.cfg
cfg
setr cuxial_bridge:framework "esx"
setr cuxial_bridge:inventory "ox_inventory"
setr cuxial_bridge:target "ox_target"

Usa setr, no set. Estos valores se leen en el servidor y en el juego de cada jugador; con set los dos lados pueden no coincidir. Coloca las líneas encima de ensure cuxial_bridge.

Tablas de base de datos personalizadas ​

Cámbialas solo si tu framework guarda los personajes o los vehículos en tablas con otros nombres. Solo se leen en el servidor, así que basta con set.

ConvarPor defecto en QBox / QBCorePor defecto en ESXQué es
cuxial_bridge:charTableplayersusersTabla de personajes
cuxial_bridge:charIdColumncitizenididentifierColumna del identificador del personaje
cuxial_bridge:vehTableplayer_vehiclesowned_vehiclesTabla de vehículos en propiedad
cuxial_bridge:vehOwnerColumncitizenidownerColumna del dueño del vehículo
server.cfg
cfg
set cuxial_bridge:charTable "players"

Para desarrolladores ​

Tus propios recursos también pueden usar el bridge. Añade '@cuxial_bridge/init.lua' a sus shared_scripts y llama a Bridge.*. Estos módulos son los más útiles fuera de los scripts Cuxial.

Bridge.Jobs (servidor) ​

Gestiona los miembros de cualquier trabajo, con el jugador conectado o desconectado, en QBox, QBCore y ESX. Pensado para menús de jefe que contratan, despiden y ascienden.

FunciónDevuelveQué hace
Bridge.Jobs.Members(job)table[]{ cid, name, grade, online, src? } de cada miembro, conectado o no.
Bridge.Jobs.Grades(job)table[]{ grade, name, isboss } de menor a mayor.
Bridge.Jobs.Grade(cid, job)number | nilGrado del personaje en ese trabajo, o nil si no es miembro.
Bridge.Jobs.Hire(cid, job, grade)ok, errLe da ese trabajo como principal.
Bridge.Jobs.SetGrade(cid, job, grade)ok, errCambia el grado de un miembro.
Bridge.Jobs.Remove(cid, job)booleanLe quita el trabajo, solo si es el suyo.

Errores posibles: params, no_job, no_grade, already, not_member, not_found, max_jobs, framework. En QBox, Hire respeta qbx:setjob_replaces y qbx:max_jobs_per_player.

lua
local ok, err = Bridge.Jobs.Hire(cid, 'mechanic', 0)
if not ok then print('no se pudo contratar', err) end

Bridge.Anim (cliente) ​

Bloquea las animaciones del jugador mientras dura una escena de tu recurso: sentarse en un escritorio, un ascensor, una cinemática. Con el bloqueo, Cuxial Emotes no deja lanzar ni cancelar emotes, abrir el menú, levantar las manos, cruzar los brazos, señalar, hacer ragdoll, tumbarse ni agacharse, y al bloquear se suelta lo que estuviera haciendo.

FunciónDevuelveQué hace
Bridge.Anim.lock(reason)—Bloquea con un motivo propio ('seat', 'office'…). Repetirlo no cuenta dos veces.
Bridge.Anim.unlock(reason)—Suelta ese motivo.
Bridge.Anim.set(reason, locked)—lock o unlock según el booleano.
Bridge.Anim.unlockAll()—Suelta todos los motivos de tu recurso.
Bridge.Anim.isHeld(reason?)booleanSi tu recurso tiene ese motivo, o alguno si no pasas ninguno.
Bridge.Anim.isLocked()booleanSi el jugador está bloqueado por cualquier recurso.
lua
Bridge.Anim.lock('seat')
-- ... la escena ...
Bridge.Anim.unlock('seat')
  • Varios recursos y motivos se suman: el jugador queda libre cuando no queda ninguno.
  • Si tu recurso se para, sus bloqueos se sueltan. Si Cuxial Emotes se reinicia, los bloqueos vigentes se vuelven a aplicar.
  • El estado del jugador animLock vale 'recurso:motivo' del primer bloqueo, o nil. Léelo para no lanzar tu propia animación encima. Lo escribe el cliente: úsalo para impedir acciones, nunca para concederlas.
  • Mientras haya bloqueo, el móvil sd-phone queda desactivado y se reactiva al terminar, salvo que otro script ya lo hubiera desactivado. sleepless_interact oculta las opciones con animación mientras dure.
  • Requiere Cuxial Emotes. Sin él, las llamadas no hacen nada.

Bridge.Screens (servidor y cliente) ​

Añade pantallas y apps de Cuxial OS desde tu recurso a Cuxial Screens: registerScreen, removeScreen, registerApp, onCall, push, notify en el servidor, y open, close, isUsing en el cliente. Se vuelven a registrar solas si Cuxial Screens arranca después o se reinicia. Consulta Exports y eventos de Cuxial Screens.

Actualizaciones ​

Unos segundos después de arrancar el servidor, Cuxial Bridge comprueba la versión de cada script Cuxial que tengas, el propio bridge incluido, y escribe un único bloque en la consola del servidor: una línea por cada script con versión nueva, con el número nuevo y si es una actualización mayor, menor o un parche. Si todo está al día, escribe una sola línea. No se descarga ni se cambia nada automáticamente.

ConvarQué hace
cuxial_versioncheck 0Desactiva el aviso.
cuxial_versioncheck_quiet 1Oculta la línea que sale cuando todo está al día.
cuxial_versioncheck_details 1Muestra hasta 3 novedades por script desactualizado.
server.cfg
cfg
set cuxial_versioncheck_details 1

Para actualizar, descarga la última versión, sustituye la carpeta cuxial_bridge y reinicia el servidor.

Actualiza el bridge antes de actualizar un script: las versiones nuevas de los scripts pueden apoyarse en el último bridge. Consulta Actualizar un script.

Problemas frecuentes ​

La consola avisa de que no se detectó ningún framework

El aviso dice [cuxial_bridge] aviso: no se detectó framework, usando fallback "qbox".

Causa. Tu framework no estaba en marcha cuando cargó el bridge o un script.

Solución. Sube la línea ensure del framework por encima de cuxial_bridge y de todos los scripts de Cuxial. Si la carpeta del framework tiene un nombre no estándar, fuérzalo con setr cuxial_bridge:framework.

Se detecta el inventario o el target equivocado

Causa. Hay dos opciones en marcha a la vez, o la tuya arranca después de los scripts de Cuxial.

Solución. Revisa primero el orden de arranque. Si los dos recursos tienen que seguir, fuerza el correcto con setr cuxial_bridge:inventory o setr cuxial_bridge:target.

Un script no arranca y el error menciona cuxial_bridge/init.lua

Causa. El bridge falta, se ha renombrado o arranca después del script.

Solución. Comprueba que la carpeta se llama cuxial_bridge y que ensure cuxial_bridge aparece antes que el script.

© Cuxial