Ir a la guía

Documentación 9.6.24

server.cfg, convars y permisos

Esta página lista todos los convars que lee Tosun AntiCheat, todos los permisos ACE que comprueba y los archivos y secciones de configuración que puedes editar. Empieza con un bloque completo de server.cfg y también cubre los convars de endurecimiento de FiveM que el AC audita al arrancar.

Dónde está la configuración#

Tosun AntiCheat lee los ajustes de server.cfg, de cuatro archivos del recurso y del panel web. Las credenciales solo deben ir en lugares exclusivos del servidor. configs/anticheat_config.lua es un script compartido, así que el servidor lo envía a todos los clientes.

Archivo o lugarSe carga enQué va ahí
server.cfgServidorConvars (licencia, clave del panel, recursos de confianza), permisos ACE y los convars de endurecimiento de FiveM.
configs/anticheat_server.luaSolo servidor, antes de los scripts de servidor del ACAlternativa para las credenciales cuando no usas convars: panelKey, centralToken y licenseKey.
configs/anticheat_config.luaCompartido: servidor y todos los clientesTodos los ajustes ts: detecciones, sanciones, guards, menú de administración y listas. Nunca pongas aquí una clave, un token ni una licencia.
configs/anticheat_webhooks.luaSolo servidorURL de los webhooks de Discord y estilo de los embeds.
admins/anticheat_admins.luaSolo servidorLa lista de identificadores Admins (estado de staff y menú de administración).
Web panel (ac_settings and ac_ tables)Se sincroniza con el servidorSobrescribe la mayoría de los valores de la configuración unos 3 s después del arranque y luego cada ts.ServerPerf.configSyncIntervalSec segundos (120 en la configuración que se distribuye).

Ejemplo completo de server.cfg#

Un bloque completo para una instalación típica. El orden importa: las dependencias y los convars de credenciales deben ir antes de ensure tosun-ac, porque las credenciales se resuelven una sola vez cuando se carga el recurso. Las líneas que empiezan por un solo # son opcionales; quita el # para usarlas.

## ---------- Tosun AntiCheat: bloque de server.cfg ----------
## OneSync es una dependencia del manifest (txAdmin también puede activarlo).
set onesync on

## Dependencias: inícialas antes de tosun-ac.
## oxmysql y tosun_render son dependencias obligatorias.
## screenshot-basic es el ts.screenshotModule por defecto.
## Configura mysql_connection_string antes de ensure oxmysql (consulta la guía de MySQL).
ensure oxmysql
ensure screenshot-basic
ensure tosun_render

## Credenciales: usa set (nunca setr ni sets) y mantenlas ENCIMA de ensure tosun-ac.
## Se leen una sola vez cuando se carga el recurso.
## Formato de la licencia: tac_live_ seguido de 40 caracteres hexadecimales en minúscula.
set tosun_ac_license "YOUR_LICENSE_KEY"
## Opcional: si está vacía, la clave del panel se carga desde panel_settings en la DB del juego.
# set tosun_ac_panel_key "YOUR_PANEL_API_KEY"
# set tosun_ac_central_token "YOUR_FIVEM_SCOPED_TOKEN"
## Opcional: solo lo usa ts.licenseLock.
# set tosun_ac_server_id "server-1"

## Recursos que pueden llamar a los exports protegidos del AC (separados por comas).
set tosun_ac_trusted_resources "my-housing,my-clothing"

## Opcional: dirección https pública del panel para subir capturas y pruebas.
# set ts_public_panel_url "https://panel.example.com"

## Opcional: controla el DB bridge de Tosun Connect desde este archivo.
## Sin la línea manual (y con ts.panelMirror desactivado), los dos convars del bridge se fuerzan a "1".
# set tosun_db_bridge_manual "1"
# set tosun_db_bridge_enabled "1"
# set tosun_db_bridge_money_write "0"

## Opcional: desactiva el registro de tiempo de juego (solo qb, qbcore y qbox).
# set tosun_panel_playtime "0"

## Opcional, para integradores que usan los archivos del bridge. Los clientes los leen, así que usa setr.
# setr tosun_ac_resource "tosun-ac"
# setr tosun_ac_bridge_client_ms "60000"

ensure tosun-ac

## ---------- Permisos del staff ----------
## Estado de staff y menú de administración en el juego:
add_ace group.admin tosun.admin allow
## tosunac_setup, los escaneos manuales y la vista previa de la pantalla de ban:
add_ace group.admin tosunac.admin allow
add_ace group.admin command.tosunac_setup allow
add_ace group.admin command.tosunac_backdoorscan allow
add_ace group.admin command.tosunac_eventscan allow
add_ace group.admin tosunac.banscreen.test allow
## Una línea por cada miembro del staff:
add_principal identifier.license:YOUR_LICENSE_HEX group.admin

## ---------- Convars de endurecimiento de FiveM que el AC comprueba al arrancar ----------
set sv_stateBagStrictMode true
set sv_filterRequestControl 2
set sv_enableNetworkedSounds false
set sv_enableNetworkedPhoneExplosions false
set sv_enableNetworkedScriptEntityStates false
set sv_scriptHookAllowed false
## Prueba primero: relaxed o strict pueden romper scripts que generan vehículos desde el cliente.
set sv_entityLockdown relaxed
set sv_pureLevel 1
## La auditoría de server.cfg avisa mientras esto esté vacío:
# set sv_enforceGameBuild YOUR_GAME_BUILD

Reglas para el bloque de server.cfg#

Sigue estas reglas cuando adaptes el ejemplo a tu servidor.

  • Inicia oxmysql y tosun_render antes de tosun-ac. El manifest declara como dependencias la build de servidor 4890 o posterior, OneSync, oxmysql y tosun_render.
  • Inicia screenshot-basic si mantienes el ts.screenshotModule por defecto.
  • Pon todas las líneas de credenciales set tosun_ac_ antes de ensure tosun-ac. Los valores se leen una sola vez al cargar; un cambio posterior necesita reiniciar el recurso.
  • Usa set para las credenciales. setr replica el valor a todos los clientes, y sets lo publica en la información pública del servidor.
  • Usa setr solo para los convars que leen los clientes: ts_screen_upload, tosun_ac_resource y tosun_ac_bridge_client_ms.
  • No necesitas ninguna línea del DB bridge. Desde la 9.6.14 el bridge está activado por defecto, y las líneas set ... "0" se ignoran salvo que tosun_db_bridge_manual sea "1" o ts.panelMirror.enabled = true.
  • Las guías de instalación antiguas (INSTALLER-READY.md, INSTALLER-LICENSE.md, INSTALL-MULTILANG.md, CONFIG-PERFORMANCE-GUIDE.md) ponen ensure antes de las credenciales, ponen la clave del panel en configs/anticheat_config.lua y omiten tosun_render. Sigue esta página en su lugar.

Referencia de convars#

Todos los convars que lee Tosun AntiCheat y que puedes definir. Usa set salvo que la columna Notas diga setr. El AC también escribe y lee algunos convars internos propios; están protegidos y no debes definirlos.

