Zum Inhalt springen
Blog

FiveM-Inventar eines Spielers nach Dupe oder Bug wiederherstellen

Gib einem Spieler Items, Geld und Autos auf ESX, QBCore oder ox_inventory aus dem Backup zurück, ohne den ganzen Server zurückzusetzen. Mit SQL.

Von Termi

5 Min. Lesezeit
  • Backups
  • Rollback
  • ox_inventory
  • Dupes
Auf dieser Seite

Ein Bug frisst das Inventar eines Spielers, oder ein Dupe lässt einen Spieler mit vierzig Pistolen zurück, die dieselbe Seriennummer tragen. Wenn du den ganzen Server auf gestern Nacht zurücksetzt, bestrafst du alle, die seitdem gespielt haben. Besser stellst du nur die Zeilen wieder her, die zu einem Charakter gehören. Diese Anleitung zeigt, wo ESX, QBCore und ox_inventory diese Zeilen ablegen, wie du sie von Hand aus einem Backup kopierst und wie du duplizierte Items überhaupt findest.

Wo ein Charakter in der Datenbank liegt

  • ESX speichert den Charakter in users, mit identifier als Schlüssel, das Geld in der JSON-Spalte accounts und, mit ox_inventory, die Items in inventory. Autos liegen in owned_vehicles, mit owner als Schlüssel.
  • QBCore und Qbox speichern ihn in players, mit citizenid als Schlüssel und money und inventory als JSON-Spalten. Autos liegen in player_vehicles.
  • ox_inventory bringt die Tabelle ox_inventory für Stashes mit, mit owner und name als Schlüssel, und legt Kofferraum und Handschuhfach eines Autos in den Spalten trunk und glovebox der Fahrzeugtabelle ab.
  • Alles andere liegt in eigenen Tabellen: user_licenses auf ESX sowie playerskins, player_outfits und apartments auf QBCore.

Einen Charakter von Hand wiederherstellen

Du brauchst ein Backup von vor dem Schaden, geladen in eine separate Datenbank. Spiel es nie über die Live-Datenbank. Stell zuerst sicher, dass der Spieler offline ist und es bis zum Ende bleibt: Das Framework speichert das Inventar, das es im Speicher hält, beim nächsten Save oder beim Disconnect, und dieser Save überschreibt deine Wiederherstellung.

Lade das Backup in eine Wegwerf-Datenbank neben der Live-Datenbank:

terminal
mysql -u root -p -e "CREATE DATABASE restore_scratch"
mysql -u root -p restore_scratch < fivem-2026-10-22.sql

Dann kopierst du die Spalten des Charakters aus der Wegwerf-Datenbank zurück. fivem ist hier die Live-Datenbank, nimm deinen eigenen Namen:

QBCore · Qbox
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';
ESX · ox_inventory
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';

Autos und Stashes laufen nach demselben Muster, über citizenid oder owner. Prüfe vor dem Zurückkopieren, ob der Spieler ein Auto verkauft hat oder ein Kennzeichen jetzt jemand anderem gehört, und lösche die Wegwerf-Datenbank, wenn du fertig bist.

Eine Wiederherstellung auf Zeilenebene spielt das ganze Inventar so zurück, wie es zum Zeitpunkt des Backups war. Alles, was der Spieler seitdem verdient hat, verschwindet. Sag ihm, auf welche Uhrzeit du zurückgegangen bist.

Erst die duplizierten Items finden

Wenn ein Dupe den Schaden verursacht hat, reicht es nicht, den Duper wiederherzustellen, denn die Kopien können schon verkauft oder verschenkt sein. Waffen und andere einzigartige Items tragen eine Seriennummer: metadata.serial in ox_inventory und info.serie in qb-inventory. Dieselbe Seriennummer an zwei Orten ist eine Kopie. Auf MySQL 8 oder MariaDB 10.6 und neuer listet diese Abfrage jede Seriennummer auf, die bei QBCore-Spielern mit ox_inventory mehr als einmal vorkommt:

duplicate serials
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;

Für ESX tauschst du players und citizenid gegen users und identifier, für qb-inventory nimmst du $.info.serie als Pfad. Auch Stashes, Kofferräume und Handschuhfächer enthalten Items, also lass dieselbe Abfrage über ox_inventory.data und die Fahrzeugtabelle laufen, bevor du entscheidest, wer gedupt hat.

Einen Spieler mit FiveDock wiederherstellen

FiveDock übernimmt die Arbeit mit der Wegwerf-Datenbank. Auf Metro wählst du im Panel ein Backup und einen Spieler, und FiveDock stellt nur die Zeilen wieder her, die an die Identifier dieses Spielers gebunden sind, quer durch die Tabellen des Frameworks: den Charakter mit Geld und Inventar, Autos, Lizenzen, Skins, Outfits, Apartments und ox_inventory-Stashes. Bevor sich etwas ändert, zeigt es, wie viele Zeilen die Wiederherstellung anfasst.

Die Warnungen vor duplizierten Items auf Metro achten auf dieselbe Seriennummer in zwei Inventaren oder einen Stack, der ohne erkennbaren Grund wächst. Jeder Fund merkt sich, wer das Item hatte, und ein Backup von genau diesem Zeitpunkt, der Wiederherstellungspunkt ist also schon da, wenn du hinschaust. Geld-Warnungen posten in jedem Plan nach Discord, wenn eine Überweisung eine Schwelle überschreitet oder ein Spieler zu schnell Geld bekommt.

Die Backups selbst gehören zu jedem Plan: täglich auf Free und City, stündlich auf Metro, auf deiner Maschine verschlüsselt mit einem Schlüssel, den FiveDock nie sieht. Auf Free und City stellt eine Wiederherstellung den ganzen Server zurück, eine einzelne Tabelle oder ein einzelner Spieler gibt es nur auf Metro.

Häufige Fragen

Kann man in FiveM einen Spieler ohne kompletten Rollback wiederherstellen?

Ja. Lade ein Backup von vor dem Problem in eine separate Datenbank und kopiere die Zeilen dieses Charakters zurück: players auf QBCore oder users auf ESX, dazu seine Autos und Stashes. FiveDock Metro macht das aus dem Panel, einen Spieler nach dem anderen, und zeigt vorher, wie viele Zeilen sich ändern.

Wie finde ich gedupte Items auf meinem FiveM-Server?

Such nach einzigartigen Seriennummern, die mehrfach vorkommen. ox_inventory speichert die Seriennummer einer Waffe in metadata.serial, daher listet eine JSON_TABLE-Abfrage über die Inventar-Spalte jede Seriennummer mit mehr als einer Kopie auf. Die Warnungen vor duplizierten Items in FiveDock führen diese Prüfung für dich aus und posten nach Discord.

Entfernt die Wiederherstellung eines Spielers Items, die er nach dem Backup verdient hat?

Ja. Eine Wiederherstellung auf Zeilenebene spielt die ganze Spalte so zurück, wie sie zum Zeitpunkt des Backups war. Nimm das neueste Backup von vor dem Problem und sag dem Spieler, auf welche Uhrzeit du zurückgegangen bist.

Was ist, wenn der Spieler während der Wiederherstellung online ist?

Sein Framework speichert beim nächsten Save oder beim Disconnect, was es im Speicher hält, und das überschreibt die Wiederherstellung. Kicke ihn oder warte, bis er offline ist.

Alle Artikel