por Avenida Team ESX · QBCore · vRP · Standalone · oxmysql

Tattoo shop

Todo el catálogo de tatuajes del juego, con un carrito y una silla en la que de verdad te sientas. 1615 diseños en 26 colecciones DLC, con vista previa en directo en tu personaje a medida que los vas añadiendo, y un solo pago al final. Borrado láser incluido, y un tatuador que entra y hace el trabajo.

Entrega Instantánea
Actualizaciones Gratis de por vida
Soporte Discord los 7 días
01 · FUNCIONALIDADES

Lo que hace

02 · SPECS

Especificaciones
técnicas

Framework Detección auto QBCore · ESX · vRP · Standalone · Custom
Dependencias oxmysql ox_lib · ox_target · ox_inventory compatibles
Catálogo 1615 tatuajes 26 colecciones DLC · 368 correcciones de zona
Idiomas en juego 15 incluidos ar · cs · de · en · es · fr · id · it · nl · pl · pt-br · ro · ru · th · tr
Rendimiento 0.00ms en reposo No corre nada mientras no hay nadie en el estudio
03 · INCLUIDO

Todo lo que
recibes

  • Quince archivos de idioma, ya rellenados

    Tus jugadores leen el script en su idioma desde el primer arranque, y los archivos están fuera del escrow, así que puedes corregir cualquier línea en producción. Nota honesta: están traducidos y revisados por nosotros, pero no los ha corregido un hablante nativo de cada uno de los quince. Dinos qué suena mal en el tuyo y lo arreglamos.

  • Siete bridges, un archivo cada uno

    Framework, notificaciones, interacción, ropa, inventario, decoraciones y compat. Cada archivo documenta sus targets, qué detecta y qué te cuesta cada uno. La detección sondea el export real en vez del estado del recurso, así que un export renombrado se se degrada en silencio en lugar de reventar al arrancar.

  • Toda la economía del tatuaje queda abierta

    Tarifa única, tarifas por zona, multiplicadores de colección, precio del láser, los siete estudios, la cámara de escena y las 368 correcciones de zona. `config/*.lua`, `locales/*.lua` y `bridges/*.lua` están fuera del escrow y son editables en producción.

  • Un informe de instalación para pegar en soporte

    `/avenida_tattoo_check` imprime qué bridge se eligió para cada categoría, si las tablas y columnas existen, y qué build del juego trae realmente tu servidor. Responde a la mayoría de las dudas de integración antes de que tengas que preguntarlas.

04 · DOCUMENTACIÓN

Guía de integración

01

Instalación

  1. Coloca el recurso

    Descarga el script desde tu cuenta Tebex, copia la carpeta avenida_tattoo/ en tu directorio de recursos y añade ensure avenida_tattoo a la config del servidor, después de ensure oxmysql.

  2. Ejecuta el SQL

    Ejecuta la sección [A] de INSTALL.sql en tu base de datos. La sección [B] es condicional, la cabecera del archivo dice cuándo la necesitas.

  3. Fija tus precios

    Abre config/tattoo.lua. La tarifa única, los multiplicadores por colección y el precio del láser son los tres números que conviene decidir antes de abrir el estudio. El idioma y los bridges están en config/config.lua.

  4. Verifica las integraciones

    Pon Config.Debug = true, reinicia y lee la consola: una línea por categoría de bridge nombra el target elegido. Ponlo de nuevo en false cuando las líneas coincidan con tu servidor, porque los comandos de diagnóstico que desbloquea provocan un tirón.

  5. Date permisos de admin

    Añade add_ace group.admin avenida_tattoo.admin allow a la config del servidor y luego lanza /avenida_tattoo_check en juego para el informe completo.

02

Inicio rápido

Poner precio a la tinta

Una tarifa única cubre todo el catálogo, y los multiplicadores hacen baratas las colecciones viejas y caras las raras, sin ponerle precio a 1615 diseños a mano. Todo se recalcula en el servidor al pagar.

lua
-- config/tattoo.lua
Config.Tattoo.Prices = {
    flat  = 1000,   -- every tattoo, unless PricePerZone is on
    hair  = 500,
    reset = 3000,   -- laser removal, per tattoo removed
}