ConvarPor defectoQué haceNotas
tosun_ac_license""Clave de licencia del servidor. Se lee una vez al cargar en ts.licenseLock.licenseKey. El bloqueo de licencia y el DB bridge de Tosun Connect también vuelven a leer el convar más tarde.Credencial: solo set, antes de ensure. Formato tac_live_ más 40 caracteres hex en minúscula. El DB bridge la trata como ausente salvo que tenga de 16 a 128 caracteres sin espacios.
tosun_ac_panel_key""Clave de API del panel. Se envía en las llamadas salientes al panel y se usa para autorizar las peticiones entrantes del panel.Credencial: solo set. Reinicia después de un cambio. Si está vacía, el AC copia panel_settings.ac_api_key de la DB del juego. En cada arranque se escribe en texto plano en la fila webPanelKey de ac_settings.
tosun_ac_central_token""Token de autenticación para el control de versión y la API central v9. Se usa con preferencia sobre la clave del panel.Credencial: solo set.
tosun_ac_server_id"" (ts.licenseLock.serverId)Identificador del servidor para el bloqueo de licencia. Solo importa cuando ts.licenseLock.enabled = true y allowedServerIds no está vacío.No es un secreto. Después de cada comprobación de licencia el AC lo reescribe como convar replicado, así que los clientes pueden verlo. El export licenseStatus lo devuelve como serverId.
tosun_ac_trusted_resources""Recursos (separados por comas o espacios) que pueden llamar a exports protegidos. Se combina con ts.ExportCallerWhitelist.Para desarrolladores. Se vuelve a leer en menos de 10 s y sobrevive a las actualizaciones del AC. Compruébalo con el comando de consola tosunac_integration.
ts_public_panel_url""Base pública del panel para subir capturas, pruebas de ban y vídeo en directo (base/api/screen_upload.php). Tiene prioridad sobre ts.webPanelURL.Solo hace falta cuando la URL pública es distinta de ts.webPanelURL. Debe ser https.
ts_screen_uploadhttp://localhost/api/screen_upload.phpURL de subida para la captura de screenshot-basic que usan el export screenCapture, los comandos /capture y /ts_capture y la acción de captura del web-bridge del panel.Usa setr: se lee en el cliente. El valor por defecto apunta a localhost. El AC no tiene handler para el resultado de la subida, así que el resultado se descarta.
tosun_db_bridge_manual"0""1" impide que el AC fuerce los dos convars del bridge de abajo, así que los controla server.cfg.Defínelo antes de que arranque el recurso.
tosun_db_bridge_enabled"0" en el código, forzado a "1" al cargarActiva el DB bridge bajo demanda de Tosun Connect.Un valor en server.cfg solo cuenta con tosun_db_bridge_manual "1" o ts.panelMirror.enabled = true. Con panelMirror activado, el AC no lo fuerza, así que el bridge queda desactivado salvo que server.cfg lo active.
tosun_db_bridge_money_write"0" en el código, forzado a "1" al cargarPermite la operación del bridge player.money.set, que fija el saldo de un jugador conectado.Si no es "1", la operación falla con write_disabled. Para poner "0" desde server.cfg necesitas el modo manual.
tosun_db_bridge_query_timeout_ms5000 (de 1000 a 10000)Tiempo de espera de observación para cada consulta SQL del bridge.Un tiempo agotado reporta query_timeout pero no cancela la consulta.
tosun_panel_playtime"1""0" desactiva el proceso que rellena players.playtime. Solo actúa con qb, qbcore o qbox.Se lee una vez al cargar. El ALTER TABLE que añade la columna playtime se sigue ejecutando 20 s después del arranque aunque valga "0". Basta con set, aunque la cabecera del archivo sugiere setr.
tosun_panel_playtime_interval_ms120000 (de 30000 a 600000)Intervalo del bucle del registro de tiempo de juego.Basta con set.
tosun_ac_resource"tosun-ac"Nombre del recurso del AC que usan los archivos opcionales del bridge dentro de tu propio recurso.Para desarrolladores. Usa setr cuando cambies el nombre de la carpeta del AC: el bridge de cliente solo ve convars replicados.
tosun_ac_bridge_server_ms60000 (de 500 a 300000)Duración de exención por defecto para TosunAC.PlayerExempt en el bridge de servidor.Para desarrolladores. Basta con set.
tosun_ac_bridge_cooldown_ms750 (0 lo desactiva)Cooldown por jugador que descarta llamadas repetidas a TosunAC.PlayerExempt en el bridge de servidor.Para desarrolladores. Basta con set.
tosun_ac_bridge_client_ms60000 (de 500 a 300000)Duración por defecto de TosunAC.Exempt() en el bridge de cliente.Para desarrolladores. setr es obligatorio.

Credenciales: precedencia y manejo#

Tres credenciales se resuelven una sola vez cuando se carga el recurso: la clave de licencia, la clave de API del panel y el token central. Para cada una, el AC toma el primer valor no vacío en este orden.

El aviso MIGRATION te pide vaciar el valor compartido y rotar cualquier credencial que haya estado guardada ahí alguna vez, porque ese archivo se envía a todos los clientes.

Un valor de más de 4096 caracteres, o que contenga caracteres de control, detiene la carga con un error Invalid server credential setting.

Solo clave del panel: si sigue vacía después de estos pasos, el AC copia panel_settings.ac_api_key de la DB del juego. En cada arranque el AC escribe la clave resuelta en la fila webPanelKey de ac_settings, en texto plano. Si alguien edita esa fila en el panel, el valor editado sustituye al tuyo hasta el siguiente reinicio.

Solo clave de licencia: el bloqueo de licencia acepta los formatos tac_live_ más 40 caracteres hex en minúscula (49 caracteres), TOSUN-AC-YYYY-... y TOSUN-.... La comprobación de formato solo se ejecuta cuando ts.licenseLock.enabled = true, y solo comprueba el formato.

  1. El convar de servidor: tosun_ac_license, tosun_ac_panel_key o tosun_ac_central_token.
  2. El valor en configs/anticheat_server.lua: licenseKey, panelKey o centralToken.
  3. El valor heredado en el archivo compartido configs/anticheat_config.lua: ts.licenseLock.licenseKey, ts.webPanelKey o ts.Central.token. Cualquier valor aquí imprime un aviso MIGRATION en la consola.

configs/anticheat_server.lua#

Usa este archivo exclusivo del servidor cuando prefieras no poner las credenciales en server.cfg. Se carga antes de los scripts de servidor del AC y termina al instante en los clientes. Deja un hueco vacío para seguir usando el convar o la detección desde la base de datos.

  • Un convar no vacío siempre tiene prioridad sobre el valor de este archivo.
  • Deja vacíos los huecos correspondientes en configs/anticheat_config.lua: ts.webPanelKey, ts.Central.token y ts.licenseLock.licenseKey.
  • Mantén privadas las copias de seguridad de este archivo.
  • El archivo solo rellena ts.webPanelKey, ts.Central.token y ts.licenseLock.licenseKey. Los demás scripts leen esos valores, no el archivo.
-- configs/anticheat_server.lua (solo servidor)
local credentials = {
    panelKey = '',     -- o: set tosun_ac_panel_key "YOUR_PANEL_API_KEY"
    centralToken = '', -- o: set tosun_ac_central_token "YOUR_FIVEM_SCOPED_TOKEN"
    licenseKey = '',   -- o: set tosun_ac_license "YOUR_SERVER_LICENSE"
}

URL del panel y subida de capturas#

ts.webPanelURL en configs/anticheat_config.lua es la URL base del panel. Puedes dejarla vacía: si está vacía, el AC carga panel_url o site_url desde panel_settings en la DB del juego y la guarda en ac_settings. La sincronización HTTP de ajustes solo se ejecuta cuando están definidas tanto la URL como la clave del panel.

Define ts_public_panel_url solo cuando las capturas, las pruebas de ban y el vídeo en directo deban ir a otra dirección pública. Debe ser https. Los tokens de subida solo se emiten para https://host/api/screen_upload.php cuando la base es igual a este convar o a ts.webPanelURL.

ts_screen_upload es una ruta aparte que usan el export screenCapture y los comandos /capture y /ts_capture. Necesita setr, y su valor por defecto apunta a localhost. Nada en el AC gestiona el resultado de esa subida.

Los nombres heredados ts.PanelUrl, ts.panelUrl y ts.webPanelUrl se siguen leyendo como alternativas.

Convars del DB bridge de Tosun Connect#

