Todos los ajustes están en shared/config.lua. Las regiones, las tareas diarias, los niveles y la ropa están en data/. Reinicia el recurso después de cualquier cambio.
La posición del NPC, los puntos de salida de los camiones, el punto de entrega y las regiones que vienen en los archivos son ejemplos. Cámbialos para que encajen con tu mapa.
General
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
debug | boolean | false | Muestra trazas de depuración en la consola. También se activa con setr cuxial_gardener_debug 1. El comando fast solo funciona con la depuración activa. |
ui.accent | string | configurable | Color de acento del panel, en hexadecimal. |
ui.currency.symbol | string | '$' | Símbolo de moneda que muestra el panel. |
ui.currency.locale | string | 'en-US' | Formato numérico de las cantidades ('en-US', 'es-ES'...). |
logs.convar | string | 'cuxial_gardener_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. |
account | string | 'bank' | Cuenta que recibe los pagos del trabajo y los premios diarios ('bank', 'cash'). |
job | string | table | 'all' | Quién puede hacer el trabajo. 'all' para todos, el nombre de un trabajo, o una lista como { 'gardener' }. |
NPC
Bloque npc.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
coords | vector4 | ejemplo | Posición y orientación del NPC del trabajo. |
model | string | 's_m_m_gardener_01' | Modelo del ped. |
distance | number | 2.0 | Metros desde los que aparece la opción de interacción. |
menuDistance | number | 6.0 | El servidor rechaza abrir el panel más lejos de esta distancia. |
spawnDistance | number | 60.0 | El NPC solo existe en un cliente dentro de este radio. |
blip.enabled | boolean | true | Muestra el blip del trabajo en el mapa. |
blip.sprite / color / scale | number | 631 / 2 / 0.55 | Aspecto del blip. |
Interacción y marcadores
Bloque target.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
distance | number | 2.0 | Metros de las opciones sobre arbustos, flores y ramas en el suelo. |
trimDistance | number | 5.0 | Metros de la opción «cortar rama» desde la escalera. 5 es el máximo. |
truckDistance | number | 3.5 | Metros de las opciones del camión y del cortacésped. |
showDistance | number | 25.0 | Distancia a la que se dibuja el marcador flotante sobre arbustos, ramas y flores. 0 lo oculta. |
marker | table | ver archivo | Marcador flotante: type, scale, height, color ({ r, g, b, a }), bob, rotate. |
ring | table | ver archivo | Anillo dibujado en el suelo en cada hierba: type, scale, color. |
icons | table | ver archivo | Icono de Font Awesome de cada opción de interacción. |
Blips
Bloque blips. Cada entrada lleva sprite, color y scale.
| Opción | Por defecto | Qué marca |
|---|---|---|
mow | 570 / 25 / 0.6 | Malas hierbas |
prune | 570 / 24 / 0.6 | Arbustos |
trim | 836 / 52 / 0.8 | Ramas |
plant | 570 / 43 / 0.6 | Zona de flores |
truck | 67 / 0 / 0.8 | Camiones del trabajo |
mower | 559 / 0 / 0.6 | Un cortacésped desenganchado |
deliver | 38 / 29 / 0.8 | Punto de entrega |
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
areaAlpha | number | 90 | Opacidad del radio de la zona de flores en el mapa. |
routeColor | number | 25 | Color de la ruta del GPS. |
routeMs | number | 5000 | Cada cuánto se recalcula la ruta al punto pendiente más cercano. |
Mundo
Bloque world.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
viewDistance | number | 150.0 | Radio en el que se crean hierbas, arbustos, ramas y flores en cada cliente. |
handDistance | number | 50.0 | Radio en el que se ve la herramienta que llevan otros jugadores. |
fadeMs | number | 800 | Fundido de un arbusto al podarlo y de una hierba al cortarla. |
fallMs | number | 2500 | Duración de la caída de una rama cortada. |
Tripulación
Bloque 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 quien invita y el invitado. |
inviteSeconds | number | 60 | Segundos hasta que caduca una invitación. |
reconnectSeconds | number | 180 | Segundos que se guarda el puesto de un miembro que se desconecta durante un trabajo. |
splitRewards | boolean | true | Permite al dueño de la tripulación repartir el dinero por porcentaje. false = todos cobran lo mismo. |
Trabajo
Bloque run.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
cooldownHours | number | 0 | Horas que un jugador debe esperar entre trabajos. 0 = sin espera. |
exclusiveRegions | boolean | false | true = una sola tripulación por región a la vez. |
spawnFreeRadius | number | 6.0 | Metros que deben estar libres de vehículos alrededor de cada punto de salida. |
deathSweepMs | number | 1000 | Cada cuánto comprueba el servidor si hay jugadores muertos, que sueltan su herramienta y su escalera. |
Vehículos
Bloque vehicles. Una tripulación recibe un camión con su cortacésped, o dos parejas a partir de secondFrom miembros.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
plate | string | 'GARD' | Prefijo de la matrícula, hasta 4 caracteres. Se completa con el número de trabajo, una letra y un índice. |
fuel | number | 100.0 | Valor que se escribe en el state bag fuel de cada vehículo al crearlo. |
keys | boolean | true | Da las llaves mediante cuxial_garages cuando ese recurso está en marcha. |
secondFrom | number | 2 | Tamaño de tripulación a partir del cual sale un segundo camión con cortacésped. |
spawnTimeoutMs | number | 5000 | Tiempo que espera el servidor a que aparezca un vehículo antes de cancelar el inicio. |
minEngine | number | -3900.0 | Por debajo de esta salud de motor un vehículo cuenta como destruido. |
Herramientas y cortacésped
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
tools.truckDistance | number | 4.0 | Metros entre el jugador y el camión para coger o devolver una herramienta y para guardar ramas. |
tools.takeMs | number | 3300 | Barra de progreso al coger una herramienta. |
tools.returnMs | number | 2200 | Barra de progreso al devolver una herramienta. |
mower.hitchDistance | number | 4.0 | Metros entre el cortacésped y su camión para engancharlo. |
mower.footDistance | number | 3.0 | Metros desde los que un jugador a pie puede engancharlo o desengancharlo. |
mow.radius | number | 1.5 | Metros entre el cortacésped y una hierba que acepta el servidor. |
mow.maxHeight | number | 3.0 | Diferencia de altura admitida entre el cortacésped y la hierba. |
mow.minIntervalMs | number | 120 | Tiempo mínimo entre dos cortes del mismo jugador. |
mow.scanMs | number | 100 | Cada cuánto busca hierbas el cliente mientras conduce. |
mow.clientRadius | number | 0.8 | Metros a los que el cliente pide cortar una hierba. |
mow.sendMs | number | 150 | Separación entre dos peticiones de corte del cliente. |
Acciones
Cada acción tiene una duración y las distancias que acepta el servidor.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
work.marginMs | number | 500 | Tolerancia sobre el tiempo mínimo de cada acción. |
work.lockSeconds | number | 120 | Segundos que una acción y su objetivo quedan reservados para un jugador. |
prune.ms / distance | number | 4300 / 2.5 | Podar: barra de progreso y metros al arbusto. |
trim.ms | number | 4300 | Cortar rama: barra de progreso tras el minijuego. |
trim.reach | number | 4.5 | Metros entre la escalera y la rama. |
trim.height | number | 2.0 | Diferencia de altura entre la rama y el jugador subido a la escalera. |
trim.riderSlack | number | 5.0 | Tolerancia en metros entre el jugador y la escalera. |
water.ms / distance | number | 4000 / 2.5 | Regar: barra de progreso y metros a la flor. |
branch.distance / takeMs | number | 2.5 / 900 | Recoger una rama caída: metros y barra de progreso. |
Plantar
Bloque plant.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
ms | number | 15000 | Barra de progreso de plantar. |
reach | number | 2.0 | Metros entre el jugador y el sitio elegido. |
maxHeight | number | 1.5 | Diferencia de altura entre el jugador y el sitio. |
spacing | number | 0.8 | Metros mínimos entre dos flores. |
truckClear | number | 5.0 | Metros que deben estar libres de camiones del trabajo para entrar en modo colocación. |
placeDistance | number | 1.9 | Metros del jugador a la vista previa para que el sitio sea válido. |
allowUnknown | boolean | true | true = cualquier superficie vale. false = solo las superficies de materials. |
materials | table | ver archivo | Hashes de superficie aceptados cuando allowUnknown = false. |
Escalera
Bloque ladder.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
placeDistance | number | 3.0 | Metros entre el jugador y el pie del árbol para colocarla. |
vehicleClear | number | 5.0 | Metros que deben estar libres de vehículos del trabajo al pie del árbol. |
spacing | number | 1.0 | Metros mínimos entre dos escaleras. |
boardDistance | number | 3.0 | Metros para subir o para recogerla. |
ms | number | 2500 | Barra de progreso de colocar y recoger. |
viewDistance | number | 75.0 | Radio en el que se ven las escaleras. |
Entrega
Bloque deliver. El trabajo se paga cuando un miembro de la tripulación, al volante de un camión del trabajo, entrega en el punto de entrega de la región.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
radius | number | 20.0 | Metros alrededor del punto de entrega en los que deben estar los camiones. |
requireAll | boolean | true | true = todos los camiones deben estar enteros. false = un segundo camión destruido no bloquea la entrega. El camión principal se exige siempre. |
requireMowers | boolean | false | true = todos los cortacéspedes deben estar enteros y, o enganchados, o dentro del radio. |
collectLadders | boolean | true | true = las escaleras que queden fuera se recogen solas al entregar. false = la tripulación debe devolverlas antes. |
Premios
Bloque reward. Las cantidades base salen de cada región en data/regions.lua.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
mode | string | 'team' | 'team': con más de un miembro, cada uno cobra el premio de la región × teamMultiplier. 'flat': cada uno cobra el premio íntegro. 'split': el premio × teamMultiplier se divide entre la tripulación. |
teamMultiplier | number | 0.8 | Multiplicador que se aplica al premio cuando la tripulación tiene más de un miembro. |
bonusMoney | number | 0 | Dinero extra por cada tarea extra hecha por el jugador (regar, guardar ramas). |
bonusXp | number | 0 | XP extra por cada tarea extra hecha por el jugador. |
items | table | {} | Ítems que se dan al cobrar. Cada entrada: { item = 'nombre', count = 1, chance = 50 }, con chance de 1 a 100. |
Un jugador en solitario cobra siempre el premio íntegro de la región. La XP no se reparte nunca: cada miembro que cobra recibe la XP íntegra de la región.
Ropa, perfil y panel
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
outfit.mode | string | 'none' | Conjunto de data/outfits.lua que se pone al empezar el trabajo: 'workwear', 'classic' o 'none' para conservar la ropa del jugador. |
leaderboard.size | number | 10 | Filas del ranking. |
leaderboard.cacheSeconds | number | 60 | Segundos que se guarda en caché el ranking. |
history.size | number | 10 | Trabajos que muestra el historial personal. |
profile.flushMs | number | 30000 | Cada cuánto se guardan la XP y el progreso diario. El dinero se paga al momento. |
tips.seconds | number | 12 | Segundos que una pista de primera vez queda en pantalla. |
finish.seconds | number | 15 | Segundos que el resumen final queda en pantalla. Mínimo 3. |
Comandos y teclas
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
commands.<id>.name | string | false | ver Comandos | Nombre del comando. false lo desactiva. |
commands.<id>.restricted | string | 'group.admin' en list, close y fast | Grupo que puede usar el comando. |
keys | table | ver Comandos | Teclas por defecto. Cada jugador puede cambiarlas en los ajustes del juego. |
Archivos de datos
| Archivo | Qué se edita ahí |
|---|---|
data/regions.lua | Regiones: nivel mínimo, premio, cantidades de tareas, puntos de salida, punto de entrega y zona de flores. |
data/points.lua | Coordenadas de hierbas, arbustos y árboles con sus ramas, por región. |
data/daily.lua | Tareas diarias y cada cuánto se reinician. |
data/levels.lua | XP necesaria para cada nivel. |
data/outfits.lua | Ropa de trabajo por modo y sexo. |
data/games.lua | Dificultad del minijuego de las ramas. |
data/guide.lua | Tarjetas de la pestaña de guía. |
data/models.lua, data/tools.lua, data/vehicles.lua, data/ladder.lua | Modelos, posiciones de enganche y animaciones. Rara vez hay que tocarlos. |
Regiones
Cada entrada de data/regions.lua:
| Campo | Tipo | Qué hace |
|---|---|---|
id | number | Número estable. La base de datos lo guarda, así que no reutilices ni renumeres los ids. |
label | string | Clave de idioma con el nombre (region_* en locales/*.json). |
minLevel | number | Nivel mínimo de todos los miembros de la tripulación. |
reward | table | { money, xp } por miembro. |
tasks | table | Una entrada por tarea (mow, prune, trim, plant) con min y max. La cantidad es aleatoria entre ambos, con tope en los puntos disponibles en data/points.lua. |
trucks / mowers | vector4[] | Puntos de salida de cada camión y de su cortacésped, en orden. |
deliver | vector3 | Punto de entrega de los camiones. |
flowers | table | Zona de flores: { center, radius }. |
Tareas diarias
data/daily.lua tiene resetHours (por defecto 24, contadas desde el último reinicio del jugador) y una lista de tareas:
| Campo | Qué hace |
|---|---|
id | Clave estable que se guarda en la base de datos. |
label | Clave de idioma con el nombre. |
kind | 'tasks' (tareas propias hechas), 'runs' (trabajos entregados), 'money' (dinero ganado al entregar) o 'team' (trabajos entregados en tripulación de dos o más). |
goal | Cantidad a alcanzar. |
xp / money | Premio al completarla. El dinero va a account. |
Niveles
data/levels.lua contiene required, la XP 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.
Ropa
Cada modo de data/outfits.lua tiene un conjunto male y otro female con components ({ componente, drawable, textura }) y props ({ prop, drawable, textura }; drawable -1 lo quita). snapshot indica qué se guarda antes de cambiar y se restaura al acabar el trabajo.
Los números de drawable dependen de los packs de ropa de cada servidor. Revisa los conjuntos en el juego y sustitúyelos por los tuyos.
Cambios habituales
Limitar el trabajo a un trabajo del framework
job = { 'gardener' },Pagar en efectivo y añadir una espera
account = 'cash',
run = {
cooldownHours = 1,
exclusiveRegions = false,
spawnFreeRadius = 6.0,
deathSweepMs = 1000,
},Dividir un premio entre la tripulación y añadir un ítem
reward = {
mode = 'split',
teamMultiplier = 1.0,
bonusMoney = 25,
bonusXp = 10,
items = { { item = 'water', count = 1, chance = 50 } },
},Poner la ropa de trabajo
outfit = { mode = 'workwear' },Mover el NPC
npc = {
coords = vec4(0.0, 0.0, 0.0, 0.0), -- tu posición y orientación
-- conserva el resto del bloque
},Cuando muevas el NPC, mueve también trucks, mowers y deliver en data/regions.lua para que los vehículos aparezcan a su lado.
