SafeGuard

Configuración

SafeGuard se configura en dos sitios:

  • Panel → Reglas: con la nube conectada, aquí se definen las detecciones y los castigos de cada servidor. Cada cambio queda versionado y auditado, llega al servidor en segundos, y puedes Restaurar una versión anterior desde el Historial.
  • `config.lua`: framework, staff, idioma, pruebas y alertas locales, y la política de protección que se usa sin la nube (Config.Protection). sg reload aplica los cambios sin reiniciar.
Los secretos (clave de licencia, webhook de Discord) nunca van en config.lua: van en server.cfg con set.

Detecciones

En Reglas → Detecciones puedes desactivar cualquier detección o cambiar su sensibilidad (0 = la más tolerante, 100 = la más agresiva). Si una detección da falsos positivos en tu servidor, baja su sensibilidad en vez de desactivarla, y marca las detecciones erróneas como falso positivo: SafeGuard aprende y les da menos peso.

Castigos

Los castigos dependen del riesgo del jugador (0–100), que suma el peso de cada detección y baja con el tiempo. Las reglas por defecto:

ReglaCuándoQué pasa
honeypotSe ha disparado un evento honeypotCuarentena, revisión del staff, captura de pantalla
extremeRiesgo ≥ 95 y "puerta de baneo" abiertaBaneo permanente
criticalRiesgo ≥ 80Cuarentena, revisión del staff, captura de pantalla
highRiesgo ≥ 60Revisión del staff
suspiciousRiesgo ≥ 40Vigilar

La puerta de baneo protege contra baneos injustos: solo se abre con al menos una señal verificada por el servidor con un 80 % de confianza o más, o con señales en dos categorías independientes. Las señales que solo vienen del cliente nunca llevan a un baneo automático. Cuarentena significa que el jugador sigue conectado, pero no puede hacer daño, crear entidades ni ganar dinero hasta que lo liberes.

Durante las primeras semanas recomendamos castigos solo con revisión del staff, o el modo aprendizaje de la página del servidor, para ver cómo se comportan las detecciones en tu servidor antes de activar los baneos automáticos.

Listas recomendadas y trampas

En Reglas → Entidades y Reglas → Armas las listas son una checklist por categoría (con búsqueda). Lo que usan los menús de trampas viene marcado; desmarca lo que use tu servidor y escribe modelos addon o hashes en Otros. Restaurar los valores de SafeGuard vuelve al principio.

  • Armas: el railgun, las armas de rayos, la minigun, los lanzacohetes, el lanzagranadas, las bombas adhesivas y las minas se retiran a quien los tenga.
  • Vehículos, props y animales: se eliminan en cuanto el juego de un jugador crea uno. Tanques, jets militares, Oppressor, Deluxo y otros vehículos armados, props enormes que los menús tiran encima de los jugadores (noria, molino, OVNI) y ballenas/tiburones en tierra.
  • Comandos de menús conocidos: comandos que registran en el juego menús como Eulen o Lynx.
  • Explosiones recomendadas: dirigible, cañón orbital, munición explosiva y otras que los servidores de roleplay no tienen.
  • Trampas de exploits: pillan a los menús que disparan los eventos de pagos, objetos y cárcel de scripts populares que tu servidor no usa. Los eventos de los scripts que usas nunca se convierten en trampa. Una trampa sola es solo una nota, porque un script sustituto puede dispararla; tres trampas distintas en dos minutos son un menú barriendo el servidor, y eso es un baneo.

Si tu servidor usa de verdad alguna de esas armas, props o explosiones, desactiva la lista correspondiente o añade el modelo a los Modelos permitidos.

Protecciones extra

  • Lluvia de coches: varios vehículos creados lejos del jugador (o muy por encima) en poco tiempo se bloquean. Un coche en una plaza de garaje nunca cuenta.
  • Táser: usar el táser a más de 22 m o en serie (más de 15 por minuto).
  • Kill player: puñetazos y armas blancas que aciertan a más de 8 m.
  • Explosiones, fuego y partículas: en Reglas → Entidades puedes bloquearlos por completo. Desactivado por defecto, porque las granadas, los molotovs y los coches ardiendo son parte del juego.
  • Zonas seguras: en config.lua (Config.SafeZones), áreas donde tus scripts impiden que los jugadores reciban daño. Dentro de ellas, el daño sin efecto no cuenta como godmode.
  • Baneo por prueba combinada: en Reglas → Castigos. Banea a un jugador cuando se confirman dos tipos independientes de cheat en 10 minutos, por ejemplo noclip y godmode. Empieza en Solo observar, que registra quién habría sido baneado sin castigar a nadie; revisa esos jugadores antes de activar los baneos.
  • Anti VPN: en config.lua (Config.AntiVpn), desactivado por defecto. Comprueba la IP de quien se conecta con la API pública de proxycheck.io y rechaza VPN y proxies; como envía la IP a ese servicio, menciónalo en tu política de privacidad. Sin clave hace unas 100 comprobaciones al día; una clave gratuita (set safeguard_proxycheck_key "…" en server.cfg) sube el límite. Si el servicio no responde, el jugador entra.

Excepciones

En Reglas → Excepciones puedes eximir a un jugador de algunas categorías durante un tiempo (por ejemplo, un evento con teletransportes). El staff con safeguard.bypass (o con el permiso del framework configurado) nunca se puntúa.

config.lua (modo local)

Config.Protection = {
    movement = { maxFootSpeed = 14, teleportDistance = 120, vehicleHijack = true, vehicleGodmode = true },
    weapons = { recommendedBlacklist = true, blacklist = { 'weapon_rpg' }, inventoryCheck = true, inventoryIgnored = { 'weapon_flashlight' } },
    entities = { recommendedModels = true, blockedModels = { 'prop_beach_fire' }, attachAllowedModels = { 'p_cs_cuffs_02_s' } },
    explosions = { recommendedTypes = true, maxPerWindow = 5 },
    eventShield = { exploitProbes = true, markupInjection = true, honeypots = { 'myserver:adminGiveMoney' }, fanout = { maxDistinct = 20, windowMs = 5000 } },
    combat = { maxKillsPerMinute = 8 },
    detections = { ['movement.spectate'] = { enabled = false } },
}

Los nombres son los mismos que en el panel. Los nombres desconocidos se indican en la consola, así que un error de escritura nunca pasa desapercibido.