El comportamiento está en shared/config.lua; las regiones, los niveles, las tareas diarias, los camiones y la ropa están en los archivos de la carpeta data. Reinicia el recurso después de cualquier cambio.
General
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
debug | boolean | false | Escribe trazas en la consola. También se activa poniendo la convar cuxial_electrician_debug a 1. |
account | string | 'bank' | Cuenta que recibe el pago del trabajo y las recompensas de las tareas diarias. |
job | string | string[] | 'all' | Quién puede hacer el trabajo. 'all' = todos. Un nombre de trabajo o una lista ({ 'electrician' }) lo limita a esos trabajos. |
logs.convar | string | 'cuxial_electrician_webhook' | Nombre de la convar que guarda el webhook de Discord. Con la convar vacía no se envían registros. |
admin.auditDays | number | 60 | Días que se conservan las filas de auditoría de este trabajo en cuxial_jobs_audit. 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 acompaña a las cantidades. |
currency.locale | string | 'en-US' | Formato numérico de las cantidades (separadores de miles y decimales). Usa 'es-ES' para el formato español. |
NPC del trabajo · npc
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
coords | vector4 | posición de ejemplo | Posición y orientación del NPC que abre el panel. Cámbiala para situar el trabajo en tu mapa. |
model | string | 's_m_y_construct_01' | Modelo del NPC. |
distance | number | 2.0 | Metros a los que se ofrece la interacción con el NPC. |
menuDistance | number | 6.0 | Metros a partir de los cuales el servidor se niega a abrir el panel. |
spawnDistance | number | 60.0 | Metros dentro de los cuales el NPC 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 | 643 / 3 / 0.9 | Aspecto del blip del trabajo. |
Los puntos de salida de los camiones y el punto de entrega no forman parte de npc. Si mueves el NPC, mueve también spawns y deliver en data/regions.lua.
Interacción y marcadores · target
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
distance | number | 2.0 | Metros a los que se ofrece la opción de reparar un punto. |
showDistance | number | 25.0 | Metros a los que se dibuja un marcador sobre los puntos pendientes. 0 = sin marcador. |
buildOffset | number | 0.9 | Metros que la opción «montar plataforma» se separa del poste, hacia el jugador. |
signalOffset | number | 0.6 | Metros que la opción de reparar un semáforo se separa de su poste, hacia el jugador. |
marker | table | ver archivo | Marcador sobre los puntos pendientes: type, scale, height, color ({ r, g, b, a }), bob, rotate. |
ring | table | ver archivo | Anillo dibujado en el suelo bajo farolas y postes: type, scale, color. |
icons | table | ver archivo | Icono de Font Awesome de cada opción de interacción. |
Blips · blips
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
task | table | { sprite = 354, color = 5, scale = 0.8 } | Blip de cada reparación pendiente. |
truck | table | { sprite = 67, color = 0, scale = 0.8 } | Blip de cada camión de servicio. |
deliver | table | { sprite = 38, color = 29, scale = 0.8 } | Blip del punto de entrega. |
routeColor | number | 38 | Color de la ruta del GPS. |
routeMs | number | 5000 | Milisegundos entre recálculos de la ruta al punto pendiente más cercano. Mínimo 1000. |
Efectos · fx y signals
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
fx.asset / fx.name | string | 'core' / 'ent_dst_elec_fire_sp' | Efecto de partículas que se reproduce en los puntos pendientes. |
fx.distance | number | 30.0 | Metros a los que se ven las chispas. |
fx.repeatMs | number | 3000 | Milisegundos entre dos reproducciones del efecto. |
signals.distance | number | 150.0 | Metros a un cruce pendiente a partir de los cuales sus semáforos empiezan a parpadear. |
signals.tickMs | number | 250 | Milisegundos entre pasos del parpadeo. Mínimo 50. |
signals.fixedDistance | number | 1.5 | Metros alrededor de un punto reparado dentro de los cuales un semáforo cuenta como arreglado y deja de parpadear. |
Tripulación · crew
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
maxPlayers | number | 4 | Máximo de miembros de una tripulación, dueño incluido. |
inviteDistance | number | 8.0 | Metros máximos 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 conserva su puesto un miembro que se desconecta durante un trabajo. |
splitRewards | boolean | true | true deja al dueño repartir el dinero por porcentaje. false quita la opción y todos cobran lo mismo. |
Reglas del trabajo · run
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
cooldownHours | number | 0 | Horas que cada jugador debe esperar entre trabajos. 0 = sin espera. |
exclusiveRegions | boolean | true | true permite una sola tripulación por región a la vez. false deja que varias trabajen en la misma región. |
spawnFreeRadius | number | 6.0 | Metros que deben estar libres de vehículos alrededor de cada punto de salida de los camiones. |
Camiones de servicio · trucks
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
plate | string | 'ELEC' | Prefijo de la matrícula, hasta 4 caracteres. El script lo completa con el número del trabajo y el del camión. |
fuel | number | 100.0 | Combustible con el que salen los camiones, escrito en el estado fuel del vehículo. |
keys | boolean | true | true da las llaves mediante cuxial_garages cuando ese recurso está en marcha. false no da llaves nunca. |
secondFrom | number | 3 | Tamaño de tripulación a partir del cual se entrega un segundo camión. |
spawnTimeoutMs | number | 5000 | Milisegundos que el servidor espera a que se cree cada camión. |
minEngine | number | -3900.0 | Salud del motor por debajo de la cual un camión cuenta como destruido. |
Los modelos de los camiones y sus extras se definen en data/trucks.lua.
Reparaciones · repair
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
maxDistance | number | 2.5 | Metros máximos entre el jugador y el punto en transformadores, cuadros y semáforos. |
signalSlack | number | 0.6 | Metros extra en horizontal que se admiten en los semáforos. |
signalHeight | number | 4.0 | Diferencia de altura en metros que se admite en los semáforos. |
highDistance | number | 4.5 | Metros máximos en horizontal entre el jugador y el punto en farolas y postes. |
highHeight | number | 2.0 | Diferencia de altura en metros que se admite entre la plataforma y la avería. |
marginMs | number | 500 | Tolerancia en milisegundos sobre el tiempo mínimo de cada minijuego (data/games.lua). |
lockSeconds | number | 120 | Segundos que un punto queda reservado para el jugador que lo repara. Mínimo 10. |
fail | string | 'damage' | Qué pasa al fallar un minijuego. 'damage' = animación de descarga y pérdida de vida, 'anim' = solo la animación, 'none' = nada. |
failDamage | table | { min = 10, max = 25 } | Vida que se pierde al fallar, al azar dentro de este rango. Solo con fail = 'damage'. |
Las distancias las comprueba el servidor. Súbelas un poco si a los jugadores con mucha latencia se les rechazan reparaciones por «demasiado lejos»; no las bajes por debajo de la distancia de interacción de target.distance.
Escaleras y plataformas · rigs
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
lampRig | string | 'ladder' | Cómo se llega a las farolas. 'ladder' = escalera que se coge del camión, 'lift' = plataforma elevadora, 'none' = se reparan desde el suelo. |
poleRig | string | 'lift' | Cómo se llega a los postes. Mismos valores. |
spacing | number | 20.0 | Metros mínimos entre una plataforma y cualquier otra plataforma o escalera. |
buildDistance | number | 3.0 | Metros máximos del jugador al punto para montar, y al pie para desmontar. |
serveDistance | number | 3.0 | Metros máximos entre la plataforma o la escalera y el punto para que cuente. |
riderSlack | number | 5.0 | Tolerancia en metros sobre la posición de un jugador subido a la escalera. |
insideSlack | number | 0.5 | Tolerancia en metros al comprobar quién está dentro de la cesta. |
buildMs / removeMs | number | 2500 / 2500 | Duración de las barras de montar y desmontar. |
ladderMs | number | 1500 | Duración de las barras de coger, colocar, recoger y devolver la escalera. |
viewDistance | number | 75.0 | Metros dentro de los cuales los props de plataformas y escaleras existen para un jugador. |
Con 'ladder' el recorrido es: coger la escalera del camión, colocarla, subir, reparar, bajar, recogerla y devolverla al camión. Con 'lift' hay que aparcar el camión a la distancia definida en data/rigs.lua (de 5 a 9 metros por defecto) antes de poder montar la plataforma.
Entrega · deliver
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
radius | number | 20.0 | Metros alrededor del punto de entrega de la región dentro de los cuales deben estar los camiones. |
requireAll | boolean | true | true exige que todos los camiones estén enteros. false solo exige el camión principal; los demás, si siguen existiendo, también deben estar en la entrega. |
El trabajo se paga cuando un miembro de la tripulación pulsa la tecla de interacción al volante de uno de los camiones, con todas las escaleras devueltas.
Pago · reward
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
mode | string | 'team' | Cómo se paga el premio de la región. Ver más abajo. |
teamMultiplier | number | 0.64 | Multiplicador que se aplica al premio de la región cuando la tripulación tiene más de un miembro. Lo usan 'team' y 'split'. |
items | table | {} | Ítems que recibe cada miembro al cobrar: { item = 'nombre', count = 1, chance = 50 }. chance es un porcentaje. Vacío = sin ítems. |
mode | En solitario | Tripulación de dos o más |
|---|---|---|
'team' | Premio completo | Cada miembro recibe premio × teamMultiplier |
'flat' | Premio completo | Cada miembro recibe el premio completo |
'split' | Premio completo | Premio × teamMultiplier, dividido entre la tripulación |
Todos los miembros reciben la XP completa de la región en cualquier modo. Los miembros desconectados en el momento de la entrega no reciben nada.
Los ítems solo se dan si existen en tu inventario y el jugador puede cargarlos. Un ítem que no existe se avisa en la consola del servidor al arrancar el recurso.
Ropa · outfit
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
mode | string | 'none' | Ropa que se lleva durante el trabajo. 'workwear' y 'classic' son los dos conjuntos definidos en data/outfits.lua; 'none' deja al jugador como está. |
La ropa solo se aplica a los modelos freemode masculino y femenino. El jugador recupera su ropa al terminar el trabajo.
Perfil, ranking y pantallas
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
leaderboard.size | number | 10 | Entradas de cada lista del ranking. De 1 a 50. |
leaderboard.cacheSeconds | number | 60 | Segundos que el ranking se guarda en caché antes de volver a leerse de la base de datos. |
history.size | number | 10 | Trabajos que se muestran en el historial de cada jugador. De 1 a 50. |
profile.flushMs | number | 30000 | Milisegundos entre guardados diferidos de XP y tareas diarias. Mínimo 5000. El dinero se paga siempre al momento. |
tips.seconds | number | 12 | Segundos que una pista de primera vez permanece en pantalla. Mínimo 3. |
finish.seconds | number | 15 | Segundos que el resumen final permanece 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' | Grupo que puede usar un comando de staff. |
keys | table | ver Comandos | Tecla por defecto de cada acción. Los jugadores pueden cambiarlas en los ajustes de teclas de GTA. |
Archivos de datos
Los archivos de data están pensados para editarse. Los valores que traen son ejemplos: cámbialos para adaptarlos a tu mapa y a tu economía.
| Archivo | Qué contiene |
|---|---|
data/regions.lua | Regiones: id, label, minLevel, reward (money, xp), tasks, spawns y deliver. |
data/points.lua | Coordenadas de cada punto de reparación por región, y los modelos de semáforo que parpadean. |
data/levels.lua | XP necesaria para pasar de cada nivel al siguiente. El nivel máximo es el número de entradas más uno. |
data/daily.lua | Tareas diarias y horas entre reinicios. |
data/trucks.lua | Modelos de los camiones y extras del vehículo. |
data/rigs.lua | Modelos y medidas de la plataforma y la escalera. |
data/outfits.lua | Conjuntos de ropa por modo y sexo. |
data/games.lua | Minijuego de cada tipo de punto y sus parámetros. |
data/guide.lua | Tarjetas de la pestaña de guía. |
Regiones
| Campo | Qué hace |
|---|---|
id | Número estable de la región. La base de datos lo guarda; no lo reutilices ni lo renumeres. |
label | Clave de locale con el nombre de la región. |
minLevel | Nivel que necesitan todos los miembros de la tripulación. |
reward | { money, xp } por miembro, antes de aplicar reward.mode. |
tasks | Cantidad de cada tipo de reparación, al azar entre min y max y con tope en los puntos disponibles. Tipos: trafo, panel, lamp, junction, pole. Un junction trae su transformador y sus semáforos. |
spawns | Puntos de salida de los camiones (vec4), en orden. El servidor usa los primeros que estén libres. |
deliver | Punto de entrega de los camiones (vec3). |
Tareas diarias
Cada entrada de data/daily.lua tiene un id, un label, un kind, un goal y la xp y el money que se pagan al completarla. resetHours son las horas entre reinicios, contadas desde el último reinicio de cada jugador.
kind | Cuenta |
|---|---|
'repairs' | Reparaciones hechas por el jugador |
'runs' | Trabajos entregados |
'money' | Dinero cobrado al entregar |
'team' | Trabajos entregados en tripulación de dos o más |
Cambios habituales
Limitar el trabajo a una profesión
job = { 'electrician' },Usar la plataforma también en las farolas
rigs = {
lampRig = 'lift',
poleRig = 'lift',
-- ...
},Pagar el premio completo a cada miembro
reward = { mode = 'flat', teamMultiplier = 0.64, items = {} },Dar un ítem al cobrar
reward = {
mode = 'team',
teamMultiplier = 0.64,
items = {
{ item = 'water', count = 1, chance = 50 },
},
},Cambiar los textos
Los nombres de las regiones, las notificaciones y los textos de la interfaz están en locales/en.json y locales/es.json. Edita el valor, nunca la clave.
