{"id":161536,"date":"2024-10-08T11:12:32","date_gmt":"2024-10-08T09:12:32","guid":{"rendered":"https:\/\/hifivem.com\/?p=161536"},"modified":"2026-08-20T22:16:54","modified_gmt":"2026-08-20T20:16:54","slug":"spielzeit-tracker","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/de\/playtime-tracker\/","title":{"rendered":"tdPlaytime f\u00fcr FiveM: Import, Datenbank und Zeitplanung"},"content":{"rendered":"<p>tdPlaytime besteht aus zwei Komponenten: einem Werkzeug, das txAdmin-Spielzeit nach MySQL kopiert, und der optionalen Ressource td-playtime, die sie mit \/playtime liest. Der Importer ist keine laufend aktualisierende FiveM-Ressource. Der Entwickler liefert eine Windows-Anwendung und JavaScript-Quellcode.<\/p>\n<p><a href=\"https:\/\/github.com\/TradieKM\/tdPlaytime\">Entwicklercode und Einrichtungsanleitung<\/a><\/p>\n<h2>Einen wiederholbaren Import vorbereiten<\/h2>\n<p>Beginne mit einer Datenbankkopie. Konfiguriere dataFilePath und die Datenbankangaben in config.json und halte Zugangsdaten sowie Logs mit Spielerkennungen privat. Der Quellcode ben\u00f6tigt Node.js und die deklarierte mysql-Abh\u00e4ngigkeit; die gepackte Anwendung richtet sich an Windows 10\/11. Pr\u00fcfe, ob das gew\u00e4hlte JSON ein players-Array mit license und playTime enth\u00e4lt.<\/p>\n<p>Jeder Import schreibt player_playtimes nach license und ersetzt den gespeicherten Spielzeitwert. Er addiert keine neue Sitzungsdauer. Pr\u00fcfe die Aktualit\u00e4t der Quelldatei vor dem \u00dcberschreiben vorhandener Werte und vergleiche nach einem Lauf mehrere Spieler mit der Quelle.<\/p>\n<h2>Leere Dateien und Fehler vor der Zeitplanung behandeln<\/h2>\n<p>Der gepr\u00fcfte Code schlie\u00dft die MySQL-Verbindung erst, wenn alle Spieleraktualisierungen erfolgreich waren. Ein leeres players-Array, Lese- oder JSON-Fehler sowie fehlgeschlagene Datenbankzugriffe erreichen diesen normalen Schlie\u00dfpfad nicht. Pr\u00fcfe das Beendigungsverhalten und erg\u00e4nze passende Fehlerbehandlung und ein Zeitlimit vor unbeaufsichtigten L\u00e4ufen. Ein weiterlaufender Prozess beweist keine laufende Synchronisierung.<\/p>\n<h2>Den optionalen Leser einrichten und testen<\/h2>\n<p>Das Manifest von td-playtime l\u00e4dt @mysql-async\/lib\/MySQL.lua. Starte zuerst eine kompatible mysql-async-Installation. Der Leser sucht nach der Spielerkennung und interpretiert den gespeicherten Wert als Minuten; ohne Benachrichtigungsintegration verwendet er den Chat. Teste \/playtime nach einem Import und erneuter Verbindung. Sichere die Tabelle vor \u00c4nderungen am Importer oder an seiner Quelldatei.<\/p>","protected":false},"excerpt":{"rendered":"<p>Trenne den txAdmin-Spielzeitimport vom Ingame-Leser, pr\u00fcfe mysql-async und verhindere irref\u00fchrende Werte aus alten oder fehlgeschlagenen Importen.<\/p>","protected":false},"author":1,"featured_media":161537,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2297,2298],"tags":[3001,2928,3000],"class_list":["post-161536","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-free","category-scripts","tag-fivem-script","tag-free","tag-free-script"],"_links":{"self":[{"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/posts\/161536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/comments?post=161536"}],"version-history":[{"count":6,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/posts\/161536\/revisions"}],"predecessor-version":[{"id":217344,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/posts\/161536\/revisions\/217344"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/media\/161537"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/media?parent=161536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/categories?post=161536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/tags?post=161536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}