Zum Hauptinhalt springen

Sistema de detecciones

FR Guard incluye un motor de detección automática que observa el comportamiento de los jugadores mientras están conectados. A diferencia de los antitrampas tradicionales, nunca analiza el PC del jugador ni actúa como caja negra: toda evidencia es visible, auditable y el staff humano siempre toma la decisión final.


Principios de diseño

Cero falsos positivos. Todos los detectores usan histéresis (requieren N anomalías en ventana) y arrancan en modo shadow (solo observan). Antes de activar cualquier detector en active, calibra con los datos de tu servidor.

Nunca ban automático. Ningún detector puede crear un ban sin intervención humana. Las detecciones elevan el risk score del jugador y generan flags auditables en el panel web.

El owner es soberano. Tú controlas qué detectores están activos, qué umbrales usan y qué acción toman. El sistema presenta hechos, tú decides consecuencias.


Modos de operación

ModoComportamiento
'off'Desactivado. No se ejecuta.
'shadow'Observa y registra flags en el panel. Sin acciones. Recomendado para empezar.
'active'Ejecuta la acción de la política del detector (kick si procede).

Interruptor maestro: aunque un detector esté en 'active', si Config.Detections.allowAutoKick = false, el kick no se ejecuta. Solo se envía el flag al panel.


Exención de staff

Los jugadores identificados como staff (por ACE, grupos del framework o staffDiscordIds) nunca generan flags. El staff usa herramientas de admin legítimamente (noclip, god mode, spawn de vehículos…) que de otro modo dispararían los detectores.

Configurable en Config.Detections.exemptStaff y Config.Detections.exemptStaffMode.


Detectores

Event Spam

Qué detecta: flood de TriggerServerEvent en ventana corta. Patrón típico de cheat menus que disparan eventos en bucle.

Cómo funciona: cuenta los eventos por jugador en una ventana de 10 segundos. Si supera el umbral, genera un flag con severidad escalada.

UmbralSeveridad
> 200 eventos / 10 swarn
> 400 eventos / 10 ssuspicious
> 800 eventos / 10 scritical

Los prefijos del framework (esx:, QBCore:, qb-, ox_, ox:, fiverank_guard:) están excluidos automáticamente para evitar falsos positivos en servidores activos.

Configuración relevante: Config.Detections.eventSpam


Entity Spawn

Qué detecta: creación de entidades prohibidas — vehículos militares, jets de combate, helicópteros de ataque y animales que crashean clientes.

Cómo funciona: escucha entityCreating y compara el modelo contra la blacklist. En modo 'active' cancela la creación con CancelEvent().

Blacklist por defecto:

CategoríaModelos
Aviones de guerralazer, hydra, b11, besra, starling
Tanques / militaresrhino, khanjali, apc, halftrack, insurgent3
Helicópteros de ataqueakula, savage, hunter, annihilator, valkyrie
Animales / peds que crasheana_c_shark, a_c_killerwhale, a_c_humpback

Amplía el blacklist con los modelos que quieras prohibir en tu servidor (por hash o nombre del modelo).

Configuración relevante: Config.Detections.entitySpawn


Explosion

Qué detecta: tasa abusiva de explosiones y tipos de explosión no permitidos.

Cómo funciona: dos reglas independientes sobre explosionEvent:

  1. Rate-limit: más de 6 explosiones en 10 segundos → flag.
  2. Whitelist de tipos: tipos no incluidos en la lista → flag.

La whitelist incluye por defecto todos los tipos legítimos de armas, vehículos y accidentes del juego base. Los tipos de explosión relacionados con hacks (por ejemplo, tipo 66 que no existe en el juego legítimo) generan flag inmediato.

Configuración relevante: Config.Detections.explosion


Weapon Mod

Qué detecta: modificación del daño de armas mediante hacks (damage multiplier).

Cómo funciona: engancha weaponDamageEvent y compara el daño causado contra el rango esperado para esa arma. Requiere 3 anomalías en 20 segundos antes de flag (histéresis). Solo evalúa daños superiores a 50 HP para ignorar armas suaves.

Un jugador con hitscan o aimbot con armas normales no dispara este detector — solo lo dispara si el daño supera 3× el máximo conocido del arma.

Configuración relevante: Config.Detections.weaponMod


God Mode

Qué detecta: HP + Armor intactos tras daño real confirmado por el servidor.

Cómo funciona: solo evalúa durante la ventana inmediata tras un weaponDamageEvent. Cada 1,5 segundos pregunta la HP+Armor al cliente. Si en 3 muestras consecutivas el pool HP + Armor permanece intacto, genera un flag.

Diseñado para no falsear con:

  • Scripts médicos — solo evalúa en ventana post-daño.
  • Armor completo — mide el pool combinado HP + Armor, no solo HP.
  • Coches blindados — los vehículos absorben el daño antes de llegar al jugador.

Si ves el flag God mode — HP+Armor intactos, antes de actuar confirma con el replay forense que no hay una explicación legítima.

Configuración relevante: Config.Detections.godMode


Movement — Noclip / Teleport / Superspeed

Qué detecta: tres tipos de movimiento imposible en un solo detector.

