Dupeo o exploit de dinero en FiveM: deshazlo con un backup
¿Alguien ha dupeado objetos o se ha dado dinero? Encuentra cuándo empezó, elige el backup justo anterior y haz rollback de la base perdiendo lo mínimo.
Por PK
- Backups
- Rollback
- Dupes
- Economy
En esta página
- Cómo se ve un dupeo o un exploit de dinero
- Por qué limpiarlo a mano casi nunca funciona
- Encuentra el punto de restauración correcto
- Por qué la frecuencia de los backups decide cuánto pierdes
- Rollback para todos o solo para unos pocos jugadores
- Cómo lo resuelven los backups de FiveDock
- Antes de volver a arrancar el servidor
- Preguntas frecuentes
- ¿Hasta dónde hago rollback en FiveM después de un dupeo?
- ¿Los jugadores pierden progreso si hago rollback de la base?
- Un cheater se ha dado dinero. ¿Basta con quitárselo?
- ¿Puede txAdmin hacer rollback de la base de datos?
- ¿Los backups de FiveDock vienen en el plan gratuito?
Cuando un jugador duplica objetos o un cheater se da dinero en tu servidor de FiveM, la solución más limpia es restaurar la base de datos desde un backup hecho justo antes. Borrar las copias a mano casi nunca funciona, porque para cuando te das cuenta, el dinero y los objetos ya están en manos de otros jugadores. Este post explica cómo suelen ocurrir estos exploits, cómo encontrar el punto de restauración correcto, cuándo hacer rollback para todos y cuándo solo para unos pocos jugadores, y cómo lo hacen los backups de FiveDock desde el panel.
La mayoría de servidores llegan a FiveDock por su CDN, para las imágenes de ox_inventory y las fotos del móvil. FiveDock también hace backups de la base de datos de tu servidor, en todos los planes, el gratuito incluido. Y eso es lo que te salva la noche en que alguien rompe la economía.
Cómo se ve un dupeo o un exploit de dinero
Normalmente empieza con un mensaje en Discord. Alguien vende rifles a mitad de precio, un jugador nuevo se ha comprado tres superdeportivos el primer día o el mercado se llena de repente de un objeto que debería ser raro. Lo miras y un personaje tiene 40 millones en el banco, mientras que el siguiente más rico tiene 200 000.
Detrás casi siempre hay una de estas causas:
Por qué limpiarlo a mano casi nunca funciona
Lo primero que sale es vaciarle la cuenta al cheater y banearlo. Eso arregla una fila. Para cuando te enteras, el dinero suele estar ya en coches, casas y bolsillos de otros jugadores, y los objetos dupeados se han vendido, guardado en stashes y regalado a amigos. Cada uno de esos sitios es otra fila en otra tabla, y alguno se te va a escapar.
Un backup de antes del exploit no tiene nada de eso. Lo restauras y las copias desaparecen de todas partes a la vez, también de los sitios donde nunca se te habría ocurrido mirar.
Encuentra el punto de restauración correcto
El punto de restauración es el backup más reciente hecho antes de que empezara el exploit. Uno posterior ya contiene las copias. Para encontrarlo:
mysql -u root -p -e "CREATE DATABASE restore_check"
mysql -u root -p restore_check < fivem-2026-10-23-2000.sqlLuego mira quién ha ganado más desde ese backup. En QBCore y Qbox:
SELECT live.citizenid,
CAST(JSON_EXTRACT(old.money, '$.bank') AS SIGNED) AS bank_then,
CAST(JSON_EXTRACT(live.money, '$.bank') AS SIGNED) AS bank_now,
CAST(JSON_EXTRACT(live.money, '$.bank') AS SIGNED)
- CAST(JSON_EXTRACT(old.money, '$.bank') AS SIGNED) AS gained
FROM fivem.players AS live
JOIN restore_check.players AS old ON old.citizenid = live.citizenid
ORDER BY gained DESC
LIMIT 20;En ESX el dinero está en la columna accounts de users:
SELECT live.identifier,
CAST(JSON_EXTRACT(old.accounts, '$.bank') AS SIGNED) AS bank_then,
CAST(JSON_EXTRACT(live.accounts, '$.bank') AS SIGNED) AS bank_now,
CAST(JSON_EXTRACT(live.accounts, '$.bank') AS SIGNED)
- CAST(JSON_EXTRACT(old.accounts, '$.bank') AS SIGNED) AS gained
FROM fivem.users AS live
JOIN restore_check.users AS old ON old.identifier = live.identifier
ORDER BY gained DESC
LIMIT 20;Cambia $.bank por $.cash ($.money en ESX) para revisar el efectivo. Los personajes creados después del backup no salen en esta lista, así que míralos aparte. Si el saldo del cheater en el backup parece normal, es un buen punto de restauración. Si ahí ya es enorme, retrocede un backup más.
La misma consulta te enseña a quién le pasó el dinero el cheater. Un jugador que ha ganado unos cuantos millones en una hora sin un trabajo que pague tanto suele ser adonde fue el dinero.
Por qué la frecuencia de los backups decide cuánto pierdes
Un rollback devuelve a cada jugador al momento del backup, así que también se pierde todo lo que hizo desde entonces. Con un backup cada noche a las 04:00 y un exploit descubierto a las 21:00, toda la ciudad pierde 17 horas de juego. Con un backup cada hora, pierde menos de una.
Por eso el tiempo entre el exploit y el momento en que te das cuenta importa tanto como el backup en sí. Las alertas que te avisan en minutos mantienen el rollback corto.
Rollback para todos o solo para unos pocos jugadores
Haz rollback de toda la base cuando las copias se han extendido: hay muchos jugadores implicados, el bug afectó a toda la economía o no sabes quién tiene qué. Todos pierden las mismas pocas horas, pero la economía vuelve a estar limpia.
Restaura solo a unos pocos jugadores cuando lo hicieron una o dos personas y las copias no llegaron lejos. Devuelves sus filas desde el backup y nadie más pierde nada. Restaurar el inventario de un jugador explica cómo, con SQL para ESX y QBCore.
Restaurar solo al cheater mientras sus copias siguen en los inventarios de otros jugadores deja el dupeo en el juego. Comprueba adónde fueron los objetos y el dinero antes de elegir este camino.
Cómo lo resuelven los backups de FiveDock
FiveDock hace todo esto desde el panel, a través del agente que ya corre en tu servidor para el CDN y lo demás. Cada backup se cifra en tu máquina con una clave que nosotros nunca vemos.
Los precios y la lista completa de lo que trae cada plan están en precios. Si quieres ver cómo se hacen y se prueban estos backups a mano, lee cómo hacer backup de un servidor de FiveM.
Antes de volver a arrancar el servidor
Cierra primero el agujero. Si el exploit venía de un script, para ese recurso o arréglalo antes del reinicio, o volverá a pasar en menos de una hora. En un evento de dinero, la cantidad la decide siempre el servidor, nunca el cliente:
-- Exploitable: the client decides how much it gets paid
RegisterNetEvent('delivery:pay', function(amount)
local xPlayer = ESX.GetPlayerFromId(source)
xPlayer.addMoney(amount)
end)
-- Safe: the server decides the amount and checks the job was done
local PAY = 450
local onDelivery = {} -- set by the server when it hands out a job
RegisterNetEvent('delivery:finish', function()
local src = source
if not onDelivery[src] then return end
onDelivery[src] = nil
ESX.GetPlayerFromId(src).addMoney(PAY)
end)Preguntas frecuentes
¿Hasta dónde hago rollback en FiveM después de un dupeo?
Hasta el backup más reciente hecho antes del primer evento explotado, no antes de que te dieras cuenta. Cárgalo primero en una base de datos aparte y comprueba que el saldo y los objetos del cheater se ven normales ahí.
¿Los jugadores pierden progreso si hago rollback de la base?
Sí, todo lo que pasó desde el backup. Con backups cada hora es menos de una hora; con uno cada noche puede ser casi un día entero. Si solo hubo unos pocos jugadores implicados, restaura solo sus filas.
Un cheater se ha dado dinero. ¿Basta con quitárselo?
Solo si el dinero nunca salió de su personaje. Normalmente ya está en coches, casas o cuentas de otros jugadores, y quitarlo de una fila deja el resto. Volver a un backup de antes es más rápido y lo pilla todo.
¿Puede txAdmin hacer rollback de la base de datos?
No. txAdmin gestiona el proceso del servidor, los bans y el historial de jugadores, pero no hace backup ni restaura tu base MySQL o MariaDB. Para eso necesitas mysqldump programado o una herramienta como FiveDock.
¿Los backups de FiveDock vienen en el plan gratuito?
Sí. Free hace un backup diario, lo guarda 7 días y puede restaurar toda la base. Los backups cada hora, las alertas de objetos duplicados y la restauración de un solo jugador son de Metro.