Documentación 9.6.24
Base de datos y puente
El puente utiliza la conexión oxmysql existente. No necesitas guardar la contraseña de la base de datos en el panel ni abrir MySQL a internet.
Lecturas compatibles#
La conexión está activada por defecto en todos los servidores y no necesita ninguna línea en server.cfg. Para apagarla en un servidor, ábrelo en Servidores y usa «Disable connection» en la tarjeta Tosun Connect; la misma tarjeta la vuelve a activar. Con set tosun_db_bridge_manual "1" en server.cfg, tosun_db_bridge_enabled y tosun_db_bridge_money_write se leen de server.cfg como antes y cada uno queda apagado si no vale "1". Si activaste a propósito el espejo completo antiguo (ts.panelMirror.enabled = true en configs/anticheat_config.lua), el puente queda apagado para que ese espejo siga funcionando. Las estructuras QBCore/ESX compatibles ofrecen datos seleccionados de jugadores, inventario, vehículos y registros. No es un explorador completo de tablas.
Consultas limitadas y edición de saldo#
En reposo consulta el panel por HTTPS cada 10 segundos aproximadamente, sin consultar la base del juego. Máximo 25 resultados por página y un trabajo a la vez. La edición de saldo en línea (fijar desde el panel el efectivo o el banco de un personaje conectado) está activada por defecto. Pueden usarla los usuarios del panel con rol admin u owner (permiso de economía). El personaje debe estar conectado y el saldo actual esperado debe coincidir; si no, se devuelve stale_balance y no cambia nada. El panel muestra un resumen de confirmación antes de enviar y cada solicitud queda en el registro de auditoría. Fija el total, no lo suma. Un resultado incierto nunca se repite automáticamente; comprueba primero el saldo en el juego. Para detener las lecturas y la edición de saldo en un servidor, usa «Disable connection» en la tarjeta Tosun Connect. Para mantener las lecturas sin edición de saldo, usa el modo manual: set tosun_db_bridge_manual "1" y set tosun_db_bridge_enabled "1", sin set tosun_db_bridge_money_write "1".
Conectar mediante el servidor existente#
El puente usa tu conexión oxmysql. El panel envía tareas admitidas por una cola HTTPS; el servidor del juego las ejecuta localmente y devuelve datos seleccionados. No necesitas guardar la contraseña MySQL en la web ni publicar su puerto.
- La conexión está activada por defecto en todos los servidores; con tosun-ac 9.6.14 o posterior no tienes que activarla. Para desactivarla en un servidor, abre Servidores → el servidor → tarjeta Tosun Connect → «Disable connection». Si el espejo completo antiguo está activado a propósito con ts.panelMirror.enabled = true en configs/anticheat_config.lua, el puente queda desactivado automáticamente para que el espejo antiguo siga funcionando.
- Con tosun-ac 9.6.14 o posterior, la conexión no necesita ninguna línea en server.cfg; solo se mantiene set tosun_ac_license con la licencia correcta. Las líneas antiguas tosun_db_bridge_enabled y tosun_db_bridge_money_write se ignoran entonces y puedes borrarlas; un servidor que aún ejecute un paquete anterior las necesita hasta que se instale el paquete nuevo. La edición de saldos en línea también está activada por defecto y solo pueden usarla los usuarios del panel con rol admin u owner.
- Permite HTTPS saliente a admin.tosundev.com, revisa la consola y solicita una lista pequeña de jugadores.
# Ejecuta en la consola del servidor:
tosunac_db_statusSitio web de la comunidad solo con la licencia#
El sitio web de su comunidad lee los datos del juego mediante la misma conexión Tosun Connect. Si el servidor no tiene ajustes de base de datos del juego en el panel, el sitio no necesita usuario de MySQL, GRANT ni el puerto 3306 abierto: las páginas Jugadores, Baneos, Detecciones del anticheat y Registros cargan sus datos desde el servidor de juego al abrirlas.
En este modo el sitio no puede buscar, filtrar, desbanear, añadir baneos ni editar dinero o inventarios. Para quitar un baneo, use /ts unban <banID> en el juego o ts unban <banID> en la consola del servidor. Cada página es una solicitud nueva que se responde en unos 10 segundos; si el servidor de juego está desconectado o la conexión está desactivada en la tarjeta Tosun Connect, la página lo indica en lugar de mostrar una lista vacía.
Los nombres, trabajos, saldos, inventarios y modelos de vehículos requieren tosun-ac 9.6.17 o posterior en el servidor de juego. Con paquetes anteriores, algunos servidores MySQL/MariaDB solo devuelven el ID del personaje.
La conexión directa a la base de datos del juego es opcional. Añádala solo si quiere búsqueda y edición en el sitio: cree un usuario de base de datos que solo pueda conectarse desde la dirección IP del servidor del panel Tosun (el soporte puede confirmarla), concédale SELECT, INSERT, UPDATE y DELETE sobre la base de datos del juego, abra el puerto 3306 solo para esa dirección e introduzca los datos en los ajustes de base de datos del servidor en Servidores (Direct MySQL · Advanced). El panel solo los guarda tras una prueba de conexión correcta. Sin estos datos se sigue usando la configuración solo con licencia.
- Jugadores: 25 personajes por página con ID de personaje, nombre y trabajo. El equipo también ve efectivo y banco.
- El equipo (moderador o superior) puede hacer clic en un personaje para ver su estado en línea, saldos e inventario, y cargar los vehículos de ese personaje.
- Baneos y detecciones del anticheat: 25 registros por página, solo lectura. Las detecciones aparecen de la más antigua a la más reciente; los baneos, en orden de ID de baneo.
- Los totales del panel principal para jugadores, baneos y detecciones muestran «—»: la conexión no tiene operación de recuento, así que no se inventa ningún número.
Datos disponibles y límites#
Se admiten listas de jugadores, detalles de un personaje, sus vehículos, bloqueos y registros de detección. QBCore/Qbox suelen usar players y player_vehicles; ESX users y owned_vehicles. Columnas e índices deben ser compatibles. ready no demuestra que una tabla personalizada sea legible.
El inventario devuelve campos seleccionados, datos almacenados limitados y hasta 100 entradas visitadas. No replica metadatos arbitrarios, depósitos stash ni todas las tablas propias. Un inventario truncado es parcial: que un objeto no aparezca no prueba que no exista. Usa las herramientas del inventario del juego para una revisión completa.
Interpretar el estado y la carga#
En reposo consulta el panel aproximadamente cada diez segundos sin leer la base del juego. Solo ejecuta una tarea simultánea. Cada página tiene hasta 25 resultados y un cursor; avanza en lugar de recargar la primera página. La información de esquema solicitada se almacena cinco minutos.
- oxmysql_unavailable: comprueba inicio y conexión.
- unsupported_framework / schema_unavailable: verifica framework, tablas y columnas reales.
- unsupported_index: pide revisar la clave necesaria; no añadas índices sin evaluar un servidor ocupado.
- request_expired / estado antiguo: verifica conectividad y antigüedad antes de repetir una lectura.
Modificar saldos solo conscientemente#
La edición de saldos en línea está activada por defecto. Los usuarios del panel con rol admin u owner (permiso de economía) pueden fijar el efectivo o el banco de un personaje compatible conectado tras ver el resumen de confirmación. Establece un saldo absoluto, no suma el importe en cada intento. Comprueba el saldo previo esperado; si no coincide, devuelve stale_balance y no cambia nada. Cada solicitud queda en el registro de auditoría.
No se recurre a SQL offline. Se conserva el registro incierto para impedir repeticiones automáticas. No des el rol admin u owner al personal que solo inspecciona. Para detener la edición de saldos en un servidor, usa «Disable connection» en su tarjeta Tosun Connect (también detiene las lecturas) o el modo manual con set tosun_db_bridge_manual "1": tosun_db_bridge_enabled y tosun_db_bridge_money_write se leen entonces de server.cfg y cada uno queda desactivado salvo que valga "1".
- Lee personaje y saldo, confirma el valor final y ejecuta una sola vez.
- Con stale_balance, vuelve a leer: el jugador podría haber ganado o gastado dinero.
- Con unknown_outcome, detente y compara saldo en vivo y registros. No escribas de nuevo sin aclarar el resultado anterior.
Distinguir listas guardadas de detalles en vivo#
La lista de jugadores lee filas guardadas; no es una transmisión continua en vivo. El detalle de personaje puede sustituir saldos guardados por valores del framework online compatible y leer sus objetos actuales de ox_inventory cuando están disponibles. Seleccione character_id permanente, no un número de sesión recordado. En el panel, revise indicadores de saldo no disponible y aviso de inventario incompleto antes de interpretar ceros o asumir integridad. Los desarrolladores pueden consultar los indicadores balance_available e inventory_truncated. Un campo no disponible o inventario parcial no demuestra dinero perdido ni objetos ausentes. Los vehículos muestran campos almacenados seleccionados; no prueban que el vehículo esté generado o asociado a una sesión de garaje activa.
- Compare un personaje conocido con el juego a una hora registrada, incluido estado online y cuenta seleccionada.
- Ante diferencias, compruebe identidad, si consultó lista o detalle, y las marcas de disponibilidad antes de actuar.
- Tras reconectar o cambiar personaje, solicite un detalle nuevo en lugar de reutilizar el anterior.
Paginar investigaciones en vez de volcar la base#
La cola admite tres solicitudes pendientes o tomadas por servidor y doce solicitudes nuevas por minuto. Cada trabajo tiene 120 segundos de vigencia; los resultados son temporales y pueden limpiarse cinco minutos después de expirar el trabajo, sin una hora de borrado garantizada. Son límites para administración dirigida, no recopilación automática completa. Use la navegación de páginas del panel; los desarrolladores siguen has_more y next_cursor solo para la misma operación y personaje. Una página siguiente vacía es distinta de una consulta fallida. Se comprueban claves únicas e índices de propietario de vehículos para rechazar estructuras incompatibles de forma segura. No renombre columnas ni añada índices en producción solo para ocultar errores sin evaluar aplicación y plan de consulta.
- Lea una página del panel cada vez. Una integración propia conserva cursor y operación juntos y continúa solo si has_more es verdadero.
- Ante queue_full o rate_limited, espere los trabajos abiertos en vez de reabrir repetidamente las vistas.
- Pida al responsable de la base que evalúe unsupported_index en una copia; los metadatos pueden quedar en caché cinco minutos.
Pausar el acceso sin borrar operaciones inciertas#
Para inspección, otorgue solo los permisos de lectura necesarios; solo los roles admin y owner pueden editar saldos. Para detener la conexión de un servidor, abra Servidores → el servidor → tarjeta Tosun Connect y elija «Disable connection»; así se detienen todas las lecturas y ediciones de saldo de ese servidor, y la misma tarjeta permite reactivarla. Si necesita lecturas sin edición de saldos, use el modo manual: añada set tosun_db_bridge_manual "1" y set tosun_db_bridge_enabled "1" a server.cfg y deje tosun_db_bridge_money_write sin definir o en "0". En modo manual ambos valores se leen de server.cfg y cada uno queda desactivado salvo que valga "1"; por eso el modo manual sin set tosun_db_bridge_enabled "1" también detiene las lecturas. El panel marca fallidos los trabajos pendientes o tomados; una escritura de dinero tomada recibe unknown_outcome porque su efecto quizá ya ocurrió. El registro de operaciones del juego no es una caché desechable. Borrar sus KVP para forzar otro intento puede quitar evidencia que evita duplicaciones. Revise también el acceso a los datos capturados: el puente no vuelve privada una captura o registro publicado abiertamente.
- Antes de desconectar, deje terminar las lecturas e investigue dinero sin resolver usando saldo vivo y auditoría.
- Después compruebe panel y tosunac_db_status; no muestre como exitosa una nueva inspección en cola.
- Al reactivarla desde la tarjeta empiece con una lectura; no edite saldos hasta revisar permisos, capacidades y operaciones inciertas.
# Server console / Sunucu konsolu:
tosunac_db_statusRevise el esquema sin cambiar datos de jugadores#
Ante schema_unavailable o unsupported_index, confirme primero que está seleccionada la base de datos que usa el juego. El ejemplo siguiente solo lee nombres y tipos de columnas; no modifica saldos, inventarios ni vehículos. No es un paso obligatorio de instalación. Un administrador de base de datos autorizado puede ejecutarlo en su herramienta privada habitual al investigar el error. No envíe SQL al puente del panel: solo acepta operaciones definidas.
Las lecturas de jugadores QBCore/Qbox necesitan citizenid, money, job y charinfo en players; ESX necesita identifier, accounts y job en users. Encontrar la tabla no basta. La clave del personaje debe tener un tipo compatible y un índice único de una sola columna completa.
Las lecturas de vehículos también comprueban la estructura de índices para propietario y clave del vehículo. Así se evita forzar consultas costosas. No renombre una tabla de un garaje personalizado para ocultar el error; solicite antes una evaluación de compatibilidad a sus desarrolladores y a los del framework.
- Anote código de error, versión del framework y lectura afectada.
- Compare columnas e índices; no adjunte filas de jugadores al soporte.
- Evalúe cambios en una copia de prueba. La caché del esquema puede tardar en reconocer la nueva estructura.
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME IN ('players', 'users', 'player_vehicles', 'owned_vehicles')
ORDER BY TABLE_NAME, ORDINAL_POSITION
LIMIT 128;El personaje aparece, pero la lista de vehículos está vacía#
Suponga que abre correctamente un personaje desde la lista de jugadores, pero no aparecen vehículos. Distinga primero un resultado completado correctamente de un trabajo fallido. Una lista vacía correcta significa que esa lectura no devolvió registros coincidentes; no demuestra que el jugador carezca de vehículos en cualquier sistema. query_failed, schema_unavailable y unsupported_index no deben interpretarse como listas vacías.
Confirme que seleccionó la misma character_id permanente. Un número de sesión que cambia al reconectar no sustituye la clave del personaje. QBCore/Qbox relaciona al propietario mediante player_vehicles.citizenid; ESX usa owned_vehicles.owner. Si un garaje personalizado usa otra tabla o formato de propietario, el puente estándar no descubre automáticamente sus registros.
Elegir otro personaje de una cuenta con varios personajes puede causar una situación parecida. Pida al responsable autorizado del garaje que compruebe el contexto de un vehículo conocido en el juego. Escribir saldos, recrear vehículos o vaciar la tabla original no es necesario para diagnosticarlo.
- Guarde ID del servidor, referencia del personaje ocultada parcialmente, hora y estado del trabajo.
- Si hay otra página, continúe con el mismo personaje; no reutilice el cursor con otro.
- Indique al soporte si recibió una lista vacía correcta o el código exacto de error; retire datos personales.
Distinguir números, texto y campos no disponibles#
El puente no muestra una fila sin transformar: normaliza campos admitidos a tipos y longitudes concretos. El dinero del personaje se lee de números JSON. Por ejemplo, 1200 y "1200" tienen tipos almacenados distintos; un script que convierta dinero a texto puede producir saldo no disponible. Un saldo no disponible se muestra como — en el panel; no significa saldo cero. Los campos seleccionados del inventario son nombre, etiqueta, cantidad, slot y calidad; metadatos arbitrarios, almacenes stash y cuentas de negocios quedan fuera del resultado.
Valores de vehículos como combustible, motor y estado pueden volver como texto; no deduzca comparaciones numéricas del formato. La longitud de esquema char/varchar de claves admitidas es como máximo 96; la clave transmitida también se limita a 96 bytes, un límite distinto con caracteres multibyte; también se admiten int, bigint y mediumint. No presuponga compatibilidad de una clave binaria propia. Textos largos e inventario pueden truncarse; omisión no significa eliminación. Pida verificar el formato real antes de diagnosticar un campo ausente. Evalúe conversiones necesarias con el contrato de datos del juego en pruebas, sin cambiar producción solo para llenar una pantalla.
Aceptar una escritura con un ejemplo concreto#
Para una corrección autorizada y aprobada, imagine cambiar el efectivo de un personaje conectado de 1200 a 1250. El total final es 1250; introducir 50 fija el saldo en cincuenta en vez de añadir cincuenta. Compruebe efectivo o banco y relacione la identidad persistente con el detalle reciente en vivo. El resumen de confirmación muestra personaje, cuenta y paso del saldo actual al nuevo total. El importe es un valor final entero no negativo; monedas propias y cuentas de negocio no sustituyen esta operación.
No cierre la aceptación cuando entra en cola. Verifique el resultado completado para el mismo personaje y cuenta con before=1200 y after=1250; después lea normalmente el estado actual. Un gasto posterior puede cambiarlo y no justifica reenviar automáticamente. Investigue la suposición obsoleta de stale_balance y el efecto no verificado de unknown_outcome. Conserve referencia, hora y resultado sin datos sensibles. Ante incertidumbre no envíe otra escritura hasta reevaluar el saldo real y la corrección pretendida.
Un plazo de respuesta no cancela el SQL#
La espera predeterminada de respuesta SQL es de 5.000 ms. query_timeout termina la espera del panel; la consulta real puede seguir ejecutándose. La capacidad SQL sigue ocupada hasta su primer callback real, y otra lectura devuelve query_busy. Una respuesta tardía no cambia la vista anterior. Si no llega ningún callback, el plazo no libera la capacidad automáticamente. El administrador del servidor debe revisar la conexión y la base de datos; reiniciar el recurso no demuestra que el SQL se haya cancelado.
Solo el propietario del servidor puede añadir, si lo desea, la siguiente línea set en server.cfg. El valor se limita a 1.000–10.000 ms; un número no válido o infinito usa 5.000 ms. Este ajuste no acelera el SQL ni reintenta consultas automáticamente.
La edición de saldos en línea está activada por defecto para los usuarios del panel con el rol admin u owner (permiso de economía); en modo manual (set tosun_db_bridge_manual "1") sigue desactivada salvo que tosun_db_bridge_money_write sea "1". Requiere un personaje compatible en línea y la confirmación en el panel. La operación solo sustituye el total de efectivo o banco tras comprobar el saldo actual esperado; nunca recurre a escrituras SQL sin conexión. unknown_outcome o una ambigüedad de conexión nunca se reintenta automáticamente. Revise el saldo en vivo y los registros de auditoría antes de otra escritura; no borre los registros KVP de operaciones inciertas para forzar una repetición.
set tosun_db_bridge_query_timeout_ms "5000"Un único SQL en la base correcta#
tosun-ac/INSTALL.sql es el único punto de importación del nuevo ZIP. No importe otra copia antigua del mismo esquema. Corresponde a la base del juego utilizada por FiveM/oxmysql, no a la base de cuentas y temas del sitio alquilado. Las columnas antiguas faltantes se reparan antes de insertar valores predeterminados; se conservan bloqueos y ajustes propios.
- Haga una copia de la base del juego y confirme su nombre.
- Importe solo INSTALL.sql en HeidiSQL/phpMyAdmin o indique explícitamente la base en mysql.
- tosunac_db_check comprueba una consulta; tosunac_db_status muestra el puente. El puente está activo por defecto y no requiere ninguna línea en server.cfg. enabled=false es correcto en modo manual (set tosun_db_bridge_manual "1") sin tosun_db_bridge_enabled "1", o si el espejo completo antiguo (ts.panelMirror.enabled = true en configs/anticheat_config.lua) se activó a propósito; una licencia no crea la conexión MySQL.
- La conexión del panel (Tosun Connect) y la edición de saldo en línea están activas por defecto. No añada tosun_db_bridge_enabled ni tosun_db_bridge_money_write a server.cfg; desde el paquete 9.6.14 las líneas antiguas se ignoran y pueden borrarse (los paquetes anteriores las siguen necesitando hasta que instale el paquete actual). Solo los usuarios del panel con rol admin u owner pueden fijar saldos: el personaje debe estar conectado, el saldo esperado debe coincidir (si no, stale_balance y no cambia nada), el panel muestra un resumen para confirmar antes de enviar, cada solicitud queda en el registro de auditoría y un resultado incierto nunca se reintenta automáticamente; revise antes el saldo en el juego. Fija el total, no suma. Para desactivar toda la conexión en un servidor (se detienen todas las lecturas del panel y todas las ediciones de saldo): Panel → Servidores → el servidor → tarjeta Tosun Connect → Disable connection; puede volver a activarla desde la misma tarjeta. Guarde la contraseña del juego únicamente en el servidor.
mysql -u YOUR_DB_USER -p YOUR_GAME_DATABASE < tosun-ac/INSTALL.sql
# txAdmin console:
tosunac_db_check
tosunac_db_status