Desde la 9.6.14 el DB bridge bajo demanda está activado por defecto y no necesita ninguna línea en server.cfg. Al cargar, editable/server/tosun_db_bridge_defaults.lua pone tosun_db_bridge_enabled y tosun_db_bridge_money_write en "1", así que las líneas "0" de las guías antiguas se ignoran.

También puedes desactivar la conexión para un servidor en el panel: Servers, luego el servidor y luego la tarjeta Tosun Connect.

El bridge consulta https://admin.tosundev.com/api/server_db_bridge.php, envía tu clave de licencia como token Bearer y solo ejecuta estas operaciones: players.list, player.detail, player.vehicles, bans.list, logs.list y player.money.set.

Con ts.panelMirror.enabled = true el AC no fuerza la activación del bridge, así que el mirror heredado sigue funcionando. El mirror en sí no se ejecuta mientras tosun_db_bridge_enabled sea "1".

Los comandos de consola tosunac_db_status y tosunac_db_check muestran el estado del bridge y prueban oxmysql.

  1. Para controlar el bridge desde server.cfg, añade set tosun_db_bridge_manual "1" antes de ensure tosun-ac.
  2. Añade set tosun_db_bridge_enabled con "1" o "0".
  3. Añade set tosun_db_bridge_money_write con "1" o "0". Sin "1", player.money.set falla con write_disabled y no se anuncia al panel.

Convars para desarrolladores de scripts#

Estos convars solo importan cuando otro recurso llama al AC. tosun_ac_trusted_resources decide qué recursos pueden llamar a exports protegidos; los convars del bridge configuran los archivos opcionales del bridge.

Entre los exports protegidos están SetExempt, SetPlayerExempt, los exports Pause, BypassDetection, addAdmin, whitelistPlayer, approveResource, ban, offlineBan, los exports webBridge y quarantine.

La consola del servidor y el propio tosun-ac siempre son de confianza. Una llamada no fiable se rechaza; para cada par de recurso y export el AC imprime un aviso en consola y una línea en el log del panel que nombra este convar. Con ts.EnforceExportCallerWhitelist = false la llamada se ejecuta y solo se registra una vez.

Quienes llaman siendo de confianza también obtienen MarkTeleport sin el presupuesto por jugador.

INTEGRATION.md y bridge/INTEGRATION.txt muestran set para tosun_ac_resource y tosun_ac_bridge_client_ms. Usa setr en su lugar: el bridge de cliente lee ambos en el cliente.

También existen eventos y exports internos del AC. Están protegidos y no deben llamarse desde tus recursos.

# Recursos autorizados a llamar a exports protegidos (separados por comas o espacios)
set tosun_ac_trusted_resources "my-housing,my-clothing"

# Archivos del bridge dentro de tu propio recurso
setr tosun_ac_resource "tosun-ac"
setr tosun_ac_bridge_client_ms "60000"
set tosun_ac_bridge_server_ms "60000"
set tosun_ac_bridge_cooldown_ms "750"

Permisos ACE#

Todos los ACE que comprueba Tosun AntiCheat. Concede los ACE a un grupo y añade el staff al grupo con add_principal. Un ACE que también tiene builtin.everyone nunca convierte a nadie en staff.

ACE o principalQué concedeLínea de ejemplo
tosun.adminEstado de staff (exención de sanciones y comandos de staff) y el menú de administración del juego. No desbloquea tosunac_setup ni los escaneos manuales.add_ace group.admin tosun.admin allow
ts.adminIgual que tosun.admin.add_ace group.admin ts.admin allow
command.tsEstado de staff y menú de administración. /ts en sí se registra sin restricción, así que este ACE es el marcador de rol del AC, no una barrera de FiveM.add_ace group.admin command.ts allow
command.ban, command.kickEstado de staff y menú de administración, incluso con ts.txAdminAuth = false.add_ace group.admin command.ban allow
txadmin, tx.admin, txadmin.menu, txadmin.advanced, command.txadminSolo estado de staff. Sin menú de administración.Usually granted by txAdmin, or: add_ace group.admin txadmin.menu allow
command.resources, command.restartEstado de staff solo mientras ts.txAdminAuth = true. Sin menú de administración.Usually granted by txAdmin
command.screenshot, command.unbanSolo exención de sanciones, mientras ts.txAdminAuth = true. Sin comandos de staff y sin menú de administración.Usually granted by txAdmin
group.admin, group.superadmin, group.moderator, group.godSe comprueban como objetos ACE. Solo dan estado de staff y menú si el nombre se resuelve como un ACE permitido para el jugador. Concede también un ACE explícito como tosun.admin.add_principal identifier.license:YOUR_LICENSE_HEX group.admin
tosunac.adminUso en el juego de tosunac_setup, tosunac_backdoorscan y tosunac_eventscan (cada uno necesita además su ACE de comando) y de /banscreentest. Sin estado de staff y sin menú.add_ace group.admin tosunac.admin allow
tosunac.banscreen.test/banscreentest en el juego, que muestra la vista previa de la pantalla de ban solo a quien lo ejecuta.add_ace group.admin tosunac.banscreen.test allow
command.tosunac_setupComando restringido. Un jugador también necesita tosunac.admin.add_ace group.admin command.tosunac_setup allow
command.tosunac_backdoorscanComando restringido. Un jugador también necesita tosunac.admin.add_ace group.admin command.tosunac_backdoorscan allow
command.tosunac_eventscanComando restringido. Un jugador también necesita tosunac.admin.add_ace group.admin command.tosunac_eventscan allow
command.ts_setlangComando restringido. Un jugador también necesita estado de staff.add_ace group.admin command.ts_setlang allow
command.ts_v9_helpComando restringido sin ninguna otra comprobación. Su salida va a la consola del servidor.add_ace group.admin command.ts_v9_help allow
command.tosunac_integration, command.tosunac_doctor, command.ac_cleanup, command.tosunac_db_status, command.tosunac_db_checkNada en el juego. Estos comandos son solo de consola e ignoran a los jugadores aunque tengan el ACE.Run them from the server console
command (bare ACE)Nunca da staff cuando lo tiene builtin.everyone. Sin embargo, es uno de los ACE que saltan la comprobación de IP al conectar, y esa comprobación no tiene filtro de builtin.everyone.Do not use: add_ace builtin.everyone command allow
ts.AdminBypassAces (config list)Concede estado de staff, no el menú. Entradas que se distribuyen: command.ts, los ACE de txAdmin, command.kick, command.ban, los cuatro nombres de grupo, tosun.admin y ts.admin. Nunca añadas el ACE command a secas.ts.AdminBypassAces = { "command.ts", ..., "your.staff.ace" }

Comandos restringidos y solo de consola#

Diez comandos del AC se registran como restringidos. En el juego, FiveM exige entonces el ACE de comando correspondiente además de la propia comprobación del AC. Cinco de los diez ignoran por completo a los jugadores.

banscreentest no está restringido. La forma de consola banscreentest playerId no necesita ACE; /banscreentest en el juego necesita tosunac.banscreen.test o tosunac.admin. Las denegaciones de tosunac_setup, los dos escaneos y banscreentest son silenciosas.

tosunac_setup no aprueba nada si el escaneo de backdoors o de firmas no termina, incluido cuando ts.BackdoorGuard está desactivado. Una segunda ejecución mientras otra está en curso se rechaza.

