{"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":"rastreador-de-tiempo-de-juego","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/es\/playtime-tracker\/","title":{"rendered":"tdPlaytime para FiveM: importaci\u00f3n, base y programaci\u00f3n"},"content":{"rendered":"<p>tdPlaytime tiene dos componentes: una herramienta que copia el tiempo de juego de txAdmin a MySQL y el recurso opcional td-playtime, que lo lee con \/playtime. El importador no es un recurso FiveM de actualizaci\u00f3n continua. El creador proporciona un ejecutable Windows y c\u00f3digo JavaScript.<\/p>\n<p><a href=\"https:\/\/github.com\/TradieKM\/tdPlaytime\">C\u00f3digo del creador e instrucciones<\/a><\/p>\n<h2>Prepara una importaci\u00f3n repetible<\/h2>\n<p>Empieza con una copia de la base. Configura dataFilePath y la base en config.json; mant\u00e9n privadas las credenciales y los registros con identificadores de jugadores. El c\u00f3digo necesita Node.js y la dependencia mysql declarada; el ejecutable est\u00e1 dirigido a Windows 10\/11. Comprueba que el JSON elegido contiene un array players con license y playTime.<\/p>\n<p>Cada importaci\u00f3n escribe player_playtimes por license y sustituye el tiempo almacenado. No suma una nueva duraci\u00f3n de sesi\u00f3n. Verifica que la fuente est\u00e9 actualizada antes de sobrescribir valores existentes y compara varios jugadores con el archivo original despu\u00e9s de ejecutar.<\/p>\n<h2>Gestiona archivos vac\u00edos y fallos antes de programar<\/h2>\n<p>El c\u00f3digo inspeccionado cierra la conexi\u00f3n MySQL solo cuando todas las actualizaciones de jugadores tienen \u00e9xito. Un array players vac\u00edo, un error de lectura o JSON, o una escritura fallida no sigue ese cierre normal. Comprueba c\u00f3mo termina el proceso y a\u00f1ade gesti\u00f3n de errores y un tiempo l\u00edmite antes de programar ejecuciones sin supervisi\u00f3n. Un proceso todav\u00eda activo no demuestra que siga sincronizando.<\/p>\n<h2>Configura y prueba el lector opcional<\/h2>\n<p>El manifiesto td-playtime carga @mysql-async\/lib\/MySQL.lua. Inicia primero una instalaci\u00f3n compatible de mysql-async. El lector busca la licencia del jugador e interpreta el valor almacenado como minutos; sin integraci\u00f3n de notificaciones, usa el chat. Prueba \/playtime despu\u00e9s de importar y reconectar. Guarda la tabla antes de cambiar el importador o su fuente.<\/p>","protected":false},"excerpt":{"rendered":"<p>Separa la importaci\u00f3n de txAdmin de la lectura en el juego, revisa mysql-async y evita valores enga\u00f1osos tras importaciones antiguas o fallidas.<\/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\/es\/wp-json\/wp\/v2\/posts\/161536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/comments?post=161536"}],"version-history":[{"count":6,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/posts\/161536\/revisions"}],"predecessor-version":[{"id":217344,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/posts\/161536\/revisions\/217344"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/media\/161537"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/media?parent=161536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/categories?post=161536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/tags?post=161536"}],"curies":[{"name":"gracias","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}