Cómo restaurar el inventario de un jugador de FiveM tras un dupeo
Devuelve a un jugador sus objetos, dinero y coches en ESX, QBCore u ox_inventory desde un backup, sin hacer rollback de todo el servidor. Con SQL.
Por Termi
- Backups
- Rollback
- ox_inventory
- Dupes
En esta página
- Dónde vive un personaje en la base de datos
- Restaurar un personaje a mano
- Primero encuentra los objetos duplicados
- Restaurar a un jugador con FiveDock
- Preguntas frecuentes
- ¿Se puede restaurar a un solo jugador en FiveM sin un rollback completo?
- ¿Cómo encuentro objetos dupeados en mi servidor de FiveM?
- ¿Restaurar a un jugador borra los objetos que ganó después del backup?
- ¿Qué pasa si el jugador está conectado durante la restauración?
Un bug se come el inventario de un jugador, o un dupeo deja a un jugador con cuarenta pistolas que comparten número de serie. Devolver todo el servidor a anoche castiga a todos los que han jugado desde entonces. Es mejor restaurar solo las filas de un personaje. Esta guía muestra dónde guardan esas filas ESX, QBCore y ox_inventory, cómo copiarlas a mano desde un backup y cómo encontrar los objetos duplicados.
Dónde vive un personaje en la base de datos
Restaurar un personaje a mano
Necesitas un backup anterior al daño, cargado en una base de datos aparte. Nunca lo cargues encima de la base en producción. Primero asegúrate de que el jugador está desconectado y sigue así hasta que termines: el framework guarda el inventario que tiene en memoria en el siguiente guardado o al desconectarse, y ese guardado pisa tu restauración.
Carga el backup en una base de datos desechable junto a la de producción:
mysql -u root -p -e "CREATE DATABASE restore_scratch"
mysql -u root -p restore_scratch < fivem-2026-10-22.sqlDespués copia de vuelta las columnas del personaje desde la base desechable. Aquí fivem es la base en producción; pon el nombre de la tuya:
UPDATE fivem.players AS live
JOIN restore_scratch.players AS old ON old.citizenid = live.citizenid
SET live.inventory = old.inventory, live.money = old.money
WHERE live.citizenid = 'ABC12345';UPDATE fivem.users AS live
JOIN restore_scratch.users AS old ON old.identifier = live.identifier
SET live.inventory = old.inventory, live.accounts = old.accounts
WHERE live.identifier = 'char1:9a4f00ab12cd34ef';Los coches y los stashes siguen el mismo patrón, por citizenid o owner. Antes de copiar filas de vuelta, comprueba que el jugador no haya vendido un coche y que otra persona no tenga ahora una matrícula, y borra la base desechable cuando termines.
Una restauración a nivel de fila devuelve todo el inventario tal como estaba en el backup, así que desaparece todo lo que el jugador ha conseguido desde entonces. Dile a qué hora has restaurado.
Primero encuentra los objetos duplicados
Si el daño fue un dupeo, restaurar al que duplicó no basta, porque las copias pueden haberse vendido o repartido ya. Las armas y otros objetos únicos llevan un número de serie: metadata.serial en ox_inventory e info.serie en qb-inventory. El mismo número en dos sitios es una copia. En MySQL 8 o MariaDB 10.6 y posteriores, esta consulta lista cada número que aparece más de una vez entre los jugadores de QBCore que usan ox_inventory:
SELECT j.serial, COUNT(*) AS copies, GROUP_CONCAT(p.citizenid) AS holders
FROM players AS p,
JSON_TABLE(p.inventory, '$[*]' COLUMNS (serial VARCHAR(64) PATH '$.metadata.serial')) AS j
WHERE j.serial IS NOT NULL
GROUP BY j.serial
HAVING copies > 1;Para ESX, cambia players y citizenid por users e identifier; para qb-inventory, usa $.info.serie como ruta. Los stashes, maleteros y gunteras también guardan objetos, así que ejecuta la misma consulta sobre ox_inventory.data y la tabla de vehículos antes de decidir quién ha dupeado.
Restaurar a un jugador con FiveDock
FiveDock hace por ti el trabajo de la base desechable. En Metro eliges un backup y un jugador en el panel, y FiveDock restaura solo las filas ligadas a los identificadores de ese jugador en las tablas del framework: el personaje con su dinero e inventario, coches, licencias, skins, outfits, apartamentos y stashes de ox_inventory. Antes de cambiar nada, muestra cuántas filas va a tocar la restauración.
Las alertas de objetos duplicados en Metro vigilan el mismo número de serie en dos inventarios, o una pila que crece sin explicación. Cada hallazgo guarda quién tenía el objeto y un backup de ese momento, así que el punto de restauración ya está ahí cuando miras. Las alertas de dinero, en todos los planes, publican en Discord cuando una transferencia supera un umbral o un jugador gana dinero demasiado rápido.
Los backups en sí vienen con todos los planes: diarios en Free y City, cada hora en Metro, cifrados en tu máquina con una clave que FiveDock nunca ve. En Free y City una restauración devuelve todo el servidor; una sola tabla o un solo jugador es cosa de Metro.
Preguntas frecuentes
¿Se puede restaurar a un solo jugador en FiveM sin un rollback completo?
Sí. Carga un backup anterior al problema en una base de datos aparte y copia de vuelta las filas de ese personaje: players en QBCore o users en ESX, más sus coches y stashes. FiveDock Metro lo hace desde el panel, jugador por jugador, con el recuento de filas que va a cambiar.
¿Cómo encuentro objetos dupeados en mi servidor de FiveM?
Busca números de serie únicos que aparezcan más de una vez. ox_inventory guarda el número de serie de un arma en metadata.serial, así que una consulta con JSON_TABLE sobre la columna de inventario lista cada número con más de una copia. Las alertas de objetos duplicados de FiveDock hacen esa comprobación por ti y publican en Discord.
¿Restaurar a un jugador borra los objetos que ganó después del backup?
Sí. Una restauración a nivel de fila devuelve toda la columna tal como estaba en el backup. Elige el backup más reciente anterior al problema y dile al jugador a qué hora has restaurado.
¿Qué pasa si el jugador está conectado durante la restauración?
Su framework guarda lo que tiene en memoria en el siguiente guardado o al desconectarse, y eso pisa la restauración. Expúlsalo del servidor o espera a que se desconecte.