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
| Modo | Comportamiento |
|---|---|
'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.
| Umbral | Severidad |
|---|---|
| > 200 eventos / 10 s | warn |
| > 400 eventos / 10 s | suspicious |
| > 800 eventos / 10 s | critical |
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ía | Modelos |
|---|---|
| Aviones de guerra | lazer, hydra, b11, besra, starling |
| Tanques / militares | rhino, khanjali, apc, halftrack, insurgent3 |
| Helicópteros de ataque | akula, savage, hunter, annihilator, valkyrie |
| Animales / peds que crashean | a_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:
- Rate-limit: más de 6 explosiones en 10 segundos → flag.
- 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.
| Tipo | Condición |
|---|---|
| Noclip | Velocidad a pie > 30 m/s (~108 km/h) sostenida durante 3 muestras |
| Teleport | Delta de posición > 120 m entre dos muestras consecutivas de 2 s |
| Superspeed | Velocidad 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
whitelistIpssi usan VPN de trabajo o gaming. - Obtén una API Key gratuita en proxycheck.io y ponla en
apiKeypara aumentar el límite diario.
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:
- Ve al panel web → Detecciones → filtra por categoría
unknown_event. - Revisa los prefijos de los eventos flagueados.
- Si son de tus propios scripts, añádelos a
extraKnownPrefixesenconfig.lua. - 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:
- Se registra un disparo en el panel web → pestaña Detecciones → sub-pestaña Honeypot.
- Se congela un Forensic Replay del jugador en ese momento.
- El risk score del jugador sube a
criticalde forma automática. - 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ía | Descripción |
|---|---|
| ROF | Rate 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-hit | Múltiples impactos en el mismo tick — imposible con armas de proyectil único. |
| Distancia | Dañ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:
| Factor | Peso aprox. |
|---|---|
Detección critical reciente | +30 |
Detección suspicious reciente | +15 |
| HWID baneado | +75 |
| Ban previo en este servidor | +40 |
| Bans en la red federada | variable |
| 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.