TipoCondición
NoclipVelocidad a pie > 30 m/s (~108 km/h) sostenida durante 3 muestras
TeleportDelta de posición > 120 m entre dos muestras consecutivas de 2 s
SuperspeedVelocidad en vehículo > 90 m/s (~324 km/h) sostenida durante 3 muestras

Ventana de gracia para warps legítimos: si tu script teletransporta al jugador (misiones, respawn, llevarle a una sala), llama al export para evitar falsos positivos:

exports.fiverank_guard:setMovementGrace(source, 5000) -- 5 s de gracia

Configuración relevante: Config.Detections.movement


VPN / Proxy

Qué detecta: conexiones desde IPs identificadas como VPN o proxy por proxycheck.io.

Cómo funciona: en playerConnecting, consulta la IP del jugador. El resultado se cachea durante 1 hora para no consumir la quota de la API. En modo 'active', rechaza la conexión con un mensaje claro.

Configuración recomendada:

  • Añade la IP de tu staff a whitelistIps si usan VPN de trabajo o gaming.
  • Obtén una API Key gratuita en proxycheck.io y ponla en apiKey para aumentar el límite diario.
Falsos positivos con VPN legítimas

Algunos jugadores usan VPN para mejorar su latencia o privacidad. Considera mantener este detector en 'shadow' y revisar el feed antes de activarlo en 'active' en tu servidor.

Configuración relevante: Config.Detections.vpn


Unknown Event

Qué detecta: eventos de red con namespace desconocido — la firma típica de cheat menus (lambda_menu:*, evilmenu:*, aimbot:*…).

Cómo funciona: observa el cableado de eventos del servidor y compara contra la whitelist de prefijos conocidos (hereda los de Event Spam + los que añades tú). Lo que no matchea → flag con severidad 'warn'.

No tiene modo 'active' por diseño — es solo informativo. Un único evento desconocido puede ser un script custom de tu servidor que no añadiste a la whitelist.

Qué hacer con los flags:

  1. Ve al panel web → Detecciones → filtra por categoría unknown_event.
  2. Revisa los prefijos de los eventos flagueados.
  3. Si son de tus propios scripts, añádelos a extraKnownPrefixes en config.lua.
  4. Si tienen nombres que no reconoces y el mismo jugador acumula varios → señal de alerta.

Configuración relevante: Config.Detections.unknownEvent


Honeypot Engine

El Honeypot Engine es una capa de detección de cero falsos positivos absolutos. A diferencia de los detectores heurísticos anteriores, cuando el Honeypot dispara, no hay duda posible.

Cómo funciona:

El motor registra en el servidor un conjunto de eventos, natives y variables que no existen en ningún script legítimo de tu servidor. Solo un menú de cheat externo (que lleva hardcodeados nombres de eventos "habituales") los invocaría.

Cuando un cliente llama a uno de estos señuelos:

  1. Se registra un disparo en el panel web → pestaña Detecciones → sub-pestaña Honeypot.
  2. Se congela un Forensic Replay del jugador en ese momento.
  3. El risk score del jugador sube a critical de forma automática.
  4. Se envía una notificación push al staff si tienes webhooks configurados.

No hace kick automático — es evidencia para que tú actúes.

Cada fila en la pestaña Honeypot es prueba irrefutable: el cliente invocó un evento o native que no debería conocer. Los scripts legítimos simplemente no los llaman.


Combat Anomaly Detector

El Combat Anomaly Detector es un módulo independiente del sistema de detecciones convencional. Analiza los datos de combate del servidor en tiempo real para identificar patrones imposibles.

Ver Panel web → Combat para la documentación del módulo de visualización en el panel.

Tipo de anomalíaDescripción
ROFRate of fire mayor que la cadencia máxima documentada del arma.
Headshot ratio% de headshots fuera de 4σ del baseline del servidor para esa arma.
Multi-hitMúltiples impactos en el mismo tick — imposible con armas de proyectil único.
DistanciaDaño registrado más allá del falloff máximo del arma.

Los baselines se calibran per-server con los datos reales de tus jugadores, no con valores genéricos. Esto elimina falsos positivos sobre jugadores con muy buen aim.


Risk Score

Todos los detectores contribuyen a un risk score 0–100 por jugador. El score se recalcula en tiempo real y tiene en cuenta:

FactorPeso aprox.
Detección critical reciente+30
Detección suspicious reciente+15
HWID baneado+75
Ban previo en este servidor+40
Bans en la red federadavariable
Fama negativa en FiveRank+20
Multi-cuenta detectada+25
VPN activo+10

El score es visible en el panel web y en /fivepanel para que el staff priorice las revisiones. Los jugadores con score crítico aparecen con la pill roja parpadeante.


Webhook de notificaciones

Configura una URL de Discord en Panel → Detecciones → Webhooks para recibir un embed automático cada vez que se genere una detección crítica. El embed incluye:

  • Discord ID y nombre del jugador.
  • Categoría y severidad de la detección.
  • Extracto de la evidencia.
  • Enlace directo al perfil del jugador en el panel.

La URL queda enmascarada en la UI tras guardarla. Nadie puede leerla aunque acceda al panel.