Baneos y detecciones
ssAntiCheat separa detectar a un tramposo de eliminarlo. Una detección siempre alerta; un baneo solo ocurre una vez que se alcanza el umbral de un módulo, e incluso entonces normalmente se retiene hasta la próxima oleada de baneos. Ese retraso es deliberado — evita que un tramposo correlacione "hice X, y me banearon un segundo después" y averigüe qué comprobación lo detectó.
El proceso
Los pasos 3 y 4 son específicos de cada módulo — consulta
BanAfterDetections. Un módulo sin
esa clave detecta y alerta, pero nunca banea por sí solo.
Oleadas de baneos
Un baneo encolado se ejecuta cuando ocurre cualquiera de lo siguiente:
| Disparador | Notas |
|---|---|
| Cada N guardados del mundo | N es AutoBan."SaveWorld Cycles" — 2 de forma predeterminada. Esta es la vía normal. |
| El jugador encolado se desconecta | Se le banea al salir, en lugar de dejarlo libre hasta la próxima oleada. |
El módulo tiene InstantBan: true |
Reservado para detecciones sin falso positivo plausible. |
Un administrador ejecuta ssac.banwave |
Vacía toda la cola ahora. |
Entre el encolado y la ejecución puedes inspeccionar la cola con
ssac.pendingbans y vaciarla con ssac.clearbanwave. Consulta
Comandos.
AutoBan
| Campo | Tipo | Predeterminado | Descripción |
|---|---|---|---|
SaveWorld Cycles |
number | 2 |
Ejecuta una oleada de baneos cada esta cantidad de guardados del mundo. Con un intervalo de guardado de 15 minutos, 2 significa un retraso máximo de 30 minutos. |
ExecuteCommand |
string | "banplayer {steamid} " |
Un comando de consola que se ejecuta para cada jugador baneado. {steamid} se reemplaza por su SteamID64. Déjalo vacío para depender únicamente del sistema de baneos integrado. |
ExecuteCommand es la forma de enganchar ssAntiCheat a lo que ya uses. El
valor predeterminado añade al jugador a la lista de baneos propia de ARK; en su
lugar podrías llamar al comando de baneo de otro plugin, o a uno a nivel de
clúster.
💡 Consejo para clústeres. El
banplayerde ARK es por servidor. Si administras un clúster, apuntaExecuteCommanda un comando de baneo compatible con clústeres, o usa el sistema de baneos integrado con una base de datos MySQL compartida entre todos tus servidores — así cada servidor aplicará cada baneo al iniciar sesión.
IntegratedBanSystem
El almacén de baneos integrado: los baneos se escriben en tu base de datos MySQL y se aplican cuando el jugador intenta conectarse.
| Campo | Tipo | Predeterminado | Descripción |
|---|---|---|---|
Enabled |
boolean | true |
Almacena y aplica los baneos en MySQL. Cuando es false, solo se ejecuta AutoBan.ExecuteCommand. |
UseIPBans |
boolean | true |
También rechaza las conexiones desde la dirección IP de un jugador baneado. Consulta más abajo. |
UseHWIDBans |
boolean | false |
También rechaza las conexiones desde el ID de hardware de un jugador baneado. Requiere el mod cliente complementario opcional para capturarlo — sin él, esto no hace nada. |
Exclude IPS |
array | [] |
Direcciones IP que nunca se tratan como una asociación. Pon aquí direcciones compartidas/NAT. |
BanMessage |
string | ver arriba | El mensaje que ve el jugador. |
Los baneos viven en una única tabla (ssAntiCheat_bans) que contiene el Steam
ID, la IP, el ID de hardware, el motivo, la fecha del baneo y su expiración.
Apunta varios servidores a la misma base de datos y un baneo se aplicará en
todos ellos.
Mensaje de baneo
BanMessage admite dos marcadores:
| Marcador | Se reemplaza por |
|---|---|
{reason} |
El motivo del baneo. |
{ban_id} |
El ID numérico del baneo — el valor que necesita un administrador para ssac.unban. |
⚠️ Reemplaza la URL de marcador de posición. El mensaje de fábrica apunta a
store.example.com. Incluye siempre{ban_id}— sin él, un jugador que apele un baneo no tiene nada que citar y tendrás que buscar en la base de datos a mano.
Baneos por asociación de IP
Con UseIPBans activado, se rechaza a un jugador que se conecta desde una
dirección que pertenece a un baneo activo y se registra como su propio
baneo, de modo que la cuenta alternativa queda baneada por Steam ID a partir
de ese momento. Se envía una alerta a
AssociationBans nombrando ambas cuentas.
La comprobación es deliberadamente conservadora — solo se activa cuando la IP
coincide genuinamente, no está en Exclude IPS, y pertenece a una cuenta de
Steam diferente.
⚠️ Los baneos por IP atrapan hogares y conexiones compartidas. Hermanos, compañeros de piso, un cibercafé o una salida de VPN compartida parecerán todos el mismo jugador. Observa el canal de asociación durante un tiempo antes de confiar en él, y añade direcciones compartidas legítimas a
Exclude IPS.
Duraciones de los baneos
| Cómo se hizo el baneo | Duración |
|---|---|
ssac.ban con d=… |
Expira después de ese período. |
ssac.ban sin d=… |
Permanente. |
Automático (el BanAfterDetections de un módulo) |
Permanente. |
Para levantar cualquier baneo, usa su ID de baneo:
Revisar una detección antes de que se convierta en un baneo
El intervalo entre la detección y la oleada de baneos es tu ventana de revisión. Un flujo de trabajo que funciona bien:
- La alerta de Discord (o la alerta de administrador en el juego) nombra al jugador y al módulo.
ssac.go— espíalo de inmediato, sin argumentos para saltar a la última detección.!tracers— observa sus disparos; la asistencia de puntería es evidente a simple vista de esta forma.ssac.pendingbans— comprueba si ya está encolado y por qué.- Decide: dejar que la oleada corra,
ssac.banwavepara actuar ahora, ossac.clearbanwavesi crees que es un falso positivo.
Si un módulo produce falsos positivos repetidos en tu configuración, sube su
umbral o activa OnlyAnalysis en lugar de desactivarlo — consulta
Consejo de ajuste.
Próximos pasos:
- Configuración — todas las claves de
config.json. - Comandos — la referencia completa de comandos.