Tu script de tatuajes
Cada script de tatuajes lista los tatuajes a su manera. El pack trae una lista preparada para cada uno, y la instala por ti.
Cómo se instalan las listas
Escribe esto en la consola del servidor (no en el juego):
zaiders_tattoos_install- Solo toca el script de tatuajes que tu servidor tiene prendido. Uno apagado nunca se toca.
- Copia la lista en ese script, o agrega los diseños a la lista propia del script. Instalar dos veces no agrega nada dos veces.
- Algunos scripts también necesitan una línea en uno de sus archivos.
Config.EditOtherScripts = truedeja que el instalador la agregue; si no, la consola te dice la línea exacta y dónde va. Cada archivo de Lua que cambia se compila, sin ejecutarlo, antes de guardarlo. Si la línea no se puede poner con seguridad, la consola la muestra. - Cada archivo que cambia guarda su original como
<archivo>.zaiders_backup(hecho la primera vez y nunca pisado), y el último que reemplazó como<archivo>.zaiders_backup_last. - Al terminar, la consola dice qué sigue. Si cambió el
fxmanifest.luade un script, escriberefresh, despuésensure <script>(o reinicia el servidor), y los jugadores se reconectan. Si cambiaron otros archivos, reinicia ese script o el servidor. - Una lista que instaló se actualiza cuando una versión nueva del pack trae otra más nueva. Una lista que cambiaste (le sacaste diseños, por ejemplo) queda como está:
zaiders_tattoos_install forcela reescribe. - Los archivos tienen que ser JSON puro. Uno con comentarios, una coma de más al final o un BOM se avisa y nunca se pisa.
zaiders_tattoos_install <script> <carpeta>cuando un script conocido corre con otro nombre de carpeta (por ejemplozaiders_tattoos_install illenium-appearance illenium-appearance-main). Queda recordado.
FXServer deja que un recurso escriba en otro solo con una línea en el server.cfg, antes de ensure zaiders_tattoos, y solo la lee al arrancar el servidor (reinícialo después de agregarla). Una línea por cada script que uses, con el nombre de su carpeta:
add_filesystem_permission zaiders_tattoos write rcore_tattoos
add_filesystem_permission zaiders_tattoos write illenium-appearance
add_filesystem_permission zaiders_tattoos write fivem-appearance
add_filesystem_permission zaiders_tattoos write vMenu
add_filesystem_permission zaiders_tattoos write qb-tattooshop
add_filesystem_permission zaiders_tattoos write esx_tattooshop
add_filesystem_permission zaiders_tattoos write bl_appearance
add_filesystem_permission zaiders_tattoos write dx_clothing(vMenu.Enhanced, xnTattoos... si el tuyo se llama así; dx_clothing solo con Config.SetShopZonePrices.) Sin la línea no se rompe nada: la consola la muestra, y el archivo preparado queda en zaiders_tattoos/install/ para que lo copies a mano. Una actualización que FXServer rechazó queda pendiente y se vuelve a intentar en cada arranque, hasta que la línea esté.
Config.AutoInstall = true hace todo esto solo cuando arranca el servidor, en los scripts ya prendidos: vale desde el próximo reinicio. Las listas vienen en inglés y en español: Config.ListsLanguage elige cuál (inglés de fábrica).
Por script
| Script | Qué hacer |
|---|---|
| ZAIDERS Appearance | Nada, mientras su tienda de tatuajes esté prendida. Su tienda de tatuajes encuentra el pack sola, con el nombre de cada diseño (en el Config.Language del pack) y ZAIDERS como pack, y De packs muestra solo los addon. Las fotos de las tarjetas: en el panel, Tatuajes → Imágenes → Hacer las que faltan, y después ensure zaiders_photos; mientras tanto cada tarjeta muestra la textura del diseño. Ver Fotos del catálogo. Su sincronización les muestra a los demás los tatuajes de cada jugador, con las capas más oscuras. Su tienda de tatuajes se apaga sola con Config.Tattoos.enabled = false, o mientras corre uno de sus Config.Tattoos.owners (de fábrica rcore_tattoos, qb-tattooshop, esx_tattooshop, xnTattoos, illenium-appearance, fivem-appearance y bl_appearance). Entonces la consola lo avisa, por ejemplo running, but its tattoo shop is off while rcore_tattoos runs: install this pack's list there (con setr zaiders_tattoos_language es: prendido, pero su tienda de tatuajes se apaga mientras corre rcore_tattoos: instala la lista de este pack ahi): instala la lista en ese script. Su sincronización sigue mostrando los tatuajes de todos. Ver Tienda de tatuajes. |
| dx_clothing | Nada: lee la tienda de tatuajes del propio juego, que el pack trae. No agregues los diseños también a su config/addon_tattoos.js, o cada uno aparecería dos veces. Cobra por zona; con Config.SetShopZonePrices = true el instalador pone Config.Price en cada zona (en sus config/languages/<idioma>.json; necesita add_filesystem_permission zaiders_tattoos write dx_clothing). |
| rcore_tattoos | El instalador copia zaiders_tattoos.json en su carpeta de listas (assets/tattooLists/, salvo que su Config.TattooListsPath diga otra). Después "zaiders_tattoos.json", va dentro de Config.TattooLists en rcore_tattoos/config.lua. |
| illenium-appearance | El instalador copia shared/zaiders_tattoos.lua. Después 'shared/zaiders_tattoos.lua', va en su fxmanifest.lua, en shared_scripts, después de 'shared/tattoos.lua'. Cada diseño cuesta Config.Price cuando su Config.ChargePerTattoo está prendido. |
| fivem-appearance | El instalador agrega los diseños a su tattoos.json, o a files/tattoos.json en las versiones que la tienen ahí. Las versiones sin ese archivo no tienen tatuajes addon. |
| vMenu 3.8.8 o más nuevo, y vMenu Enhanced | El instalador agrega los diseños a config/tattoos.json, en el formato del vMenu que tengas (lo saca del propio archivo, porque vMenu Enhanced muchas veces se instala como vMenu). vMenu lo lee en el juego de cada jugador, así que los jugadores se reconectan para verlos. Las versiones más viejas de vMenu no tienen lista para tatuajes addon. |
| esx_tattooshop | El instalador copia zaiders_tattoos.lua. Después 'zaiders_tattoos.lua', va en su fxmanifest.lua (__resource.lua en las versiones viejas), en client_scripts, justo después de 'client/tattooList.lua'. No separa los tatuajes por sexo: cada diseño aparece para el hombre y para la mujer, y cada personaje muestra solo el suyo. La lista agrega una categoría ZAIDERS Tattoos. |
| qb-tattooshop, xnTattoos | El instalador agrega los diseños a su AllTattoos.json. Muestran y cobran el precio de la lista dividido por 20, así que la lista lleva Config.Price × 20. Ahí un precio de 0 se cobra 100: para casi gratis, usa 1. Algunas versiones de qb-tattooshop comparan el modelo del ped con un texto (== 'mp_m_freemode_01'), así que a los hombres les salen los tatuajes de mujer: usa comillas invertidas (== `mp_m_freemode_01`), o xnTattoos. |
| bl_appearance | El bloque de integrations/<idioma>/bl_appearance/zaiders_tattoos.lua va dentro de tattoosList en bl_appearance/data/tattoos.lua. El instalador lo pega con Config.EditOtherScripts = true. Este script muestra cada diseño por el nombre de su preset. |
esx_tattooshop guarda los tatuajes por su lugar en la lista
No reordenes la lista ni le saques diseños después: los tatuajes guardados apuntarían a otros diseños. Cuando los jugadores ya tienen estos diseños, nunca saques la lista ni su línea del manifest: esx_tattooshop no les pondría ninguno de sus tatuajes. Las versiones nuevas del pack solo agregan diseños al final.
Cualquier otro script
No probamos otros scripts de tatuajes, tampoco los pagos. Si el tuyo lee la tienda de tatuajes del propio juego, los diseños ya están, por sexo, con sus nombres.
Si tiene su propia lista, integrations/<idioma>/generic/zaiders_tattoos.json tiene cada diseño con su nombre, su etiqueta (el nombre que el pack le da al juego), su zona, su colección, el preset del hombre, el de la mujer y un precio. La mayoría de los scripts de tatuajes piden justo esos campos: cópialos a su formato.
{
"name": "ZAIDERS_LA001",
"label": "Brazo izquierdo 001",
"zone": "ZONE_LEFT_ARM",
"collection": "zaiders_overlays",
"hashMale": "zaiders_left_arm_001_M",
"hashFemale": "zaiders_left_arm_001_F",
"price": 200
}Un diseño de un solo sexo tiene vacío el preset del otro.
Lo que ven los demás
Con cualquier script, el pack les muestra a los demás los tatuajes de cada jugador por su cuenta, también pasado el límite del juego. Ver Lo que ven los demás.
