Los ajustes generales están en shared/config.lua. Las líneas, los productos, las centrales, los supermercados, las furgonetas y las tareas diarias están en data/. Reinicia el recurso después de editar un archivo.
La mayoría de los datos del mundo también se editan en el juego con /supplyadmin. Lo que guardas ahí se almacena en la base de datos y manda sobre los archivos: líneas, productos, centrales, tiendas, supermercados, furgonetas, posiciones de carga, y los ajustes de posición del npc, market, orders, reward y trade. Para volver a los valores del archivo, restaura la entrada desde el editor.
Las coordenadas, la posición del NPC, las líneas, los trabajos mayoristas y los nombres de ítems que vienen en los archivos son ejemplos. Cámbialos para tu servidor.
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_supply_debug 1. El comando fast solo funciona con la depuración activada. |
ui.accent | string | configurable | Color de acento de la interfaz, en hexadecimal. |
ui.currency.symbol | string | '$' | Símbolo de moneda que muestra la interfaz. |
ui.currency.locale | string | 'en-US' | Formato de los importes ('en-US', 'es-ES'...). |
logs.convar | string | 'cuxial_supply_webhook' | Nombre de la convar con el webhook de Discord. Con la convar vacía no se envía nada. |
admin.auditDays | number | 60 | Días que se guardan las filas de auditoría. |
admin.permission | string | 'admin' | Permiso del framework del staff del trabajo. Consulta Comandos. |
account | string | 'cash' | Cuenta donde se cobran las partidas y de la que sale la fianza de la furgoneta ('cash', 'bank'). |
job | string | table | 'all' | Quién puede hacer el trabajo de abastecimiento. 'all' para todos, un nombre de trabajo o una lista de trabajos. |
NPC e interacción
Bloque npc.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
coords | vector4 | ejemplo | Posición y rumbo del NPC del trabajo. |
vanSpawns | vector4[] | ejemplo | Salidas comunes de la furgoneta junto al NPC. Una línea sin salida propia usa la primera libre. |
model | string | 'a_m_m_farmer_01' | Modelo del ped. |
distance | number | 2.0 | Metros desde los que está disponible la opción de interacción. |
menuDistance | number | 6.0 | El servidor no abre el panel más lejos de esto. |
spawnDistance | number | 60.0 | El NPC solo existe en un cliente dentro de este radio. |
blip | table | ver archivo | enabled, sprite, color, scale del blip del trabajo. |
Bloque target.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
distance | number | 2.0 | Metros de las opciones de interacción. |
showDistance | number | 40.0 | Distancia a la que se dibujan los marcadores flotantes sobre los puntos de trabajo. |
icons | table | ver archivo | Icono de Font Awesome de cada opción de interacción. |
marker | table | ver archivo | Marcador flotante: type, scale, height, color ({ r, g, b, a }), bob, rotate. |
Acciones de trabajo
Bloque work. Cada acción de una línea tiene una distancia máxima que comprueba el servidor y una barra de progreso.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
distance.<acción> | number | de 2.0 a 5.5 | Metros al punto de trabajo para catch, milk, slaughter, pack, bottle, plant, water, harvest, nest, pickup. |
ms.<acción> | number | de 2500 a 7000 | Duración de la barra de progreso de cada acción. |
slackMs | number | 500 | Margen sobre el tiempo mínimo de cada acción. |
anims | table | ver archivo | Animación (dict, clip, flag) o scenario de cada acción. drop es la animación de dejar algo. |
props | table | ver archivo | Props durante la barra: en la mano (model, bone, pos, rot), en el suelo delante (ground) o sobre la mesa delante (front, z). |
fx.water | table | ver archivo | Partículas de agua al regar. |
Las líneas en el mundo
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
carry | table | ver archivo | Llevar en las manos: flag de la animación, distancia a la que se ven las cargas de los compañeros (others), controles bloqueados (disable) y animación y posición de box, crate, sack y hen. |
animals.catchDistance | number | 5.5 | Metros entre el jugador y la gallina para atraparla. Las gallinas se atrapan lanzándose. |
animals.corralMargin | number | 3.0 | Metros fuera del corral que todavía cuentan. |
animals.fleeDistance / fleeMs / restMs | number | 3.0 / 2200 / 2500 | Las gallinas huyen al acercarse durante fleeMs y luego descansan. |
animals.spawnDistance | number | 90.0 | Radio en el que se crean los animales. |
animals.cowScenario | string | 'WORLD_COW_GRAZING' | Escenario de las vacas. |
pickup.stack | table | ver archivo | Pila de cajas que se dibuja en el almacén de importación. |
stations.vanDistance | number | 90.0 | Distancia máxima entre la furgoneta y la mesa de procesado. |
stations.props | table | { bottle = 'prop_table_03' } | Mesa que se crea por tipo de estación. Sin entrada, el mapa ya tiene una. |
plots.growMs | number | 90000 | Tiempo de crecimiento tras regar. Una línea puede tener su propio growMs. |
plots.soil / sprout / crops | table | ver archivo | Props de la tierra, el brote y cada cultivo maduro. |
nests | table | ver archivo | Prop del nido, distancia de aparición y marcador. |
Furgoneta
Bloque van. Los modelos, fianzas y huecos de cada furgoneta están en data/vehicles.lua.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
rearDistance | number | 2.5 | Metros a la puerta trasera para cargar y descargar. |
minHealth | number | 400.0 | Salud mínima de motor y carrocería para recuperar la fianza. |
plate | string | 'SUPL' | Prefijo de la matrícula. |
spawnFreeRadius | number | 6.0 | Metros que tienen que estar libres de vehículos alrededor de la salida. |
spawnTimeoutMs | number | 5000 | Tiempo que espera el servidor a que aparezca la furgoneta antes de cancelar el inicio. |
fuel | number | 100.0 | Combustible al aparecer. |
keys | boolean | true | Da las llaves a través de cuxial_garages cuando ese recurso está en marcha. |
bone / anchor / propDistance | ver archivo | Dónde se enganchan las cajas y desde qué distancia se dibujan. |
Bloque blips: stage, van, central, plant, warehouse y deliver, cada uno con sprite, color y scale.
Tripulación y partida
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
crew.maxPlayers | number | 4 | Tamaño máximo de la tripulación. |
crew.inviteDistance | number | 8.0 | Metros entre quien invita y el invitado. |
crew.inviteSeconds | number | 60 | Segundos hasta que caduca una invitación. |
crew.reconnectSeconds | number | 180 | Segundos que se guarda el puesto a un miembro que se desconecta durante una partida. |
crew.splitRewards | boolean | true | Permite al dueño de la tripulación repartir el dinero por porcentaje. |
run.cooldownHours | number | 0 | Horas que un jugador espera entre partidas. 0 = sin espera. |
run.exclusiveRegions | boolean | true | true = una sola tripulación por línea a la vez. |
Entrega
Bloque deliver.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
radius | number | 3.0 | Metros al encargado de la central para firmar el albarán. |
palletDistance | number | 3.0 | Metros entre el jugador y el palé al descargar. |
palletModel | string | false | 'prop_pallet_02a' | Prop del palé. false si el mapa ya tiene uno. |
stack | table | ver archivo | Cómo se apilan las cajas en el palé. |
dockRing / ringColor | 8.0 / ver archivo | Tamaño y color del aro del muelle. | |
showDistance | number | 80.0 | Distancia a la que se dibujan el muelle, el palé y la pila. |
demand.high / demand.low | number | 0.10 / -0.10 | Umbrales del indicador de demanda del selector de destino: por encima de high es demanda alta, por debajo de low es saturado. |
Guía de entrega
Bloque guide. La línea «Siguiente paso» del HUD y los marcadores que la acompañan.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | Muestra el siguiente paso en el HUD. |
route | boolean | true | Ruta GPS a la furgoneta mientras se lleva algo en las manos. |
showDistance | number | 250.0 | Distancia a la que se ve el aro del muelle durante la entrega. |
tickMs | number | 500 | Cada cuánto se actualiza la guía. |
marker | table | ver archivo | Marcador sobre la puerta trasera de la furgoneta y sobre el hueco que hay que reponer: type, scale, color, bob, rotate, distance (metros a los que se dibuja), height (sobre la furgoneta) y slotHeight (sobre el hueco). |
Reparto
Bloque reward. El dinero de una partida es el valor de la carga, no una cantidad fija.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
mode | string | 'split' | 'split': el valor × teamMultiplier se divide entre la tripulación. 'team': cada miembro cobra el valor × teamMultiplier. 'flat': cada miembro cobra el valor entero. Quien juega solo cobra siempre el valor entero. |
teamMultiplier | number | 2.0 | Multiplicador que se aplica con dos o más miembros. De 1 a 3 en el editor. |
requireScore | boolean | true | true = los miembros que no hicieron ninguna tarea no cobran ni cuentan para el grupo. |
levelBonus | number | 0.2 | Fracción extra del valor por cada nivel del dueño de la tripulación por encima del 1. De 0 a 0,2 en el editor. |
items | table | {} | Ítems que se dan al cobrar. Cada entrada: { item = 'nombre', count = 1, chance = 50 }. |
Centrales de abastos
Bloque market.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
tickMinutes | number | 10 | Minutos entre actualizaciones del mercado. |
simulate | boolean | true | Consumo simulado del stock en cada actualización. |
curve | number | 1.6 | Forma de la curva de precio: lo rápido que baja el precio al llenarse el stock. |
resaleMarkup | number | 1.35 | Margen de la central cuando vende. |
trendTicks | number | 3 | Actualizaciones que se usan para mostrar la tendencia del precio. |
initialFill | number | 0.5 | Stock de una central nueva, como fracción de su tope. |
historyHours / historyPoints | number | 48 / 36 | Longitud del historial de precios. |
ledgerDays | number | 30 | Días que se guarda el libro de movimientos. |
terminalDistance | number | 3.0 | Metros a la terminal. |
jitter | table | { min = 0.8, max = 1.2 } | Variación aleatoria del consumo. |
npcDistance / npcScenario | 60.0 / 'WORLD_HUMAN_CLIPBOARD' | Distancia de aparición y escenario del encargado de la central. |
Bloque orders: pedidos automáticos con bonus.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
threshold | number | 0.35 | Un producto por debajo de este llenado puede recibir un pedido. |
targetFill | number | 0.75 | Llenado que busca alcanzar el pedido. |
chance | number | 0.35 | Probabilidad de pedido por actualización. |
maxOpen | number | 3 | Pedidos abiertos por central. |
min / max | number | 10 / 60 | Cajas por pedido. |
bonus | table | { min = 0.15, max = 0.40 } | Pago extra de las cajas que cubren el pedido. |
minutes | number | 90 | Duración de un pedido. |
staffMinutes | table | { min = 10, max = 240 } | Rango de duración de los pedidos que crea el staff. |
Venta y mayoristas
Bloque trade.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
wholesaleMarkup | number | 1.15 | Margen sobre el precio de compra de la central para los trabajos mayoristas en su terminal. |
centralMarkup | number | 1.35 | Margen para el resto en la terminal de una central. |
retailMarkup | number | 1.60 | Margen de las tiendas sin margen propio. |
maxCrates | number | 50 | Cajas por compra en una central. |
wholesale | table | ejemplo | Trabajos que compran a precio mayorista: { job = 'nombre', grade = 0 } por trabajo. También ven el punto de venta al por mayor del supermercado. |
categories | table | {} | Categorías de producto extra: { id, label, icon }. |
shopDistance / shopModel / shopBlip | ver archivo | Distancia, ped y blip de una tienda nueva. | |
newProduct / newImport | table | ver archivo | Valores por defecto de un producto y de una línea de importación creados en el editor. |
limits | table | { open = 6, quote = 20, buy = 6 } | Límites de peticiones por jugador. |
blockedItems | table | ver archivo | Ítems que ningún producto puede dar. Un * al final vale como prefijo. |
Supermercado
Bloque store. Cada supermercado se define en data/stores.lua; este bloque tiene las reglas comunes a todos.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
job / society | string | 'supermarket' | Trabajo y cuenta de empresa de un supermercado creado en el editor. El incluido lleva los suyos en data/stores.lua. |
grades | table | { restock = 0, cashier = 1, manager = 2, boss = 3 } | Grado mínimo de cada puesto. Un grado de jefe del framework vale como encargado y como jefe. |
duty | boolean | true | true = reponer y cobrar exige estar de servicio. |
slotCrates | number | 6 | Cajas por hueco de palé del almacén. |
shelfCapacity | number | 12 | Unidades por defecto de un hueco del lineal. |
maxTake | number | 5 | Unidades por toma de una balda. |
maxBasket | number | 60 | Unidades por cesta. |
distance | table | ver archivo | Metros que comprueba el servidor para huecos, cajas registradoras, clientes, autocobros, expositores de cestas y neveras. |
restockMs | number | 1500 | Tiempo mínimo entre dos reposiciones. |
zoneMargin | number | 6.0 | Margen de la zona de la tienda cuando se calcula a partir de los huecos. |
leave | table | { alarm = true, restock = true, checkMs = 2000 } | Salir con la cesta sin pagar: alarma al personal, productos de vuelta a la balda, intervalo de comprobación. |
chargeSeconds | number | 60 | Segundos que vale un cobro del cajero. |
unitMarkup | number | 1.6 | Precio por defecto de una unidad: precio base de la caja × unitMarkup / unidades por caja. |
demand | table | { min = 0.75, max = 1.35, curve = 1.0, retailCap = 0.9 } | Lo que paga la tienda por caja entregada: precio base × un multiplicador entre min (tienda llena) y max (tienda vacía), nunca por encima de retailCap × el precio de venta por defecto de la caja. El precio buy de un producto en la tienda manda sobre esto. |
recent | number | 10 | Ventas recientes que muestra el panel de gestión. |
streamDistance | number | 80.0 | Distancia a la que llegan a un cliente los cambios de los huecos. |
limits | table | ver archivo | Límites de peticiones por acción. |
boxMs | number | 1200 | Barra de progreso al coger una caja del almacén. |
closeMargin / exitWarn | number | 2.0 / 3.0 | Margen antes de que se cierre una caja al alejarse, y metros antes de la salida a los que aparece el aviso de cesta sin pagar. |
alarm | table | { seconds = 60, blip = ... } | Duración y blip de la alarma de robo. |
anims | table | ver archivo | Animaciones al coger una caja, reponer y coger un producto. |
Cajas
Bloque store.till. Cajas con pantalla sobre el cristal del terminal.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | false = puntos de caja sencillos con un panel en pantalla en lugar de las pantallas del terminal. |
staff | table | { grade = 'cashier', zone = true } | Quién cuenta como cajero de servicio: puesto mínimo y estar dentro de la tienda. |
selfWhenStaffed | boolean | false | true = los clientes pueden cobrarse solos aunque haya un cajero en la tienda. |
distance | table | { operator = 2.0, customer = 2.5, margin = 1.5 } | Metros al puesto del cajero y al del cliente. |
scanMs | number | 250 | Tiempo mínimo entre dos productos escaneados. |
callSeconds | number | 20 | Cada cuánto se avisa al personal de un cliente esperando. |
commission | number | 0.0 | Fracción de la venta que la tienda paga al cajero. |
renderDistance / maxDuis / ttlMs | 14.0 / 4 / 15000 | Distancia y número de pantallas que se dibujan a la vez. | |
camera / paidSeconds / anim | ver archivo | Cámara frente a la pantalla, segundos que se ve el ticket, gestos. | |
adjust | table | {} | Posición fina del cristal de cada pantalla, tal como la imprime /supplytill. |
Venta al por mayor
Bloque store.wholesale.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | false = sin venta al por mayor. |
factor | number | 0.85 | Precio de la caja = precio de balda de la unidad × unidades por caja × factor. |
maxCrates | number | 20 | Cajas por compra. |
distance | number | 3.0 | Metros al encargado del almacén. |
model | string | 's_m_m_dockwork_01' | Ped por defecto del encargado. |
points | table | ejemplo | Posición del encargado por tienda. Se mueve por tienda en el editor. |
Cesta
Bloque store.basket.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
required | boolean | true | Hace falta una cesta del expositor para coger de las baldas (solo en tiendas con expositores). |
keepAfterPay | boolean | false | Seguir con la cesta después de pagar. |
models | table | ver archivo | Modelos de cesta por orden de preferencia: se usa el primero que exista en el juego. |
show | table | ver archivo | Productos que se dibujan dentro de la cesta. |
others / tick | number | 30.0 / 500 | Distancia a la que se dibujan las cestas de otros jugadores e intervalo de actualización. |
stand / stands | table | ver archivo | Pila de cestas de cada expositor y posiciones de los expositores por tienda. |
drop | table | { vehicle = true, dead = true } | La cesta se suelta al subir a un vehículo o al morir; sus productos vuelven a la balda. |
Huecos, neveras y props
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
slotCategories | table | ver archivo | Categorías de producto que admite cada tipo de hueco (y cada sección de balda). Sin entrada, cualquiera. |
interact | table | ver archivo | Alcance de las opciones del lineal y del almacén, cuántos huecos cercanos tienen opción y qué muestra la etiqueta (image, price). |
fridge | table | ver archivo | Neveras con puerta animada: distancia de aproximación, tiempo que una puerta queda ocupada, colocación fina del jugador, posición en la mano, puertas activadas o desactivadas por nevera. |
zones | table | ver archivo | Carga de props por zonas: al acercarse a la tienda se crean todos sus props por tandas, hasta max por tienda. enabled = false los carga por distancia. |
props | table | ver archivo | Modelos de cada producto, palés y carga del almacén, colisión, distancias y límites, giro por modelo (yaw) y modelos de arcón lleno y vacío. |
Editor
Bloque editor: pasos de movimiento y giro del fantasma de colocación (normal y con Mayús), límites del radio del corral, repetición de tecla, opacidad del fantasma, modelos de reserva y las teclas para añadir (keys.insert, por defecto Insert) y quitar (keys.delete, por defecto Supr) puntos.
Perfil y panel
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
outfit.mode | string | 'none' | Conjunto de ropa de data/outfits.lua que se pone durante la partida. 'none' deja la ropa del jugador. |
leaderboard.size / cacheSeconds | number | 10 / 60 | Filas del ranking y tiempo de caché. |
history.size | number | 10 | Partidas del historial personal. |
profile.flushMs | number | 30000 | Cada cuánto se guardan la XP y el progreso diario. |
tips.seconds | number | 12 | Segundos que se ve una pista de primera vez. |
finish.seconds | number | 15 | Segundos que se ve el resumen al terminar la partida. |
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, fast, admin | Grupo ACE que puede usar el comando. |
keys | table | ver Comandos | Teclas por defecto. Cada jugador puede reasignarlas en los ajustes del juego. |
Archivos de datos
| Archivo | Qué editas ahí |
|---|---|
data/regions.lua | Líneas de producción: tipo, nivel mínimo, XP, salida de la furgoneta, tareas y cantidades, animales, parcelas y cultivos, estaciones, nidos, almacén, productos y rendimiento. |
data/products.lua | Categorías y productos: precios, tope, consumo, prop de la caja y cómo se lleva, ítem del inventario, unidades por caja, origen. |
data/stores.lua | Supermercados: trabajo, cuenta de empresa, factores de precio, muelle, palé, zona de la tienda, zonas de props, huecos de almacén, baldas, cajas, precios, límites y formas de pago. |
data/centrals.lua | Centrales: terminal, muelle, palé, zona, factores de precio, productos que admite. Todas vienen con enabled = false. |
data/vehicles.lua | Furgonetas por nivel: modelo, nivel mínimo, fianza, huecos de cajas y de gallinas. |
data/daily.lua | Tareas diarias: runs, money, team, crates (cajas descargadas en un palé) y hens (gallinas metidas en la furgoneta). |
data/levels.lua | XP necesaria para cada nivel. |
data/guide.lua | Tarjetas de la pestaña de guía. |
data/outfits.lua | Ropa de trabajo por modo y sexo. |
data/seed/ | Huecos de las baldas, neveras y cajas del supermercado incluido. Se copian a la base de datos cuando cambia el archivo. No borres esta carpeta. |
Productos
Cada entrada de list en data/products.lua:
| Campo | Qué hace |
|---|---|
id | Clave estable que se guarda en la base de datos. No la reutilices ni la renombres. |
label / category / image | Clave de idioma con el nombre, id de categoría e imagen que muestra la interfaz. |
unit | 'crate' o 'sack'. |
basePrice / minPrice / maxPrice | Precio de referencia de una caja y el rango que paga una central. |
cap | Stock de referencia por central (× el capFactor de la central). |
consume.perHour | Consumo simulado. |
item / units | Ítem del inventario y unidades por caja. Sin item el producto no se vende. |
origin | 'production' (líneas de producción), 'import' (líneas de importación) o 'auto' (lo repone la actualización del mercado). |
crate | Prop de la caja y cómo se lleva (box, crate, sack). |
Supermercado
Cada entrada de data/stores.lua:
| Campo | Qué hace |
|---|---|
id | Clave estable. No la reutilices. |
label | Clave de idioma o texto. La tienda incluida es supply_store_paleto, «Supermarket · Paleto Bay». |
job / society | Trabajo del framework del personal y cuenta de empresa de cuxial_banking. Ambos 'supermarket' en la tienda incluida. |
priceFactor / capFactor | Multiplicador de lo que paga por caja y del stock de referencia de cada producto. |
dock / pallet | Donde aparca la furgoneta y donde se dejan las cajas y se firma el albarán. |
zone / zones | Zona de la tienda (salir de ella con la cesta cuenta como salir sin pagar) y las zonas de carga de props. |
backroom / shelves / registers / selfcheckout | Huecos del almacén, huecos del lineal y puntos de caja. La tienda incluida los toma de data/seed/. |
accepts | Productos que admite. Sin él, todos los productos con ítem. |
buy | Precio fijo por caja que paga a los proveedores por un producto. |
prices / limits | Precios del lineal que pone el jefe, y límites por producto que pone el staff (minPrice, maxPrice, maxPerSale). |
pay | Formas de pago: 'cash', 'bank', 'card'. |
blip | Blip del mapa. |
Cambios habituales
Cobrar las partidas en el banco
account = 'bank',Limitar el abastecimiento a un trabajo del framework
job = { 'supplier' },Dejar que un restaurante compre al por mayor
trade = {
-- deja el resto del bloque
wholesale = { { job = 'restaurant', grade = 0 } },
},Permitir el autocobro aunque haya un cajero trabajando
till = {
-- deja el resto del bloque
selfWhenStaffed = true,
},Reponer y cobrar sin entrar de servicio
store = {
-- deja el resto del bloque
duty = false,
},