GUÍA · DESARROLLADORES

Detección de cuentas alternativas en FiveM: lo que un script puede hacer y lo que no

Los dueños de servidores suelen buscar un script. Una parte se puede programar, pero la parte que un script no ve es la mayor parte del trabajo. Esta guía explica los tres enfoques que se pueden implementar, el límite real de cada uno y por qué el historial entre servidores no se puede resolver con código.

El primer muro: lo que puede ver un script

Un script del lado del servidor de FiveM solo ve esto: los jugadores que se conectan a tu servidor, los identificadores que presentan en ese momento, su IP y el historial del jugador en tu propio servidor. Todo lo demás —lo que el jugador ha hecho en otros servidores, con qué cuentas está vinculado— no está en tus datos.

Por eso `GetPlayerIdentifiers(source)` solo te da la primera mitad de la detección de cuentas alternativas: lee identidades. La segunda mitad es comparar esas identidades con algo, y si el servidor no tiene nada con qué compararlas, por bueno que sea el código no va a dar ningún resultado.

Tres enfoques que sí puedes implementar

Hay tres cosas que puedes hacer con tus propios datos. Cada una produce una señal real y cada una tiene un punto ciego conocido.

  • Historial de identificadores: compara los identificadores de un jugador que se conecta con tu propia tabla de baneos. Así se detecta una cuenta nueva que comparte license con una cuenta baneada. Límite: solo conoce las cuentas que TÚ baneaste, y no sabe nada de un jugador realmente nuevo.
  • Repetición de dispositivo y de red: vincula las cuentas que llegan desde la misma IP o con el mismo rastro de dispositivo. Límite: una misma casa, una misma residencia de estudiantes o una misma salida de VPN pone a cientos de jugadores inocentes detrás de la misma dirección, así que nunca debería ser por sí sola un motivo para actuar.
  • Patrón de comportamiento: una cuenta recién creada, movimientos anómalos en el primer minuto, entradas masivas. Límite: es una señal débil que también atrapa a jugadores nuevos que no hacen trampa; solo significa algo combinada con las demás.

Por qué el historial entre servidores no es un problema de código

La verdadera pregunta es: “¿este jugador fue baneado en otro servidor?”. La respuesta no está en tu base de datos: Cfx.re no transmite el baneo de un servidor a los demás ni ofrece ningún endpoint de consulta. Así que responderla es un problema de DATOS, no de código; los datos vienen de las comunidades que los comparten.

Eso marca el techo de lo que puede hacer un script: tu propio archivo. Más allá, o te conectas a un archivo compartido por servidores que colaboran, o usas una capa que revisa al jugador antes incluso de dejarlo entrar.

Pon la comprobación en el momento de la conexión

Uses los datos que uses, el momento decide el resultado. Una comprobación que se ejecuta en el evento `playerConnecting` te permite decidir antes de que el jugador esté dentro; una comprobación posterior solo limita el daño.

Argos Guard es exactamente esa capa: cuando un jugador se conecta, compara sus identificadores con más de 110.000 registros de baneo entre servidores y con clústeres de cuentas alternativas. No sustituye a tu script de detección: añade los datos que tu script no puede ver.

Prevé los falsos positivos desde el principio

La detección de cuentas alternativas es probabilística. Dos hermanos que comparten dispositivo, cientos de personas detrás de una misma salida de VPN y los avatares populares repetidos producen falsas coincidencias. Así que, al escribir el script, no tomes acciones automáticas por una sola señal; puntúa las señales y deja el umbral en manos del dueño del servidor.

Segundo: una vía de apelación. Cuando una decisión automática atrapa a la persona equivocada, el error se vuelve permanente a menos que el jugador tenga una forma de impugnarlo. Es un requisito de diseño, no un detalle.

Preguntas frecuentes

¿Existe un script ya hecho de detección de cuentas alternativas para FiveM?

Existen scripts que trabajan con los datos de tu propio servidor y aplican tres enfoques: historial de identificadores, repetición de dispositivo o red y patrones de comportamiento. Ninguno puede ver el historial de un jugador en otros servidores: Cfx.re no da acceso a esos datos. Esa parte es un problema de datos.

¿Basta GetPlayerIdentifiers para detectar cuentas alternativas?

No, es solo la mitad: lee identidades, pero no te da nada con qué compararlas. Puedes buscar coincidencias en tu propio archivo de baneos; los registros de otros servidores no los puedes ver.

¿Es fiable detectar cuentas alternativas por IP?

No. Una misma casa, una misma residencia de estudiantes o una misma salida de VPN pone a cientos de jugadores inocentes detrás de la misma dirección. La IP nunca debería ser por sí sola un motivo para actuar, solo una señal secundaria.

¿En qué evento debería ejecutarse la comprobación?

En el evento `playerConnecting`. Una comprobación que se ejecuta ahí te permite decidir antes de que el jugador esté dentro; una comprobación posterior solo limita el daño.

¿Argos Guard sustituye a un script de detección?

No. Guard no sustituye a tu script; añade, en el momento de la conexión, los datos de baneos entre servidores y de cuentas alternativas que tu script no puede ver. Funcionan juntos.