El comportamiento está en shared/config.lua; las regiones, el botín, los precios, el equipo y los niveles están en los archivos de data/. Reinicia el recurso después de cualquier cambio.
Las coordenadas, el NPC, las regiones, los ítems y los precios que vienen en estos archivos son ejemplos. Cámbialos para adaptarlos a tu servidor.
General
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
debug | boolean | false | Imprime trazas en la consola. También se activa poniendo la convar cuxial_diving_debug a 1. |
account | string | 'bank' | Cuenta usada para los pagos del trabajo, las recompensas diarias y el mercado. |
job | string | string[] | 'all' | Quién puede hacer el trabajo. 'all' = todos. Un nombre de trabajo o una lista de nombres = solo esos trabajos. |
logs.convar | string | 'cuxial_diving_webhook' | Nombre de la convar que guarda el webhook de Discord. Con la convar vacía no se envía nada. |
admin.auditDays | number | 60 | Días que se conservan las filas de auditoría. Las más antiguas se borran una vez al día. Mínimo 1. |
Interfaz · ui
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
accent | string (hex) | configurable | Color de acento del panel. |
currency.symbol | string | '$' | Símbolo de moneda que muestra el panel. |
currency.locale | string | 'en-US' | Formato numérico de las cantidades, como etiqueta de idioma ('en-US', 'es-ES'...). |
NPC del trabajo · npc
El NPC abre el panel y el mercado.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
coords | vector4 | ejemplo | Posición y orientación del NPC. |
model | string | 'a_m_y_beach_01' | Modelo del ped. |
distance | number | 2.0 | Metros desde los que se ofrece la interacción. |
menuDistance | number | 6.0 | Metros a partir de los cuales el servidor rechaza abrir el panel. |
spawnDistance | number | 60.0 | Metros dentro de los cuales el ped existe para un jugador. |
blip.enabled | boolean | true | true muestra el blip del trabajo en el mapa. false lo oculta. |
blip.sprite, blip.color, blip.scale | number | 317, 3, 0.55 | Aspecto del blip. |
Interacción · target
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
distance | number | 3.0 | Metros a una pieza para interactuar con ella. |
showDistance | number | 35.0 | Metros dentro de los cuales se dibuja un marcador sobre cada pieza pendiente. 0 = sin marcador. |
marker.type | number | 2 | Tipo de marcador del juego. |
marker.scale | number | 0.5 | Tamaño del marcador. |
marker.height | number | 0.8 | Metros por encima del punto más alto de la pieza. |
marker.color | number[] | configurable | Color como { r, g, b, alfa }. |
marker.bob | boolean | true | true hace que el marcador suba y baje. |
marker.rotate | boolean | true | true hace que el marcador gire. |
icons | table | clases de Font Awesome | Icono de cada interacción: menu, coral, trash, open, loot, bag, raise. |
Blips · blips
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
boat | table | sprite 529, color 0, scale 0.8 | Blip del barco de trabajo. |
deliver | table | sprite 410, color 2, scale 0.9 | Blip del punto de entrega. |
area | table | color 77, alpha 90 | Círculo que marca el radio de cada zona de tareas. |
tasks | table | una entrada por tarea | Blip de cada tarea: coral, trash, suitcase, box, cada una con sprite, color y scale. |
siteDistance | number | 250.0 | Metros dentro de los cuales las piezas de una zona existen para un jugador. |
Tripulación · crew
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
maxPlayers | number | 4 | Tamaño máximo de la tripulación. |
inviteDistance | number | 8.0 | Metros entre el dueño y el jugador invitado. |
inviteSeconds | number | 60 | Segundos hasta que caduca una invitación. Mínimo 5. |
reconnectSeconds | number | 180 | Segundos que se guarda el puesto a quien se desconecta durante un trabajo. 0 = sale de la tripulación al momento. |
splitRewards | boolean | true | true deja al dueño repartir el dinero por porcentaje desde el panel. false oculta esa opción. La experiencia nunca se reparte así. |
Trabajo · run
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
cooldownHours | number | 0 | Horas que un jugador debe esperar entre trabajos, contadas desde el inicio del último. 0 = sin espera. |
soloHalf | boolean | true | true reduce a la mitad las tareas obligatorias (corales y basura) para una tripulación de uno. false mantiene la cantidad completa. |
spawnFreeRadius | number | 10.0 | Metros alrededor de un punto de salida que deben estar libres de vehículos para que el barco aparezca ahí. |
exclusiveRegions | boolean | false | false permite que varias tripulaciones trabajen en la misma región. true admite una tripulación por región. |
Fundido de pantalla · fade
Se usa cuando se lleva a un jugador al barco o de vuelta al NPC.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
outMs | number | 600 | Milisegundos del fundido a negro. |
holdMs | number | 1500 | Milisegundos que la pantalla se queda en negro. |
inMs | number | 800 | Milisegundos del fundido de vuelta. |
maxMs | number | 15000 | Tope de seguridad. La pantalla nunca se queda en negro más tiempo. |
Embarque · board
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
seat | boolean | true | true sienta a cada miembro en un asiento libre, con el dueño al timón. false los deja de pie en cubierta. |
deckOffset | vector3 | vec3(0.0, 0.0, 2.0) | Posición en cubierta, relativa al barco, cuando no hay asiento libre o seat = false. |
timeoutMs | number | 8000 | Espera máxima a que el barco exista para el jugador. Mínimo 1000. |
reconnectDistance | number | 100.0 | A quien se reconecta solo se le sube al barco si está más lejos que esto, en metros. |
returnToNpc | boolean | true | true devuelve al jugador al NPC cuando el trabajo acaba estando en el agua o en el barco. false lo deja donde está. |
npcOffset | number | 1.5 | Metros delante del NPC donde se coloca al jugador. |
Barco de trabajo · boat
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
model | string | 'tug' | Modelo del barco. |
plate | string | 'DIVE' | Prefijo de la matrícula, hasta cuatro caracteres. Lo completa el número de trabajo. |
fuel | number | 100.0 | Nivel de combustible que se pone al barco al aparecer. |
keys | boolean | true | true da las llaves a la tripulación a través de cuxial_garages cuando ese recurso está en marcha. false nunca da llaves. |
spawnTimeoutMs | number | 5000 | Espera máxima a que se cree el barco. |
Sitio de buceo · site
Las piezas de una tarea se colocan cuando un miembro de la tripulación se acerca a ella.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
spawnRadius | number | 150.0 | Metros al centro de una tarea a los que se generan sus piezas. |
maxDepthDelta | number | 40.0 | Metros por debajo del centro de la tarea en los que aún se aceptan piezas. |
surfaceZ | number | 0.0 | Altura de la superficie del mar. Las piezas tienen que quedar por debajo. |
minSeparation | number | 2.0 | Metros mínimos entre dos piezas. |
requestTimeoutMs | number | 20000 | Milisegundos que tiene un jugador para responder con las posiciones antes de pedírselas a otro. |
maxAttempts | number | 3 | Intentos fallidos por jugador antes de pasar la petición a otro miembro. |
watchMs | number | 1000 | Milisegundos entre comprobaciones de proximidad. Mínimo 250. |
Recogida · collect
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
maxDistance | number | 4.0 | Metros a la pieza que acepta el servidor. |
progressMs | table | 2800 cada una | Duración en milisegundos de cada acción: coral, trash, open, loot, bag. |
marginMs | number | 500 | Tolerancia en milisegundos cuando el servidor comprueba esas duraciones. |
beginTtlMs | number | 15000 | Milisegundos tras los que caduca una acción empezada. |
Maletas · suitcase
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
weapon | string | 'WEAPON_KNIFE' | Arma que el jugador debe llevar en la mano para abrir una maleta. 'WEAPON_UNARMED' = sin requisito. |
Cajas · boxes
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
liftbagItem | string | 'liftbag' | Ítem que se gasta al enganchar un globo a una caja. |
liftbagModel | string | 'cuxial_diving_liftbag' | Modelo del globo, de cuxial_diving_assets. |
liftbagFallback | string | 'prop_byard_float_02' | Modelo que se usa cuando el principal no está disponible. |
oxygenCost | number | 2 | Puntos de oxígeno que se gastan al enganchar un globo. |
surfaceZ | number | 0.5 | Altura a la que flota una caja subida. |
deckSlots | number | 48 | Cajas que caben en cubierta. |
Cuerda · tow
El jugador lanza la cuerda desde el barco, sentado o de pie en cubierta, con el ancla echada.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
maxDistance | number | 40.0 | Metros máximos entre el barco y la caja que flota. |
deckRadius | number | 7.0 | Metros al barco dentro de los cuales un jugador cuenta como en cubierta. |
speed | number | 5.0 | Velocidad de la caja mientras se arrastra, en metros por segundo. |
ropeType | number | 5 | Tipo de cuerda del juego. |
Entrega · deliver
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
radius | number | 15.0 | Metros al punto de entrega de la región a los que se puede entregar el barco. El jugador tiene que estar sentado en el barco. |
Pago · reward y loot
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
reward.mode | string | 'full' | Cómo se paga el dinero de la región. 'full' = la recompensa íntegra a cada miembro. 'split' = la recompensa dividida entre el tamaño de la tripulación. 'bonus' = la recompensa íntegra más bonusPerExtra por cada miembro extra. |
reward.bonusPerExtra | number | 0.25 | Parte extra por miembro adicional en modo 'bonus'. 0.25 = +25 %. |
loot.boxTo | string | 'tower' | Quién recibe el botín de una caja. 'tower' = el jugador que lanzó la cuerda. 'deliverer' = el jugador que entrega el barco, todo de una vez. 'rotate' = los miembros conectados, por turnos. |
El tamaño de la tripulación cuenta a todos los miembros, conectados o no. Los miembros desconectados en el momento de la entrega no reciben nada. La experiencia se paga siempre íntegra a cada miembro conectado.
Equipo · gear
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
consumeMask | boolean | false | false deja la máscara en el inventario después de usarla. true la quita. Las botellas se gastan siempre. |
requireRun | boolean | true | true permite el equipo solo durante un trabajo. false lo permite en cualquier momento. |
confirmMs | number | 10000 | Milisegundos que tiene el juego para terminar de poner el equipo. Pasado ese tiempo se devuelve el ítem. Mínimo 1000. |
Mercado · market
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
maxDistance | number | 15.0 | Metros al NPC dentro de los cuales se acepta comprar y vender. |
maxAmount | number | 100 | Unidades máximas por operación. |
sellValuables | boolean | true | false quita de la lista de venta las entradas marcadas valuable en data/market.lua. |
Ropa · outfit
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
mode | string | 'wetsuit' | Ropa que se lleva durante el trabajo, de data/outfits.lua. 'wetsuit' = traje de neopreno. 'classic' = el conjunto alternativo de ese archivo. 'none' = el jugador conserva su ropa. |
La ropa se pone al empezar el trabajo y la del jugador vuelve al terminar. Solo se aplica a los modelos freemode masculino y femenino.
Ranking, historial y perfil
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
leaderboard.size | number | 10 | Entradas de cada ranking. De 1 a 50. |
leaderboard.cacheSeconds | number | 60 | Segundos que se conserva el ranking antes de volver a leerlo de la base de datos. |
history.size | number | 10 | Trabajos que se muestran en el historial de un jugador. De 1 a 50. |
profile.flushMs | number | 30000 | Milisegundos entre guardados de experiencia y progreso diario. El dinero se paga siempre al momento. Mínimo 5000. |
Comandos · commands
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
gear.name | string | false | 'divinggear' | Nombre del comando que quita el equipo. false lo desactiva. |
reset.name | string | false | 'divingreset' | Nombre del comando que reinicia el trabajo. false lo desactiva. |
list.name, list.restricted | string | 'divinglist', 'group.admin' | Nombre del comando que lista las tripulaciones y grupo que puede usarlo. |
close.name, close.restricted | string | 'divingclose', 'group.admin' | Nombre del comando que cierra una tripulación y grupo que puede usarlo. |
fast.name, fast.restricted | string | 'divingfast', 'group.admin' | Nombre del comando de depuración y grupo que puede usarlo. |
En Comandos y permisos está lo que hace cada uno.
Teclas y ayudas en pantalla
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
keys.anchor | string | 'H' | Tecla por defecto para echar o levar el ancla. |
keys.interact | string | 'E' | Tecla por defecto para entregar el barco, lanzar la cuerda y cerrar el resumen final. |
keys.accept | string | 'Y' | Tecla por defecto para aceptar una invitación. |
keys.decline | string | 'N' | Tecla por defecto para rechazar una invitación. |
keys.tipHide | string | 'BACK' | Tecla por defecto para ocultar una pista. |
tips.seconds | number | 12 | Segundos que una pista de primera vez se queda en pantalla. Mínimo 3. |
finish.seconds | number | 15 | Segundos que el resumen final se queda en pantalla. Mínimo 3. |
Estas teclas son solo valores por defecto. Cada jugador puede cambiarlas en los ajustes de GTA, en las asignaciones de teclas de FiveM.
Regiones · data/regions.lua
Cada entrada es una región que la tripulación puede elegir.
| Campo | Tipo | Qué hace |
|---|---|---|
id | number | Número estable de la región. Se guarda en la base de datos: no lo reutilices ni lo renumeres. |
label | string | Clave de idioma con el nombre de la región. Tiene que empezar por region_. |
minLevel | number | Nivel mínimo que deben tener todos los miembros de la tripulación. |
reward | table | { money, xp } por miembro. reward.mode decide cómo se paga el dinero. |
tasks | table[] | Tareas de la región. Ver abajo. |
spawns | vector4[] | Puntos de salida del barco. Se usa el primero que esté libre. |
deliver | vector3 | Punto de entrega del barco. |
Campos de cada tarea:
| Campo | Tipo | Qué hace |
|---|---|---|
kind | string | 'coral', 'trash', 'suitcase' o 'box'. |
amount | number | Número de piezas. |
radius | number | Radio en metros de la zona donde aparecen las piezas. |
center | vector3 | Centro de la zona, en el fondo del mar. |
counted | boolean | true = hay que completar la tarea para entregar el barco. Sin él la tarea es opcional. |
{
id = 5,
label = 'region_reef',
minLevel = 15,
reward = { money = 5000, xp = 900 },
tasks = {
{ kind = 'coral', amount = 25, radius = 40.0, center = vec3(0.0, 0.0, -30.0), counted = true },
{ kind = 'trash', amount = 25, radius = 40.0, center = vec3(0.0, 0.0, -30.0), counted = true },
{ kind = 'suitcase', amount = 10, radius = 40.0, center = vec3(0.0, 0.0, -30.0) },
},
spawns = {
vec4(0.0, 0.0, 0.5, 90.0),
},
deliver = vec3(0.0, 0.0, 0.5),
},Sustituye las coordenadas por unas reales y añade la clave de label a locales/es.json y a los demás archivos de idioma que uses.
Botín · data/loot.lua
Tres tablas: coral (cada coral cortado), suitcase (cada maleta saqueada) y box (cada caja cargada en el barco).
| Campo | Tipo | Qué hace |
|---|---|---|
item | string | Nombre del ítem en tu inventario. |
chance | number | Peso relativo. Los pesos no tienen que sumar 100. |
min, max | number | Cantidad que se entrega, elegida al azar entre ambos. |
Mercado · data/market.lua
| Campo | Tipo | Qué hace |
|---|---|---|
buy | table[] | Lo que vende el NPC: { item, price }. |
sell | table[] | Lo que compra el NPC: { item, price, valuable }. Las entradas con valuable = true desaparecen con market.sellValuables = false. |
Los precios son por unidad, en la cuenta definida en account. El nombre y la imagen de cada ítem salen de tu inventario.
Equipo · data/gear.lua
| Campo | Tipo | Por defecto | Qué hace |
|---|---|---|---|
tubes | table[] | tres botellas | Botellas, en orden de nivel. Cada una tiene item (ítem usable), model (prop en la espalda) y seconds (segundos bajo el agua por punto de oxígeno). |
oxygen | number | 100 | Puntos de oxígeno de una botella llena. |
lowOxygen | number | 20 | Porcentaje al que aparece el aviso de oxígeno bajo. |
mask.item | string | 'scuba_gear' | Ítem de la máscara. |
mask.model | string | 'p_d_scuba_mask_s' | Prop de la máscara. |
tank, mask | table | Hueso, offset y rotation de cada prop sobre el jugador. | |
underwaterMs | number | 50000 | Tiempo que el jugador puede estar bajo el agua mientras queda oxígeno, tal como lo usa el juego. |
emptyMs | number | 10 | El mismo valor cuando el oxígeno se acaba. |
equipMs | number | 2000 | Milisegundos de la animación al ponerse el equipo. |
anim | table | Animación que se reproduce al ponerse el equipo. |
Con los valores por defecto, una botella llena dura 5:00, 8:20 y 11:40 minutos bajo el agua. El oxígeno solo se gasta mientras el jugador nada bajo el agua.
Tareas diarias · data/daily.lua
| Campo | Tipo | Por defecto | Qué hace |
|---|---|---|---|
resetHours | number | 24 | Horas tras las que las tareas diarias de un jugador empiezan de nuevo, contadas desde su último reinicio. |
tasks | table[] | tres tareas | Tareas diarias. Campos abajo. |
| Campo | Tipo | Qué hace |
|---|---|---|
id | string | Clave estable de la tarea. Se guarda en la base de datos. |
label | string | Clave de idioma con el nombre. |
kind | string | Qué cuenta. 'coral' = corales cortados. 'trash' = basura recogida. 'runs' = trabajos entregados. 'money' = dinero ganado con trabajos. 'team' = trabajos entregados con una tripulación de dos o más. |
goal | number | Cantidad a alcanzar. |
xp, money | number | Recompensa al completarla. |
Niveles · data/levels.lua
required es la lista de experiencia necesaria para pasar de cada nivel al siguiente. Los jugadores empiezan en el nivel 1 y el nivel máximo es el número de entradas más uno: 71 con el archivo por defecto.
Ropa y props · data/outfits.lua, data/pieces.lua
data/outfits.lua guarda la ropa de cada modo, para hombre y mujer: components como { componente, drawable, textura } y props como { prop, drawable, textura }, donde un drawable de -1 quita el prop. Ajusta los números a la ropa de tu servidor.
data/pieces.lua guarda los modelos de los corales, la basura, las maletas y las cajas, la animación de cada acción y la disposición de las cajas en cubierta. Cámbialo solo si quieres otros props.
Cambios habituales
Limitar el trabajo a ciertos trabajos
job = { 'lifeguard', 'diver' },Repartir la recompensa entre la tripulación
reward = { mode = 'split', bonusPerExtra = 0.25 },Abrir maletas sin cuchillo
suitcase = { weapon = 'WEAPON_UNARMED' },Dejar usar el equipo fuera de un trabajo
gear = {
consumeMask = false,
requireRun = false,
confirmMs = 10000,
},Añadir una espera entre trabajos
run = {
cooldownHours = 2,
soloHalf = true,
spawnFreeRadius = 10.0,
exclusiveRegions = false,
},