{"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-tempo-de-jogo","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/pt\/playtime-tracker\/","title":{"rendered":"tdPlaytime para FiveM: importa\u00e7\u00e3o, banco e agendamento"},"content":{"rendered":"<p>tdPlaytime tem dois componentes: uma ferramenta que copia o tempo de jogo do txAdmin para MySQL e o recurso opcional td-playtime, que o l\u00ea com \/playtime. O importador n\u00e3o \u00e9 um recurso FiveM de atualiza\u00e7\u00e3o cont\u00ednua. O criador fornece um execut\u00e1vel Windows e c\u00f3digo JavaScript.<\/p>\n<p><a href=\"https:\/\/github.com\/TradieKM\/tdPlaytime\">C\u00f3digo do criador e instru\u00e7\u00f5es<\/a><\/p>\n<h2>Prepare uma importa\u00e7\u00e3o repet\u00edvel<\/h2>\n<p>Comece com uma c\u00f3pia do banco. Configure dataFilePath e o banco em config.json; mantenha credenciais e logs com identificadores de jogadores privados. O c\u00f3digo exige Node.js e a depend\u00eancia mysql declarada; o execut\u00e1vel \u00e9 destinado ao Windows 10\/11. Confirme que o JSON escolhido tem um array players com license e playTime.<\/p>\n<p>Cada importa\u00e7\u00e3o grava player_playtimes por license e substitui o tempo armazenado. Ela n\u00e3o soma uma nova dura\u00e7\u00e3o de sess\u00e3o. Confira se a fonte est\u00e1 atualizada antes de sobrescrever valores existentes e compare v\u00e1rios jogadores com o arquivo original ap\u00f3s a execu\u00e7\u00e3o.<\/p>\n<h2>Trate arquivos vazios e falhas antes de agendar<\/h2>\n<p>O c\u00f3digo inspecionado fecha a conex\u00e3o MySQL apenas ap\u00f3s todas as atualiza\u00e7\u00f5es de jogadores terem sucesso. Um array players vazio, erro de leitura ou JSON, ou falha de grava\u00e7\u00e3o n\u00e3o segue esse fechamento normal. Verifique como o processo termina e adicione tratamento de erros e tempo limite antes de agendar execu\u00e7\u00f5es sem supervis\u00e3o. Um processo ainda ativo n\u00e3o comprova sincroniza\u00e7\u00e3o em andamento.<\/p>\n<h2>Configure e teste o leitor opcional<\/h2>\n<p>O manifesto td-playtime carrega @mysql-async\/lib\/MySQL.lua. Inicie primeiro uma instala\u00e7\u00e3o compat\u00edvel do mysql-async. O leitor consulta a licen\u00e7a do jogador e interpreta o valor armazenado como minutos; sem integra\u00e7\u00e3o de notifica\u00e7\u00f5es, usa o chat. Teste \/playtime ap\u00f3s importar e reconectar. Fa\u00e7a backup da tabela antes de alterar o importador ou sua fonte.<\/p>","protected":false},"excerpt":{"rendered":"<p>Separe a importa\u00e7\u00e3o do txAdmin da leitura no jogo, confira mysql-async e evite valores enganosos ap\u00f3s importa\u00e7\u00f5es antigas ou com falha.<\/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\/pt\/wp-json\/wp\/v2\/posts\/161536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/comments?post=161536"}],"version-history":[{"count":6,"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/posts\/161536\/revisions"}],"predecessor-version":[{"id":217344,"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/posts\/161536\/revisions\/217344"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/media\/161537"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/media?parent=161536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/categories?post=161536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/pt\/wp-json\/wp\/v2\/tags?post=161536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}