{"id":216602,"date":"2025-07-04T08:15:03","date_gmt":"2025-07-04T06:15:03","guid":{"rendered":"http:\/\/fivemx.com\/tj-utilities\/"},"modified":"2025-07-04T08:15:03","modified_gmt":"2025-07-04T06:15:03","slug":"utilidades-tj","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/es\/tj-utilities\/","title":{"rendered":"TJ Utilities \u2013 Mods gratuitos para FiveM"},"content":{"rendered":"<p>TJ Utils is a standalone client interface resource by TJ Scripts. Version 1.0.0 provides notifications, a progress bar and TextUI through exports and client events. Installing it does not automatically replace framework notifications or add gameplay interactions; other scripts must call its API.<\/p>\n<h2>Resource setup and API<\/h2>\n<p>Extract the repository into tj_utils with fxmanifest.lua, client and web at the resource root. Keep web\/sounds\/notification.mp3 with the interface files. Add ensure tj_utils before scripts that call its exports. The manifest declares no ESX, QBCore or ox_lib dependency; its HTML does load external Font Awesome and Cascadia Code stylesheets.<\/p>\n<p>Client exports are ShowNotification, ShowProgress, HideProgress, ShowTextUI and HideTextUI. ShowNotification accepts a table with type, title, description, duration and position; the documented types are info, success, error and warning. Server scripts send the corresponding client events, such as tj_utils:notify, to a chosen player rather than calling a server export.<\/p>\n<h2>Progress completion is only a timer<\/h2>\n<p>ShowProgress accepts a label string or a settings table and an optional callback. Its Lua defaults are 5000 milliseconds and bottom position. After that delay it calls the callback with true. HideProgress only hides the browser display: it does not cancel that Lua timer or report cancellation. Do not award an item or payment solely because this callback fired.<\/p>\n<p>The interface has one shared progress container. Starting another bar replaces its visual timer while earlier Lua callbacks can still run. Coordinate ownership in the calling scripts and test overlap, early hiding and resource stops. Validate duration values before passing them to the library.<\/p>\n<h2>Text, notifications and integration tests<\/h2>\n<p>ShowTextUI accepts a string or a table and remains visible until HideTextUI is called. Showing a prompt does not bind the advertised action key. Notifications share one wrapper, so a new position setting can move existing notifications. Test the positions and stacking you actually use.<\/p>\n<p>Notification title and description are inserted through innerHTML without escaping; progress labels and TextUI text use textContent. Keep notification markup trusted or escape untrusted text before passing it in. The bundled demonstration commands include \/info, \/success, \/error, \/warning, \/progress, \/textui and \/hidetextui; check for command conflicts.<\/p>\n<h2>Existing creator preview<\/h2>\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"[FREE] [STANDALONE] TJ Utils - FiveM\" width=\"1170\" height=\"658\" src=\"https:\/\/www.youtube.com\/embed\/VabyZLvBsV4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen referrerpolicy=\"strict-origin-when-cross-origin\"><\/iframe><\/div>\n<\/div><\/figure>\n\n<p>Source checked on 10 September 2026 at revision 23b4796896d01a73a61c570d44a6a564d88ad78a. The manifest, complete client Lua and browser JavaScript were inspected. No FiveM gameplay, performance benchmark or framework integration was tested.<\/p>\n<p><a href=\"https:\/\/github.com\/tjscriptss\/tj_utils\/tree\/23b4796896d01a73a61c570d44a6a564d88ad78a\">Review the TJ Utils source<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Integra notificaciones, progreso y TextUI de TJ Utils. Revisa exports, callbacks, tratamiento del texto y l\u00edmites de la interfaz antes de usarla.<\/p>","protected":false},"author":0,"featured_media":176450,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2297,2298],"tags":[],"class_list":["post-216602","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-free","category-scripts"],"_links":{"self":[{"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/posts\/216602","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"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/comments?post=216602"}],"version-history":[{"count":0,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/posts\/216602\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/media\/176450"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/media?parent=216602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/categories?post=216602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/tags?post=216602"}],"curies":[{"name":"gracias","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}