Restaurer l’inventaire d’un joueur FiveM après un dupe ou un bug
Rendez à un joueur ses objets, son argent et ses voitures sur ESX, QBCore ou ox_inventory depuis une sauvegarde, sans restaurer tout le serveur. SQL inclus.
Par Termi
- Backups
- Rollback
- ox_inventory
- Dupes
Sur cette page
- Où se trouve un personnage dans la base
- Restaurer un personnage à la main
- Repérez d’abord les objets dupliqués
- Restaurer un joueur avec FiveDock
- Questions fréquentes
- Peut-on restaurer un seul joueur sur FiveM sans restaurer tout le serveur ?
- Comment trouver les objets dupés sur mon serveur FiveM ?
- Restaurer un joueur supprime-t-il les objets gagnés après la sauvegarde ?
- Que se passe-t-il si le joueur est en ligne pendant la restauration ?
Un bug avale l’inventaire d’un joueur, ou un dupe laisse un joueur avec quarante pistolets qui portent le même numéro de série. Remettre tout le serveur à la nuit dernière pénalise tous ceux qui ont joué depuis. Mieux vaut restaurer seulement les lignes d’un personnage. Ce guide montre où ESX, QBCore et ox_inventory rangent ces lignes, comment les copier à la main depuis une sauvegarde et comment repérer les objets dupliqués.
Où se trouve un personnage dans la base
Restaurer un personnage à la main
Il vous faut une sauvegarde antérieure au problème, chargée dans une base séparée. Ne la chargez jamais par-dessus la base en production. Assurez-vous d’abord que le joueur est hors ligne et le reste jusqu’à la fin : le framework enregistre l’inventaire qu’il garde en mémoire à la prochaine sauvegarde ou à la déconnexion, et cet enregistrement écrase votre restauration.
Chargez la sauvegarde dans une base jetable à côté de la base en production :
mysql -u root -p -e "CREATE DATABASE restore_scratch"
mysql -u root -p restore_scratch < fivem-2026-10-22.sqlRecopiez ensuite les colonnes du personnage depuis la base jetable. fivem est ici la base en production, mettez le nom de la vôtre :
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';Les voitures et les stashes suivent le même schéma, par citizenid ou owner. Avant de recopier des lignes, vérifiez que le joueur n’a pas vendu une voiture et qu’une plaque n’appartient pas désormais à quelqu’un d’autre, puis supprimez la base jetable quand vous avez terminé.
Une restauration au niveau des lignes remet tout l’inventaire dans l’état de la sauvegarde : tout ce que le joueur a gagné depuis disparaît. Dites-lui à quelle heure vous avez restauré.
Repérez d’abord les objets dupliqués
Si les dégâts viennent d’un dupe, restaurer le dupeur ne suffit pas, car les copies ont peut-être déjà été vendues ou données. Les armes et les autres objets uniques portent un numéro de série : metadata.serial dans ox_inventory et info.serie dans qb-inventory. Le même numéro à deux endroits, c’est une copie. Sur MySQL 8 ou MariaDB 10.6 et plus récents, cette requête liste chaque numéro qui apparaît plus d’une fois chez les joueurs QBCore qui utilisent 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;Pour ESX, remplacez players et citizenid par users et identifier ; pour qb-inventory, prenez $.info.serie comme chemin. Les stashes, coffres et boîtes à gants contiennent aussi des objets : lancez donc la même requête sur ox_inventory.data et sur la table des véhicules avant de décider qui a dupé.
Restaurer un joueur avec FiveDock
FiveDock s’occupe du travail avec la base jetable. Sur Metro, vous choisissez une sauvegarde et un joueur dans le panel, et FiveDock restaure seulement les lignes liées aux identifiants de ce joueur dans les tables du framework : le personnage avec son argent et son inventaire, les voitures, les licences, les skins, les tenues, les appartements et les stashes ox_inventory. Avant tout changement, il affiche le nombre de lignes que la restauration va toucher.
Les alertes d’objets dupliqués sur Metro surveillent le même numéro de série dans deux inventaires, ou une pile qui grossit sans explication. Chaque détection garde qui détenait l’objet et une sauvegarde de ce moment : le point de restauration est donc déjà là quand vous regardez. Les alertes d’argent, sur tous les plans, publient sur Discord quand un transfert dépasse un seuil ou qu’un joueur gagne de l’argent trop vite.
Les sauvegardes elles-mêmes sont comprises dans tous les plans : quotidiennes sur Free et City, toutes les heures sur Metro, chiffrées sur votre machine avec une clé que FiveDock ne voit jamais. Sur Free et City, une restauration remet tout le serveur ; une seule table ou un seul joueur, c’est Metro.
Questions fréquentes
Peut-on restaurer un seul joueur sur FiveM sans restaurer tout le serveur ?
Oui. Chargez une sauvegarde antérieure au problème dans une base séparée et recopiez les lignes de ce personnage : players sur QBCore ou users sur ESX, plus ses voitures et ses stashes. FiveDock Metro le fait depuis le panel, un joueur à la fois, avec le nombre de lignes qu’il va modifier.
Comment trouver les objets dupés sur mon serveur FiveM ?
Cherchez les numéros de série uniques détenus plus d’une fois. ox_inventory stocke le numéro de série d’une arme dans metadata.serial : une requête JSON_TABLE sur la colonne d’inventaire liste donc chaque numéro qui a plus d’une copie. Les alertes d’objets dupliqués de FiveDock font cette vérification pour vous et publient sur Discord.
Restaurer un joueur supprime-t-il les objets gagnés après la sauvegarde ?
Oui. Une restauration au niveau des lignes remet toute la colonne dans l’état de la sauvegarde. Choisissez la sauvegarde la plus récente d’avant le problème et dites au joueur à quelle heure vous avez restauré.
Que se passe-t-il si le joueur est en ligne pendant la restauration ?
Son framework enregistre ce qu’il garde en mémoire à la prochaine sauvegarde ou à la déconnexion, ce qui écrase la restauration. Expulsez-le, ou attendez qu’il soit hors ligne.