Como restaurar o inventário de um jogador de FiveM após um dupe
Devolva a um jogador seus itens, dinheiro e carros no ESX, QBCore ou ox_inventory a partir de um backup, sem dar rollback no servidor inteiro. Com SQL.
Por Termi
- Backups
- Rollback
- ox_inventory
- Dupes
Nesta página
- Onde um personagem fica no banco de dados
- Restaurar um personagem na mão
- Primeiro ache os itens duplicados
- Restaurar um jogador com o FiveDock
- Perguntas frequentes
- Dá para restaurar um só jogador no FiveM sem rollback completo?
- Como acho itens duplicados no meu servidor de FiveM?
- Restaurar um jogador remove os itens que ele ganhou depois do backup?
- E se o jogador estiver online durante a restauração?
Um bug come o inventário de um jogador, ou um dupe deixa um jogador com quarenta pistolas que têm o mesmo número de série. Voltar o servidor inteiro para a noite passada pune todo mundo que jogou desde então. O melhor é restaurar só as linhas de um personagem. Este guia mostra onde ESX, QBCore e ox_inventory guardam essas linhas, como copiá-las na mão de um backup e como achar os itens duplicados.
Onde um personagem fica no banco de dados
Restaurar um personagem na mão
Você precisa de um backup de antes do dano, carregado num banco separado. Nunca carregue por cima do banco em produção. Primeiro confirme que o jogador está offline e continua assim até você terminar: o framework salva o inventário que mantém na memória no próximo salvamento ou quando o jogador desconecta, e esse salvamento sobrescreve a sua restauração.
Carregue o backup num banco descartável ao lado do banco em produção:
mysql -u root -p -e "CREATE DATABASE restore_scratch"
mysql -u root -p restore_scratch < fivem-2026-10-22.sqlDepois copie de volta as colunas do personagem a partir do banco descartável. Aqui fivem é o banco em produção; use o nome do seu:
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';Carros e stashes seguem o mesmo padrão, por citizenid ou owner. Antes de copiar as linhas de volta, veja se o jogador vendeu um carro ou se uma placa agora é de outra pessoa, e apague o banco descartável quando terminar.
Uma restauração por linha devolve o inventário inteiro como estava no backup, então tudo o que o jogador ganhou desde então some. Avise a ele para qual horário você restaurou.
Primeiro ache os itens duplicados
Se o dano foi um dupe, restaurar quem duplicou não basta, porque as cópias podem já ter sido vendidas ou repassadas. Armas e outros itens únicos têm um número de série: metadata.serial no ox_inventory e info.serie no qb-inventory. O mesmo número em dois lugares é uma cópia. No MySQL 8 ou MariaDB 10.6 e mais novos, esta consulta lista todo número que aparece mais de uma vez entre os jogadores do QBCore que usam 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 o ESX, troque players e citizenid por users e identifier; para o qb-inventory, use $.info.serie como caminho. Stashes, porta-malas e porta-luvas também guardam itens, então rode a mesma consulta em ox_inventory.data e na tabela de veículos antes de decidir quem fez o dupe.
Restaurar um jogador com o FiveDock
O FiveDock faz por você o trabalho do banco descartável. No Metro, você escolhe um backup e um jogador no painel, e o FiveDock restaura só as linhas ligadas aos identificadores desse jogador nas tabelas do framework: o personagem com dinheiro e inventário, carros, licenças, skins, outfits, apartamentos e stashes do ox_inventory. Antes de mudar qualquer coisa, ele mostra quantas linhas a restauração vai tocar.
Os alertas de itens duplicados no Metro ficam de olho no mesmo número de série em dois inventários, ou numa pilha que cresce sem explicação. Cada achado guarda quem tinha o item e um backup daquele momento, então o ponto de restauração já está lá quando você olha. Os alertas de dinheiro, em todos os planos, avisam no Discord quando uma transferência passa de um limite ou um jogador ganha dinheiro rápido demais.
Os backups em si vêm em todos os planos: diários no Free e no City, de hora em hora no Metro, criptografados na sua máquina com uma chave que o FiveDock nunca vê. No Free e no City, uma restauração devolve o servidor inteiro; uma tabela só ou um jogador só é do Metro.
Perguntas frequentes
Dá para restaurar um só jogador no FiveM sem rollback completo?
Dá. Carregue um backup de antes do problema num banco separado e copie de volta as linhas desse personagem: players no QBCore ou users no ESX, mais os carros e stashes dele. O FiveDock Metro faz isso pelo painel, um jogador por vez, com a contagem de linhas que vai alterar.
Como acho itens duplicados no meu servidor de FiveM?
Procure números de série únicos que aparecem mais de uma vez. O ox_inventory guarda o número de série de uma arma em metadata.serial, então uma consulta com JSON_TABLE na coluna de inventário lista todo número com mais de uma cópia. Os alertas de itens duplicados do FiveDock fazem essa checagem por você e avisam no Discord.
Restaurar um jogador remove os itens que ele ganhou depois do backup?
Remove. Uma restauração por linha devolve a coluna inteira como estava no momento do backup. Escolha o backup mais recente de antes do problema e avise o jogador para qual horário você restaurou.
E se o jogador estiver online durante a restauração?
O framework dele salva o que mantém na memória no próximo salvamento ou quando ele desconecta, e isso sobrescreve a restauração. Expulse o jogador ou espere ele ficar offline.