ComandoQuién puede ejecutarloQué hace
tosunac_setupConsola, o un jugador con command.tosunac_setup y tosunac.adminAutoinstalación: detecta el framework, ejecuta los escaneos de backdoors y de firmas, aprueba los recursos limpios en la base y cataloga los eventos sin confiar en ellos. Ejecútalo solo en un servidor que sabes que está limpio.
tosunac_backdoorscanConsola, o command.tosunac_backdoorscan y tosunac.adminEscaneo manual de backdoors. No se registra cuando ts.BackdoorGuard.enabled = false.
tosunac_eventscanConsola, o command.tosunac_eventscan y tosunac.adminEscaneo manual de eventos y triggers, que se envía al panel. No se registra cuando ts.EventScanner.enabled = false.
ts_setlang playerId langConsola, o command.ts_setlang y estado de staffFija el idioma del AC de un jugador. No comprueba que el ID del jugador esté conectado.
ts_v9_helpConsola, o command.ts_v9_helpImprime en la consola del servidor la lista de comandos extra de v9.
tosunac_integrationSolo consolaImprime el modo de aplicación de exports, los recursos de confianza y su origen, y las últimas 20 denegaciones.
tosunac_doctorSolo consolaInforme de riesgos de los ajustes aplicados. También se ejecuta 90 s después del arranque. La salida está en turco.
ac_cleanupSolo consolaEjecuta ahora la limpieza por retención de la base de datos. El recuento impreso suele quedarse corto. No se registra cuando ts.v12.enableAutoCleanup = false.
tosunac_db_statusSolo consolaImprime el estado del DB bridge, el estado de la licencia, el estado de oxmysql y el framework.
tosunac_db_checkSolo consolaEjecuta SELECT 1 mediante oxmysql e imprime éxito o fallo.

Cómo se reconoce al staff#

El AC tiene dos niveles de acceso separados. El estado de staff da exención de sanciones y los comandos de staff (subcomandos de /ts y los comandos ts_). El acceso al menú abre el menú de administración del juego. Algunas fuentes solo conceden uno de los dos.

La exención de sanciones para el staff solo se aplica mientras ts.AdminBypassDetections = true (valor que se distribuye) y ts.Debug = false (valor que se distribuye).

El acceso al menú también necesita que ts.AdminMenu.enable y ts.AdminMenu.enabled sigan en true. Si cualquiera de los dos es false, el menú, la tecla F7 y los comandos de herramientas de administración del cliente no se registran.

El staff que tiene estado de staff pero no acceso al menú, por ejemplo el staff solo de txAdmin, puede seguir pulsando F7. La petición se deniega y se registra.

FuenteDónde se defineEstado de staffMenú de administraciónNotas
ACE tosun.admin, ts.admin, command.tsserver.cfg add_aceSíSíForma recomendada de conceder staff.
ACE command.ban, command.kickserver.cfg o txAdminSíSíSigue siendo staff incluso con ts.txAdminAuth = false.
Principals group.admin, group.superadmin, group.moderator, group.godserver.cfg add_principalSolo si el nombre se resuelve como un ACE permitidoLa misma condiciónSe comprueban como objetos ACE. Añade también un ACE explícito.
ACE txadmin, tx.admin, txadmin.menu, txadmin.advanced, command.txadmintxAdmin o add_aceSíNoLos admins de txAdmin necesitan tosun.admin o un permiso del panel para el menú.
ACE command.resources, command.restarttxAdminSolo mientras ts.txAdminAuth = trueNoNormalmente lo concede txAdmin.
ACE command.screenshot, command.unbantxAdminSolo exención, mientras ts.txAdminAuth = trueNoSin comandos de staff.
ts.AdminBypassAcesconfigs/anticheat_config.luaSíNoLas entradas que añades no abren el menú.
Adminsadmins/anticheat_admins.luaSíSíArchivo exclusivo del servidor.
ts.AdminMenu.allowedIdsconfigs/anticheat_config.luaSíSí"all" y "staff" no son identificadores y no conceden nada.
ts.AdminBypassIdentifiersconfigs/anticheat_config.luaSíNoEl comentario de la configuración también menciona ip:x.x.x.x.
Panel grants (ac_v7_admin_grants)Panel webSíSíUn acierto se guarda en caché 5 s, un fallo 30 s.
addAdmin exportUn recurso de confianzaSíSíHasta que se llama a removeAdmin.
Player whitelist (ac_whitelist) and runtime whitelistPanel web o exports de whitelistNo (solo exención de sanciones)NoSe ignora mientras ts.Debug = true.
ACE tosunac.adminserver.cfg add_aceNoNoDesbloquea la instalación, los escaneos manuales y la vista previa de la pantalla de ban.

Listas de identificadores: Admins, allowedIds y AdminBypassIdentifiers#

Usa identificadores completos, como valores license:, steam:, discord: o fivem:. Para el staff, usa preferiblemente admins/anticheat_admins.lua o los permisos del panel: ese archivo es exclusivo del servidor, mientras que configs/anticheat_config.lua se envía a todos los clientes.

  • Admins: una entrada coincide con el identificador completo (sin distinguir mayúsculas de minúsculas) o con la parte después del prefijo. Concede estado de staff y menú.
  • ts.AdminMenu.allowedIds: estado de staff y menú. Los valores "all" y "staff" no conceden nada.
  • ts.AdminBypassIdentifiers: solo estado de staff y exención, sin menú.
-- admins/anticheat_admins.lua (solo servidor)
Admins = {
    "license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "steam:11000010xxxxxxxx",
    "discord:123456789012345678",
}

-- configs/anticheat_config.lua (compartido, se envía a los clientes)
ts.AdminMenu = {
    -- las demás claves del menú se quedan como vienen
    allowedIds = {
        "license:YOUR_EXACT_PLAYER_IDENTIFIER",
    },
}
ts.AdminBypassIdentifiers = {}  -- estado de staff y exención, sin menú

Permisos del panel y el export addAdmin#

Los permisos del panel son filas en ac_v7_admin_grants que creas en el panel web. Un permiso activo coincide con la license o license2 del jugador, con o sin prefijo, y da estado de staff y acceso al menú.

Una respuesta positiva se guarda en caché 5 s y una negativa 30 s, así que un permiso nuevo puede tardar hasta 30 s en aplicarse a un jugador que ya se había comprobado.

Un recurso de confianza puede llamar al export addAdmin para dar a un jugador estado de staff y acceso al menú hasta que se llame a removeAdmin. Mientras ts.EnforceExportCallerWhitelist sea true, quien llama debe estar en tosun_ac_trusted_resources o en ts.ExportCallerWhitelist.

La whitelist de jugadores no es staff#

La whitelist de jugadores del panel (ac_whitelist) y los identificadores añadidos en ejecución con los exports de whitelist solo detienen las sanciones. No dan comandos de staff ni menú de administración.

  • Una fila cuenta mientras expires_at esté vacío o sea una fecha futura.
  • Valores aceptados: un identificador license, discord, steam o fivem, o un citizenid. Los prefijos se quitan.
  • Las entradas en ejecución se guardan en memoria y se pierden al reiniciar.
  • Ambas listas se ignoran mientras ts.Debug = true.

Ajustes que cambian el trato al staff#

Estas claves de configs/anticheat_config.lua cambian cómo se trata al staff y a los usuarios no autorizados del menú.

AjusteValor que se distribuyeEfecto
ts.AdminBypassDetectionstruefalse hace que el staff se pueda sancionar como cualquier jugador.
ts.txAdminAuthtruefalse desactiva la vía de ACE de comandos de txAdmin (command.resources, command.restart, command.screenshot, command.unban). command.ban y command.kick siguen siendo staff.
ts.Debugfalsetrue desactiva las excepciones de staff, whitelist, whitelist del panel y exención para que el staff pueda probar las detecciones en sí mismo. Mantenlo en false en producción.
ts.NuiNeverBanUnauthorizedtruefalse sanciona a los jugadores que disparan eventos del menú de administración sin permiso, en lugar de solo registrarlos. La sanción es ts.punishType.
ts.AdminMenu.enable, ts.AdminMenu.enabledtrue, truefalse en cualquiera de los dos desactiva el menú de administración. enable = false también detiene el módulo de notificaciones al teléfono.
ts.AdminMenu.requireActionSignaturetruefalse desactiva la firma de las acciones sensibles del menú de administración.
ts.v12.bypassStaffIpChecktrueEl staff se salta las comprobaciones de VPN, proxy, hosting y país al conectar.