Config.Tattoo.PricePerZone = false

Config.Tattoo.CollectionMultipliers = {
    multiplayer_overlays = 0.80,   -- base game, cheaper
    mpHipster_overlays   = 0.85,
    mpBeach_overlays     = 0.85,
    -- anything not listed stays at 1.0
}
03

Referencia de la API

Exports públicos agrupados por dominio. Cada fila muestra la firma de la llamada y qué hace, no cómo lo hace.

Client

  • GetHairbase
    exports['avenida_tattoo']:GetHairbase() --> { c = collection, t = nameHash } | nil

    La hair base que lleva el ped. Este recurso no es su dueño, pero tiene que devolverla tras cada redibujado, y cualquier recurso tuyo que borre decoraciones debe hacer lo mismo.

  • GetTattoos
    exports['avenida_tattoo']:GetTattoos() --> { { c, t }, ... }

    La lista completa de tatuajes que lleva, en pares de colección y hash de nombre. Es la copia que manda: el láser borra de ahí y una compra añade ahí, así que léela en vez de cachear la tuya.

  • GetSkinData
    exports['avenida_tattoo']:GetSkinData()

    El personaje guardado, con las correcciones de zona que colocan la tinta correctamente en el torso, los brazos y las piernas. Útil cuando tu script necesita saber sobre qué cuerpo dibuja.

  • ApplySkin
    exports['avenida_tattoo']:ApplySkin(data, ped)

    Aplica una apariencia a un ped, tatuajes incluidos. La ranura de decoraciones se reconstruye de una sola pasada, lo que evita el parpadeo que aparece al aplicar la tinta pieza a pieza.

  • ApplyClothing
    exports['avenida_tattoo']:ApplyClothing(data, ped, temporary)

    Viste a un ped sin tocar la tinta. El tercer argumento mantiene el cambio fuera de la base de datos, que es lo que quieres para una escena que acaba cuando el jugador se va.

04

Recetas

Ejemplos para copiar y pegar en los casos más habituales. Los metes en tu recurso, ajustas los valores y a producción.

Con `PricePerZone` activado, el servidor cobra según la zona de decoración GTA de cada diseño. Ojo a la contrapartida documentada en la config: solo se venden los tatuajes que caen en una zona declarada, así que todo lo que no esté corregido desaparece del estudio en vez de venderse al precio equivocado.

lua
-- config/tattoo.lua
Config.Tattoo.PricePerZone = true

Config.Tattoo.Prices = {
    [0] = 1250, -- torso / back
    [1] = 1000, -- head
    [2] = 600,  -- left arm
    [3] = 600,  -- right arm
    [4] = 750,  -- left leg
    [5] = 750,  -- right leg
    [6] = 750,  -- unknown
    reset = 3000,
}
05

Preguntas frecuentes

  • Dos razones, las dos deliberadas. Las colecciones DLC recientes se fusionan según el build del juego, así que un diseño que tu cliente no puede renderizar nunca aparece en la lista, en vez de aparecer y salir roto. Y con `PricePerZone` activado solo se venden los tatuajes que caen en una zona declarada, cosa que la config dice explícitamente: la mayor parte del catálogo desaparece hasta que rellenes los overrides. Con `PricePerZone` apagado, el valor por defecto, todo el catálogo está a la venta.
OPINIONES

Lo que dicen los compradores

5.0 15 opiniones verificadas

  • ĸιrowdev 🪐

    Le script est est excellent rien à dire

    Ver en Discord ↗
  • Blockerman

    Very nice support.

    Ver en Discord ↗
  • Shuntzu_Gamer

    Very nice support.

    Ver en Discord ↗
  • Woufy

    Very nice support, fast and pro !

    Ver en Discord ↗
  • - ᴇʟᴄxʏ';

    I had an issue where i lost access to my script and these guys couldn't help me at first but they went out there way to fix the issue and contacted me, amazing script

    Ver en Discord ↗
  • ReCore OoT Randomizer

    I bought the tattoo shop first, thanks to the very patient and efficient support I was able to make it work, I bought the barber shop afterwards and I am very happy with both scripts, it works like a charm! Congratulations again to the support !

    Ver en Discord ↗
Carrito
Spirit RP
Discord