{"id":180821,"date":"2025-03-03T15:20:02","date_gmt":"2025-03-03T14:20:02","guid":{"rendered":"https:\/\/fivemx.com\/?p=180821"},"modified":"2026-08-20T22:16:54","modified_gmt":"2026-08-20T20:16:54","slug":"script-de-referencia-simple","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/es\/simple-referral-script\/","title":{"rendered":"Script de Referido Simple para FiveM"},"content":{"rendered":"<p>nkt-referral 1.0.0 de nikartik asigna c\u00f3digos de referido y ofrece promos separados mediante un men\u00fa ox_lib. Usa identificadores de licencia sin puente de framework. Las recompensas incluidas usan ox_inventory; el men\u00fa por s\u00ed solo no acredita su recepci\u00f3n.<\/p>\n<h2>Instalar dependencias y configurar recompensas<\/h2>\n<p>Conserva nkt-referral e inicia ox_lib y oxmysql antes de ensure nkt-referral. Inicia tambi\u00e9n ox_inventory si mantienes las funciones incluidas o sustit\u00fayelas por tu integraci\u00f3n comprobada del servidor. El README solo cita Ox Lib, pero el manifiesto importa oxmysql y rewards.lua llama al inventario.<\/p>\n<p>Copia la base antes del primer inicio: el recurso crea referrals con identifier como clave primaria, code y redeemed. El cliente obtiene su c\u00f3digo al iniciar y abre el men\u00fa con \/refercode. Configura server\/rewards.lua; conserva default y las claves propias en may\u00fasculas.<\/p>\n<p>La regla prevista es un referido de otro jugador por persona. Los promos registran uso por licencia en una lista JSON por c\u00f3digo, no un \u00fanico canje global. Borrar filas reinicia esas protecciones y puede permitir m\u00e1s recompensas; no es mantenimiento rutinario.<\/p>\n<h2>Corregir estado de canje y entrega<\/h2>\n<p>Existen controles de autorreferido y uso previo, pero dependen de PlayerCodes guardado al inicializar. Un canje correcto no actualiza esa bandera. El UPDATE no exige que siga sin canjearse; faltan transacci\u00f3n y espera del servidor. Reserva el uso de forma at\u00f3mica y sincroniza la cach\u00e9 antes de recompensar.<\/p>\n<p>El c\u00f3digo se normaliza dentro de la validaci\u00f3n, pero las recompensas reciben la entrada original. Usa el mismo c\u00f3digo can\u00f3nico durante todo el proceso. Un due\u00f1o desconectado devuelve false, aunque se llama igualmente a su funci\u00f3n de recompensa. Ponla en cola o s\u00e1ltala expresamente; no pases un jugador ausente al export del inventario.<\/p>\n<p>Los promos leen y reemplazan una lista JSON compartida sin transacci\u00f3n. Peticiones simult\u00e1neas pueden sobrescribir canjes. Valida tipos e inicializaci\u00f3n del jugador, garantiza c\u00f3digos\/canjes \u00fanicos y comprueba \u00e9xito del inventario. Prueba duplicados, concurrencia, due\u00f1os desconectados, may\u00fasculas\/min\u00fasculas, reconexiones e inventarios llenos.<\/p>\n<p>Revisado el 11 de septiembre de 2026 en la revisi\u00f3n 8c8fd7e76a851fd4a65a3e2330901fa950e76a3f. Se leyeron todos los Lua, manifiesto y README. No se ejecut\u00f3 ning\u00fan referido, promo, recompensa ni reinicio de base.<\/p>\n<p><a href=\"https:\/\/github.com\/NikartikTheBear\/nkt-referral\/tree\/8c8fd7e76a851fd4a65a3e2330901fa950e76a3f\">Leer nkt-referral en la revisi\u00f3n comprobada<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Configura nkt-referral con ox_lib, oxmysql y recompensas. Entiende promos por jugador, due\u00f1os desconectados y fallos en la protecci\u00f3n del canje.<\/p>","protected":false},"author":27669,"featured_media":181054,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2297,2298],"tags":[3001,2928,3000],"class_list":["post-180821","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\/180821","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\/27669"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/comments?post=180821"}],"version-history":[{"count":9,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/posts\/180821\/revisions"}],"predecessor-version":[{"id":217352,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/posts\/180821\/revisions\/217352"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/media\/181054"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/media?parent=180821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/categories?post=180821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/es\/wp-json\/wp\/v2\/tags?post=180821"}],"curies":[{"name":"gracias","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}