builtin.everyone y la comprobación de IP al conectar#

Todas las comprobaciones de ACE de staff y de menú ignoran un ACE que también tiene builtin.everyone. Por eso add_ace builtin.everyone command allow no convierte a los jugadores en staff. La comprobación de IP al conectar funciona de otra forma.

Mientras ts.v12.bypassStaffIpCheck no sea false, un jugador que se conecta se salta la lista de países denegados y los rechazos por VPN, proxy y hosting en cualquiera de estos casos: el jugador es staff; el jugador tiene el ACE command, txadmin, tx.admin, txadmin.menu, command.kick, command.ban o uno de los nombres group.admin, group.superadmin, group.moderator o group.god; o un permiso activo del panel coincide exactamente con la licencia del jugador.

Esta comprobación usa pruebas de ACE simples sin filtro de builtin.everyone. Por eso, en un servidor con add_ace builtin.everyone command allow, todos los jugadores se saltan las comprobaciones de VPN y de país. La comprobación de avalancha de entradas se sigue ejecutando antes de la excepción.

Archivo de webhooks de Discord#

configs/anticheat_webhooks.lua es exclusivo del servidor. Contiene una URL de webhook de Discord por canal de log y el estilo de los embeds. Todas las URL vienen con el marcador WEBHOOK_URL_BURAYA.

  • La sincronización HTTP del panel sobrescribe cualquier webhook para el que envíe una URL no vacía.
  • Los demás recursos solo reciben las URL de los webhooks mediante getConfig('webhooks') cuando llaman siendo de confianza.
  • Los logs de capturas etiquetan el embed de Detections con ts.punishType en lugar de la sanción resuelta, y también publican en Webhooks.Bans siempre que ts.punishType es BAN.
  • Webhooks.WebhookAvatar define la imagen de avatar del embed.
Webhooks.Detections    = "https://discord.com/api/webhooks/..."
Webhooks.Bans          = "https://discord.com/api/webhooks/..."
Webhooks.AdminMenuLogs = "https://discord.com/api/webhooks/..."
Webhooks.Connections   = "https://discord.com/api/webhooks/..."
Webhooks.OCR           = "https://discord.com/api/webhooks/..."
Webhooks.Commands      = "https://discord.com/api/webhooks/..."
Webhooks.MoneyLogs     = "https://discord.com/api/webhooks/..."
Webhooks.ResourceLogs  = "https://discord.com/api/webhooks/..."

Webhooks.WebhookUsername = "Tosun AntiCheat"
Webhooks.WebhookColor    = 15285208
Webhooks.WebhookInlines  = true

Cómo el panel sobrescribe el archivo de configuración#

La mayoría de los valores de configs/anticheat_config.lua son valores por defecto. El panel web guarda sus propios valores en ac_settings y en otras tablas ac_, y esos valores tienen prioridad. Edita el archivo solo para los valores que el panel no gestiona.

  • Unos 3 s después del arranque, y luego cada ts.ServerPerf.configSyncIntervalSec segundos (120 en la configuración que se distribuye, mínimo 20, alternativa 60), las filas de ac_settings sobrescriben los valores de ts.
  • Las claves con puntos como AdminMenu.enable escriben campos anidados. Las claves planas heredadas como framework o moneyCheck se asignan primero.
  • Una clave punishment_ escribe ts.DetectionPunishments para esa detección. BAN y KICK se conservan; cualquier otro valor pasa a LOG.
  • Los campos de acción se normalizan a ban, kick, log, cancel, reject o stop. Cualquier otro valor pasa a log.
  • Las claves que empiezan por globalBan. se ignoran.
  • Las listas del panel sustituyen a las listas de la configuración: armas, lista negra de vehículos, matrículas, lista de triggers, límites de eventos, recursos en whitelist, palabras de OCR, las listas Blacklist, la lista de explosiones y las whitelists de entidades. Los recursos en whitelist y las palabras de OCR de la base de datos se combinan en lugar de sustituirse.
  • Excepción: los handlers de ts.EventLimiter y ts.ProtectedEvents se registran una sola vez desde el archivo al cargar. Los cambios posteriores en el panel no cambian la aplicación del lado del servidor para ellos.
  • Después de un cambio, solo se vuelven a enviar a los clientes las claves seguras para el cliente.
  • Ejecuta tosunac_doctor en la consola para revisar los valores arriesgados después de la sincronización con el panel.

Ajustes principales#

Claves de primer nivel cerca del inicio de configs/anticheat_config.lua. La mayoría también se pueden definir desde el panel.

AjusteValor que se distribuyeQué hace
ts.Locale"tr"Idioma por defecto del AC (orden de alternativa: idioma del jugador, ts.Locale, en). Archivos: ar, de, en, es, fr, pt, ru, tr, zh. Viene en turco: los servidores en inglés deben poner "en". El default_locale del panel puede sustituirlo.
ts.punishType'BAN'Sanción de reserva para detecciones sin asignación. También es la sanción de los bans manuales: el export ban, /ts ban, los bans del menú de administración y los bans del panel. LOG o KICK los convierte en logs o expulsiones.
ts.Debugfalsetrue desactiva las excepciones de staff y whitelist. Mantenlo en false en producción.
ts.txAdminAuth, ts.AdminBypassDetections, ts.NuiNeverBanUnauthorizedtrue, true, trueTrato al staff. Consulta Ajustes que cambian el trato al staff.
ts.screenshotModule"screenshot-basic"Recurso usado para las capturas.
ts.banIDFormat11 = ABCD-1234, 2 = #1234.
ts.autoSQLfalsetrue crea las tablas al arrancar. El comentario de la configuración dice que lo pongas en true en la primera instalación y después lo vuelvas a poner en false.
ts.Prefix, ts.showReason'Tosun AntiCheat', trueDan forma a los mensajes de expulsión y de ban.
ts.appealDiscord, ts.appealTicketUrlvendor linksSe añade al final del mensaje de ban. appealDiscord viene con el Discord del proveedor (https://discord.gg/9tCSJch) y también es el valor de reserva. Pon tu propio enlace de apelación.
ts.pingOnDetectfalseAñade @everyone a los embeds de detección. El texto se coloca dentro del objeto embed, no en el contenido principal del mensaje.
ts.chatMessagesfalseAnuncia las sanciones en el chat.
ts.spoilerIPtrueOculta las direcciones IP con spoilers en los logs de Discord.
ts.needDiscordfalsetrue rechaza a los jugadores que no tienen identificador de Discord.
ts.maxUsernameLength-1Longitud máxima del nombre del jugador. -1 desactiva la comprobación.
ts.webPanelURL, ts.webPanelKey"", ""Deja ambos vacíos. Consulta URL del panel y subida de capturas y las secciones de credenciales.
ts.version"9.6.15"Solo informativo. En ejecución se usa la versión del manifest.

Secciones de configuración: detecciones y sanciones#

Secciones que deciden qué se detecta y con qué dureza se sanciona.

SecciónPropósitoAjustes que los dueños suelen cambiar
ts.DetectionPunishmentsSanción por clave de detección: BAN, KICK o LOG. Orden: sanción explícita, clave directa, alias, clave derivada y luego ts.punishType.Entradas individuales. El panel puede sobrescribir cada una. Valores que se distribuyen: BAN para señales seguras, KICK para riesgo medio y LOG para las que dependen del contexto, como freecam, teleport, fastrun, invisibility y ocr.
ts.BanDurationsDuración del ban en horas por clave de detección. 0 o una clave ausente significa permanente.["default"] (se distribuye con 0 = permanente; los bans manuales también lo usan). Las detecciones de física son temporales, por ejemplo superjump, fastrun y teleport 72 h, noclip y godmode 168 h.
ts.confirmWindowFiltro de confirmación para las detecciones de física del cliente: velocidad, teleport, noclip, superjump, salud y armadura. Las lecturas con ping alto o tirones de frames se ignoran.Se recomiendan los valores por defecto: confirmFrames 3, confirmMs 3000, maxPingMs 220. hardEscalateHits 8 en 90 s fuerza una sanción incluso con lag.
ts.v6EnforcementLimita las sanciones de las heurísticas firmadas del cliente y de las detecciones de spam.maxAction ("KICK"). confirmHits 2 dentro de confirmWindowSec 600 (mínimo 30).
Client detection toggles (ts.anti keys, thresholds, ts.confirmHits)Interruptores simples de activado/desactivado y límites para las detecciones del lado del cliente.Desactiva comprobaciones concretas. Desactivadas en la configuración que se distribuye: antiRadar, fakeTriggerServerTraps, antiInfiniteStamina, antiPickups, antiClipboardPaste, antiGodmodeV2.
ts.OCR settingsOCR de pantalla para palabras de menús de trampas.ts.OCR, ts.OCRCheckInterval (20000), ts.OCRWords. Todas las acciones son log por defecto, porque el texto del chat en pantalla coincidiría para todos los que lo ven. Las palabras del panel se combinan.
ts.quarantineAislamiento en routing bucket que usa el export quarantine en lugar de un ban.defaultSeconds 300, maxSeconds 1800, autoQuarantine (desactivado).
ts.autoEvidencePruebas breves en vídeo automáticas tras detecciones graves mientras el jugador está conectado. Necesita tosun_render.durationSec 25, cooldownSec 120, triggers.
ts.forensicsGrafo anti-evasión de bans que vincula identidades de HWID y licencia compartidas con grupos baneados.Empieza con evasionAction "log". linkByIp está desactivado.
ts.v16Comprobación de movimiento del lado del servidor.action ("ban"). teleportAction ("log"): cámbialo a kick cuando todos los scripts que teletransportan jugadores llamen a MarkTeleport.
ts.aimGuardAnti-aimbot estadístico sobre los eventos de daño de armas. El staff está exento mientras AdminBypassDetections está activado.magicBulletTargets 4 (kick), fireRatePerSec 22 (kick), headshotRatio 0.90 (log).
ts.combatGuardTopes de salud y armadura del lado del servidor y una comprobación de daño de arma excesivo.healthCap 250, armorCap 105, weaponDamageCap 600. Ambas acciones son kick.

Secciones de configuración: guards del lado del servidor#

Guards que se ejecutan en el servidor. Varios cancelan primero el evento y solo sancionan tras strikes repetidos.

SecciónPropósitoAjustes que los dueños suelen cambiar
ts.netEventsComprobaciones con autoridad en el servidor sobre los eventos del juego.Por subsección: action, strikes, windowMs, cancel. Valores que se distribuyen: weapons ban 2 en 60 s; respawn kick 6 en 120 s; vehicleComponent log; explosionDistance kick 250 m, 3 strikes; damageDistance ban 600 m, 4.
ts.entityFloodLímite de frecuencia de spawn por jugador. Los spawns por encima del límite se cancelan.maxPerSec 30, banAfterFloods 3, action ("ban").
ts.crashGuardLímites de tamaño, profundidad y validez para los valores de state bag y los payloads de eventos.action ("kick"), strikes 3 en 60 s.
ts.serverAuthorityLee el estado replicado por OneSync para detectar multiplicadores de superjump, daño y defensa, armas en lista negra, godmode, invisibilidad, noclip y foco de cámara.Por comprobación: enabled, action, confirm. Las comprobaciones de alta confianza expulsan; las que dependen del contexto registran.
ts.shieldAiEscudo contra spawn de entidades. Los spawns de vehículos y peds que no se pueden vincular a un recurso se cancelan.action ("cancel"), strikes 3, maxObjectPerSec 25, maxVehiclePerSec 4, maxPedPerSec 8, scriptWhitelist. tosunac_doctor marca strictScriptWhitelist = true.
ts.shieldExplosionCancela explosiones invisibles o silenciosas y solo sanciona tras repeticiones.action ("kick"), strikes 5 en 60 s.
ts.premiumGuardProtección contra spam de partículas, proyectiles, request-control, sonidos y ragdoll, y contra el abuso de vehículos bomba.Todas las acciones son log por defecto. Límites por tipo y por segundo.
ts.vehicleGuardDetecta vehículos lanzados o catapultados.action ("kick"), strikeLimit 3, stuntMode, excludeAirVehicles.
ts.weaponInventoryMarca un arma en mano que no está en el inventario de ox_inventory, QB o ESX del jugador.action ("log"), removeWeapon (desactivado), ignore, extraWeapons. Los scripts que dan armas fuera del inventario deben llamar al export AllowWeapon desde un recurso de confianza.
ts.entityGuardDetecta spawns masivos de objetos y borra los objetos generados por jugadores expulsados o baneados.massThreshold 50 en 60 s, cleanupOnBan.
ts.rateGuardLímites por jugador y por segundo para eventos de explosión, ptfx, fuego y proyectiles.action ("kick"), explosionsPerSec 12, ptfxPerSec 25, firePerSec 15, projectilesPerSec 30.
ts.entityWhitelist (and its vehicle, ped, object, projectile and particle lists)Modo opcional de lista de permitidos por tipo de entidad.Todos los modos vienen desactivados, así que solo se aplican las listas negras y el escudo de spawn. Las tablas de whitelist de entidades del panel sustituyen a las listas.
ts.SpamGuardLímites por jugador para eventos de servidor y comandos de chat. Se desactiva con ts.SpamGuard = false, o con ts.antiServerEventSpam / ts.antiCommandSpam = false.serverEventPerSec 25, commandPerSec 8, autoKickAfter 1. La parte de eventos de servidor escucha un evento que el recurso nunca emite; revisa tu build, si no, solo se aplica el límite de comandos.
ts.EventLimiterLímite de llamadas por evento en una ventana fija de 5 s. Al llegar al límite (el recuento alcanza el valor) genera Event Spam (server_event_spam, KICK).Añade o sube límites en el archivo. Los handlers se registran una vez al cargar, así que los límites de eventos del panel no cambian la aplicación.
ts.antiDump, ts.nativeIntegrity, ts.autoExemptAnti-dump con honeypot; trampa en el cliente contra natives de detección sobrescritas; exenciones automáticas durante eventos de apariencia, multipersonaje y muerte.antiDump.action ("ban"), nativeIntegrity.checkMs 12000.
ts.shieldCapa de hooks de natives en JS, comprobaciones NUI ocultas y pruebas en captura y en vídeo de juego antes de un ban (el vídeo necesita tosun_render).banScreenshot, banGameplayVideo.
ts.nativeGuardIntegración con el complemento externo para Windows tosun-guard.exe.action ("log"), requireGuard (false).
ts.guardVigilancia del recurso de cliente aparte tosun-guard. No sanciona a nadie si tosun-guard no está instalado.action ("kick").
ts.launcherGateExige al conectar un escaneo limpio y reciente del launcher desde la IP del jugador, verificado por el panel.enabled (false), action ("reject"), failOpen (false), downloadUrl, message (en turco por defecto).

Secciones de configuración: conexión, administración y panel#

Secciones para la entrada de jugadores, el menú de administración, la conexión con el panel y el comportamiento de todo el servidor.

SecciónPropósitoAjustes que los dueños suelen cambiar
ts.FrameworkSelección de framework y detección de picos de dinero.framework: esx, qb, qbox, standalone o "auto". Viene como "qb", que no se detecta automáticamente, así que los servidores ESX y Qbox deben cambiarlo. moneyCheckThreshold 5000000, moneySoftThreshold 75000.
ts.AutoSetupDetección pasiva del framework cuando framework es "auto" o "": qbx_core, luego qb-core, es_extended, vrp, ox_core.autoDetectFramework (true).
ts.v12Autoprotección, comprobaciones de VPN, proxy y hosting al conectar (ipapi.co) y limpieza por retención de la base de datos.blockVpn, blockProxy, blockHosting (desactivados), bypassStaffIpCheck, las claves de retención keep (logs de administración 60 días, detecciones 90 días).
ts.HeartBeatVigilancia del cliente: el intervalo permitido entre reportes del cliente y un plazo para el primer reporte válido.maxTime 90 s (mínimo 15). firstHeartbeatDeadline 180 s (mínimo 60): los jugadores sin un primer reporte válido para entonces se expulsan.
ts.NetworkJoinRitmo de entrada que evita el desbordamiento de eventos fiables y el periodo de gracia antes de que se activen las detecciones.minReadyDelayMs (15000 en la configuración que se distribuye; las guías antiguas dicen 45000), postFrameworkSettleMs 5000.
ts.AdminMenuMenú de administración del juego, que se abre con /ts menu, /tsmenu o F7.enable, enabled, allowedIds, openKeyControl (168 = F7), espMaxDist, noclipInvisible, requireActionSignature. allowEsp, allowFreecam y allowDelete solo se aplican en el código del cliente.
ts.PhoneNotifyNotificaciones del AC a los teléfonos del staff: qb-phone, qs-smartphone, lb-phone, yseries, gks_phone, npwd, roadphone.Solo se lee heartbeat (una notificación de estado cada 15 minutos). Las notificaciones de bans y detecciones siempre se envían mientras ts.AdminMenu.enable está activado.
ts.LiveWatchVigilancia de pantalla en directo desde el menú de administración y el panel.interval 1500, quality 0.7, maxSeconds 600, timeout 12000.
ts.ServerPerfEquilibrio entre la carga del servidor y la latencia de actualización.configSyncIntervalSec 120 (mínimo 20), panelPlayerSyncIntervalMs 12000, liveWatchDbPollMs 4500.
ts.CentralAPI central del panel v9: handshake, consultas periódicas y sincronización de idioma.pollIntervalSec 5 (limitado entre 5 y 60). Deja token vacío aquí y usa tosun_ac_central_token.
ts.cloudBridgeEnvía las puntuaciones de amenaza y la salida de consola al panel y comprueba una lista central de inteligencia de amenazas al conectar.consoleForward viene activado: cada línea de la consola del servidor va al panel por lotes. threatIntelAction ("log"), threatIntelMinScore 70.
ts.panelMirrorEnvío completo heredado de la base de datos al panel. Hay que activarlo expresamente.enabled (false). Mientras está activado, el DB bridge no se activa automáticamente.
ts.connectingCardTarjeta adaptativa que se muestra mientras los jugadores se conectan.title ("TOSUN RP"), discord (si falta usa ts.appealDiscord), website, rules, image, tips.
ts.banScreen (panel only)Aviso de ban a pantalla completa antes de la expulsión. No está en el archivo; configúralo en el panel.enabled (desactivado), seconds de 3 a 15 (8), mediaType, imageUrl (solo https), youtubeId, title (80 caracteres), message (300 caracteres), showReason. Previsualízalo con banscreentest.
ts.PanelDangerousActionIPsLista de IP permitidas para las acciones del panel kick_all, stop_resource y broadcast.Vacía significa solo registro de auditoría. Añade la IP del servidor del panel para bloquear otros orígenes.
ts.licenseLockProtección de distribución: formato de licencia y comprobación del ID del servidor.enabled (false), action (log, reject o stop), allowedServerIds, failClosed. Deja licenseKey vacío aquí.
ts.NpcBlockerQuita los NPC ambientales y el tráfico; las entidades de misiones, de scripts y en whitelist se quedan.enabled (false), blockPeds, blockVehicles, whitelistModels.
ts.hardening, ts.cfgAuditProtección de convars de FiveM y auditoría de solo lectura de server.cfg.Consulta Interruptores de endurecimiento y salida.

Secciones de configuración: recursos, eventos e integración#

Secciones para la confianza en recursos, los escáneres y la integración para desarrolladores. Las filas marcadas para desarrolladores solo importan cuando tus propios scripts llaman al AC.

SecciónPropósitoAjustes que los dueños suelen cambiar
ts.whitelistedResourcesRecursos principales que el AC siempre trata como seguros: frameworks, oxmysql, chat, monitor, recursos ox_.Añade tus recursos principales. La sincronización HTTP del panel sustituye la lista; la sincronización con la DB añade a ella.
ts.ResourceGuardBase de recursos, comprobaciones de cambios de hash y el escáner de firmas de trampas.signatureScan, signatureScanInterval 600000, autoStopCheatResources (true), autoBlockInfected (false), deepScan (false).
ts.BackdoorGuardAnaliza los archivos de los recursos en busca de patrones de backdoor, RCE y exfiltración.autoQuarantine (false; true detiene los recursos con un hallazgo crítico), ignoreResources, scanIntervalMs 1800000.
ts.EventScannerCataloga en el panel los eventos de red y los triggers de todos los recursos.autoProtect (false; true los marca como protegidos), ignoreResources.
ts.ProtectedEvents, ts.SafeEventRateWindow, ts.SafeEventRateLimit, ts.SafeEventMaxArgsPara desarrolladores. Eventos que deben dispararse con TriggerSafeServerEvent. Las llamadas válidas se reenvían al nombre del evento más :safe. Las llamadas incorrectas se rechazan y se registran, nunca se sancionan.Añade solo tus propios eventos que usan la API de cliente de SafeEvents. Límite de 30 llamadas cada 10 s; SafeEventMaxArgs 64. El handler :safe debe seguir comprobando permisos.
ts.EnforceExportCallerWhitelist, ts.ExportCallerWhitelistPara desarrolladores. Recursos de confianza para los exports protegidos.Lista que se distribuye: qbx_core, qb-core, es_extended, ox_inventory, ox_lib. false = modo auditoría: las llamadas se ejecutan y se registran una vez. MarkTeleport no necesita confianza.
ts.IntegrationPara desarrolladores. Límites de MarkTeleport.markTeleportMaxMs 15000 por llamada (de 1000 a 60000, para cualquiera que llame); markTeleportBudgetMs 180000 por jugador cada 10 minutos (solo quien llama sin ser de confianza).
ts.DetectionExempt (alias ts.MenuDetectionExempt)Para desarrolladores. Exenciones automáticas breves cuando se disparan eventos conocidos de ropa, viviendas, garajes o reanimación.clientEvents, localEvents, serverEvents (event, durationMs, resource, always). Los eventos de servidor solo dan alivio en movimiento y visibilidad: como máximo 120 s por evento y budgetMsPer10Min 240000 por jugador.
ts.AdminBypassAces, ts.AdminBypassIdentifiersListas de ACE e identificadores del staff.Consulta Cómo se reconoce al staff.

Secciones de configuración: listas#

Listas por defecto en configs/anticheat_config.lua. La mayoría las sustituyen las tablas del panel al sincronizar.

SecciónPropósitoAjustes que los dueños suelen cambiar
ts.Weapons, ts.vehicleBlacklist, ts.Plates, ts.BlacklistObjects, ts.pedBlacklist, ts.BlacklistPeds, ts.BlacklistCommands, ts.BlacklistWords, ts.BlacklistNames, ts.BlacklistKeys, ts.BlacklistAnimsListas negras por defecto. La lista de armas también define BAN, KICK o LOG por arma.Quita los elementos que entregan tus trabajos. Los comentarios de la configuración mencionan los helicópteros de PD y EMS y los peds de SWAT y hwaycop.
ts.BlacklistPlayerModelsModelos de ped de jugador que se reportan tras 3 muestras separadas 5 s (unos 15 s). Clave de sanción peds (KICK).El bucle del cliente no comprueba por sí mismo el interruptor antiPeds.
ts.BlacklistSpritesDiccionarios de texturas de menús de trampas.El panel puede sustituirla.
ts.detectedKeysTeclas que activan overlays.Valor que se distribuye {44, 73, 104}.
ts.explosionBlacklistTipos de explosión exóticos que se cancelan y se sancionan.BAN, KICK o LOG por tipo. Se sincroniza con el panel.
ts.triggerList, ts.fakeTriggers, ts.fakeTriggerStrikeMax, ts.fakeTriggerServerTrapsNombres de eventos honeypot que llaman los menús de trampas. Las entradas con type server se convierten en trampas de servidor mientras ts.fakeTriggers está activado.Nunca añadas eventos reales del framework. fakeTriggerStrikeMax 1, fakeTriggerServerTraps desactivado.
ts.whitelistedCoords, ts.TaskListWhitelist de coordenadas del cliente y tareas de ped en lista negra.Ambas vienen vacías.

Claves que no hacen nada y claves que faltan en el archivo#

Algunas claves de configs/anticheat_config.lua no las lee el código en la 9.6.15. Cambiarlas no tiene efecto.

El código también lee claves que el archivo no contiene. Añádelas tú si las necesitas: ts.v12.joinFloodWindowSec (60), ts.v12.joinFloodMaxJoins (6), ts.v12.bannedCountries (códigos de país; una lista geográfica de denegación), ts.v6Enforcement.heuristic (sustituye la lista de tipos heurísticos), ts.LiveWatch.fps (30), ts.SafeEventMaxArgs (64) y always = true en los eventos de servidor de ts.DetectionExempt.

Estos interruptores de cliente se leen pero no están en el archivo, y están activados salvo que se pongan en false: ts.antiScreenshotBypass, ts.antiRateOfFire y ts.antiNetOwnership. ts.microJitterMeanMin (0.5) también se lee pero no está en el archivo.

  • ts.NetworkJoin.minimalSync
  • ts.AdminMenu.espMaxDistance y ts.AdminMenu.screenshotTimeout (el ESP usa espMaxDist)
  • ts.AdminMenu.permissionLevel (una etiqueta heredada; el acceso viene de los ACE, las listas y los permisos)
  • ts.ResourceGuard.strictClientDiff
  • ts.LiveWatch.enabled, preferTosunRender y maxConcurrent
  • ts.PhoneNotify.enabled, onBan y onDetect

Comentarios del archivo de configuración que están desactualizados#

Algunos comentarios dentro de configs/anticheat_config.lua describen un comportamiento antiguo. El código funciona así.

  • El comentario dice que los ajustes del panel se resincronizan cada 30 s. El intervalo es ts.ServerPerf.configSyncIntervalSec (120 s en la configuración que se distribuye).
  • El comentario dice que tosunac_setup pone eventos en whitelist. Solo los cataloga; ts.EventScanner.autoProtect decide la protección.
  • El comentario de ts.ProtectedEvents advierte de que los eventos del framework causan bans falsos. Las llamadas sin clave se rechazan y se registran, nunca se sancionan.
  • El comentario de ts.EventLimiter dice que se activa cuando se supera el límite. Se dispara cuando el recuento alcanza el valor.
  • El comentario del bridge recomienda setr para los cuatro convars del bridge. Solo tosun_ac_resource y tosun_ac_bridge_client_ms necesitan setr.
  • El comentario de ts.Locale omite ar, pero locales/ar.json se distribuye.

Convars de endurecimiento de FiveM que comprueba el AC#

Dos módulos leen convars de FiveM al arrancar. La protección de convars (ts.hardening) se ejecuta unos 8 s después del arranque y trata un valor sin definir como débil. La auditoría de server.cfg (ts.cfgAudit) se ejecuta 15 s después del arranque y es de solo lectura.

ConvarRecomendadoLo compruebaLo aplica autoApply
sv_stateBagStrictModetrueProtección de convarsSí
sv_filterRequestControl2Protección de convarsSí
sv_enableNetworkedSoundsfalseProtección de convarsSí
sv_enableNetworkedPhoneExplosionsfalseProtección de convarsSí
sv_enableNetworkedScriptEntityStatesfalseProtección de convarsSí
sv_scriptHookAllowedfalseProtección de convars; la auditoría también avisa cuando es trueSí
sv_entityLockdownrelaxed (strict also passes)Protección de convars, solo informeNo. Puede romper scripts que generan vehículos desde el cliente; pruébalo primero.
sv_pureLevel1 or higherProtección de convars, solo informeNo
onesyncon (legacy also passes)Auditoría; también es una dependencia del manifestNo
sv_lanfalseLa auditoría avisa cuando es trueNo
sv_authMinTrust4 or higher (unset reads as 5)AuditoríaNo
sv_enforceGameBuildany build numberLa auditoría avisa cuando está vacíoNo

Interruptores de endurecimiento y salida#

Por defecto, ambas comprobaciones solo informan. Cámbialas en configs/anticheat_config.lua.

  • ts.hardening.enabled = false omite la protección de convars.
  • ts.hardening.autoApply = true (se distribuye en false) deja que el AC ejecute set por sí mismo para los seis convars seguros. sv_entityLockdown y sv_pureLevel nunca se aplican automáticamente.
  • ts.cfgAudit.enabled = false desactiva la auditoría de server.cfg.
  • La protección de convars imprime un aviso en consola y escribe una fila en ac_detections (detection_type hardening_missing) con todos los convars débiles.
  • La auditoría imprime un aviso en consola y escribe una fila en admin_logs con el número de ajustes débiles.
  • El texto de consola de ambas comprobaciones está en turco fijo en el código. Cada línea de aviso de la protección muestra la línea set exacta que debes añadir.
  • tosunac_doctor es un informe de consola aparte sobre ajustes arriesgados del AC, no sobre convars de FiveM.

Errores comunes#

Revisa esto antes de abrir un ticket de soporte.

  • Credenciales definidas con setr o sets: llegan a todos los clientes o a la información pública del servidor.
  • Credenciales colocadas después de ensure tosun-ac: no se recogen hasta el siguiente reinicio del recurso.
  • Una clave del panel en configs/anticheat_config.lua: el archivo se envía a los clientes y la consola imprime un aviso MIGRATION.
  • tosun_render sin iniciar: es una dependencia obligatoria.
  • ts.Framework.framework dejado en "qb" en un servidor ESX o Qbox.
  • ts.Locale dejado en "tr" en un servidor que no usa el turco.
  • ts.appealDiscord dejado con el enlace de Discord del proveedor.
  • ts.punishType en LOG o KICK: los bans manuales también pasan a ser logs o expulsiones.
  • add_ace builtin.everyone command allow: todos los jugadores se saltan las comprobaciones de VPN y de país.
  • Esperar que tosun.admin desbloquee tosunac_setup: eso necesita tosunac.admin más command.tosunac_setup.
  • Esperar que los admins de txAdmin abran el menú del AC: los ACE de txAdmin solo dan estado de staff. Añade tosun.admin o un permiso del panel.
  • set tosun_db_bridge_enabled "0" sin tosun_db_bridge_manual "1": la línea se ignora.
  • ts.Debug dejado en true: las excepciones de staff y whitelist están desactivadas.