Skip to content

Configuración

Todas las opciones de Cuxial Garages explicadas: config principal, llaves, depósito, alquiler, limpieza de vehículos y marcadores.

Las opciones se reparten en seis archivos: shared/config.lua para el núcleo y un archivo por sistema en data/. Los garajes, depósitos, flotas de trabajo y puntos de alquiler no están en ningún archivo: se crean en juego desde el panel de administración. Reinicia el recurso después de cambiar un archivo.

ArchivoQué cubre
shared/config.luaPermisos, pagos, transferencias, blips, interfaz
data/keys.luaLlaves de vehículo, robos y avisos a la policía
data/impound.luaTrabajos que incautan, tasa por defecto y comando
data/rental.luaContratos de alquiler, recargos, avisos
data/carwipe.luaLimpieza de vehículos
data/zones.luaDistancias de interacción y marcador

Config principal · shared/config.lua ​

General ​

OpciónTipoPor defectoQué hace
debugbooleanfalseEscribe trazas en la consola. También se activa poniendo la convar cuxial_garages_debug a 1.
admin.permissionstring'admin'Permiso que se comprueba a través de tu framework para abrir el panel de administración y usar sus acciones. /adminkey necesita además el grupo ACE group.<permiso>.
languagestring'es'Idioma de la interfaz: 'es' o 'en'. Las notificaciones y los avisos siguen la convar ox:locale.
accentColorstringconfigurableColor de acento de la interfaz. Acepta RRGGBB o el corto RGB, con o sin #, y la forma de 8 dígitos AARRGGBB, de la que se ignoran los dos primeros.
externalGaragesbooleanfalsetrue deja que otro recurso abra garajes de casa con los exports OpenGarage y StoreVehicle. Déjalo en false si no usas ninguno: la petición llega del cliente.
fallbackGaragestring''Id de un garaje público que recibe los vehículos cuyo garaje guardado ya no existe. '' = ninguno.
normalizeStatesOnStartbooleanfalsetrue pasa a guardado, al iniciar el recurso, todo vehículo con un estado desconocido. Los incautados se respetan. Útil solo en el primer arranque tras venir de otro recurso de garajes.
vehicleStatetableOUT = 0, STORED = 1, IMPOUND = 2Valores que se escriben en la columna state de la tabla de vehículos. No los cambies.
fuelExemptClassestable[14] = trueClases de vehículo de GTA que siempre se entregan con el depósito lleno. 14 = barcos.

Blips · blips ​

OpciónTipoPor defectoQué hace
garagesbooleantruefalse oculta los blips de todos los garajes y depósitos.
rentalbooleantruefalse oculta los blips de los puntos de alquiler.

El aspecto de cada blip sale de dos tablas:

OpciónQué hace
categoryBlipsSprite y escala según la primera categoría del punto de acceso: car, motorcycle, air, sea. Se consulta primero.
defaultBlipsSprite, color y escala según el tipo de garaje: public, house, job, gang, depot. Solo se usa cuando la categoría no tiene entrada en categoryBlips.

Cada entrada acepta sprite, color y scale. Si falta color, vale 3.

Capacidad · capacity ​

OpciónTipoPor defectoQué hace
enabledbooleanfalsefalse = todos los garajes son ilimitados. true aplica el límite que cada garaje tenga en el panel de administración; los garajes sin límite siguen ilimitados.

El límite es por jugador: cuántos vehículos puede tener una misma persona en ese garaje. Los que están fuera en ese momento también cuentan. Las acciones de staff del panel de administración lo ignoran.

Pagos · payment y recover ​

OpciónTipoPor defectoQué hace
payment.accountstring'bank'Cuenta de la que se cobran transferencias, recuperaciones, tasas de depósito y alquileres. Las fianzas de alquiler se devuelven a ella.
payment.allowCashFallbackbooleantruetrue cobra en efectivo cuando la cuenta no cubre el importe. false rechaza el pago.
recover.pricenumber1000Precio de recuperar un vehículo que quedó fuera. 0 = gratis.

Transferencias · transfer ​

OpciónTipoPor defectoQué hace
maxDistancenumber10.0Metros dentro de los cuales otro jugador puede recibir un vehículo o recibir la petición de pagar una tasa de depósito.
allowPlayerbooleantruefalse desactiva en todos los garajes la transferencia de vehículos a otros jugadores. Con true, cada garaje puede desactivarla desde el panel.

El jugador que recibe ve un aviso y debe aceptar. Un vehículo con financiación pendiente no se puede transferir a otro jugador. El precio de mover un vehículo entre garajes se define por garaje en el panel.

Opciones de vehículo ​

OpciónTipoPor defectoQué hace
cinematic.enterbooleantruetrue previsualiza el vehículo seleccionado en su plaza y, al sacar un vehículo propio, el personaje camina hasta él y se sube con una cámara de seguimiento. false entrega el vehículo directamente, sin previsualización.
nickname.enabledbooleantruefalse desactiva el guardado de apodos de vehículo.
nickname.maxLengthnumber24Máximo de caracteres de un apodo. No pases de 24.
forceBaseLivery.enabledbooleanfalsetrue fuerza la librea base en los vehículos de flota de los trabajos indicados abajo.
forceBaseLivery.jobstabletrabajos de ejemploTrabajos afectados, como nombretrabajo = true. Sustituye los ejemplos por los tuyos.

Integraciones ​

OpciónTipoPor defectoQué hace
finance.enabledbooleanfalseMuestra las cuotas pendientes de los vehículos financiados y deja al dueño pagar desde el garaje. Solo actúa mientras el recurso de abajo está en marcha.
finance.resourcestring'jg-dealerships'Recurso que aporta los datos de financiación.
speakers.enabledbooleanfalseAvisa al recurso de altavoces de que se ha sacado un vehículo con dueño, para que restaure sus altavoces. Solo actúa mientras el recurso de abajo está en marcha.
speakers.resourcestring'rahe-speakers'Recurso al que se avisa.

Llaves de vehículo · data/keys.lua ​

Cada llave es un ítem de inventario que lleva una matrícula. Quien la tiene puede cerrar, abrir y arrancar ese vehículo.

General ​

OpciónTipoPor defectoQué hace
enabledbooleantruefalse apaga todo el sistema de llaves: sin llaves, sin teclas de cierre ni motor, sin robos, sin exports de llaves. Úsalo solo si otro recurso gestiona las llaves.
itemstring'vehiclekeys'Ítem de inventario que hace de llave.
lockDistancenumber8.0Metros desde los que se puede cerrar o abrir un vehículo.
giveOnTakeoutbooleantruetrue entrega la llave cuando el dueño saca el vehículo de un garaje.
removeOnStorebooleantruetrue retira la llave al guardar el vehículo.
getKeysWhenEngineRunningbooleanfalsetrue da la llave a quien se sienta al volante de un vehículo con el motor encendido, cuando ese vehículo no tiene dueño.
lockStatenumber2Estado de bloqueo de puertas de GTA que se aplica al cerrar. 2 = cerrado. Cualquier estado por encima de 1 cuenta como cerrado.
immuneVehiclesstring[]modelo de ejemploModelos en los que no se pueden buscar las llaves.
noLockVehiclesstring[]{}Modelos que no se pueden cerrar. La tecla de cierre siempre los deja abiertos.
ignoreBicyclesbooleantruetrue trata las bicicletas como noLockVehicles y las deja fuera de la búsqueda de llaves.

Teclas y comandos ​

OpciónTipoPor defectoQué hace
keybinds.toggleLocksstring'L'Tecla por defecto para cerrar o abrir el vehículo más cercano.
keybinds.toggleEnginestring'G'Tecla por defecto para encender o apagar el motor desde el asiento del conductor.
keybinds.searchKeysstring'H'Tecla por defecto para buscar las llaves en un vehículo del que no tienes llave.
commands.giveKeystring'givekey'Nombre del comando que entrega tu llave a otro jugador. false elimina el comando.
commands.adminKeystring'adminkey'Nombre del comando de staff que crea una llave. false elimina el comando.

Estas teclas son solo las de por defecto. Cada jugador puede reasignarlas en los ajustes de teclas de GTA.

Llaves compartidas por trabajo · sharedKeys ​

OpciónTipoPor defectoQué hace
enabledbooleantruefalse desactiva las llaves compartidas.
jobstabletrabajos de ejemploPor trabajo: vehicles es la lista de modelos que cualquier miembro puede usar sin llave personal, y requireOnduty = true lo limita a los miembros de servicio.

Los trabajos y modelos del archivo son ejemplos. Sustitúyelos por los tuyos.

Robos ​

OpciónTipoPor defectoQué hace
hotwire.enabledbooleantrueDeja que un jugador al volante sin llave registre el vehículo con la tecla de búsqueda.
hotwire.minTime / maxTimenumber20000 / 40000Duración mínima y máxima de la búsqueda, en milisegundos.
hotwire.chancenumber0.50Probabilidad, de 0 a 1, de que la búsqueda arranque el motor. 0.0 desactiva la búsqueda.
hotwire.keysChancenumber0.10Probabilidad de encontrar además la llave, en una búsqueda con éxito. Nunca en un vehículo con dueño.
hotwire.timeBetweennumber5000Milisegundos antes de que el jugador pueda volver a buscar.
lockpick.normal.itemstring'lockpick'Ítem de la ganzúa básica.
lockpick.normal.breakChancenumber0.4Probabilidad, de 0 a 1, de que la ganzúa se rompa en cada uso.
lockpick.advanced.itemstring'advancedlockpick'Ítem de la ganzúa avanzada. Su prueba de habilidad tiene tres pasos en vez de cuatro.
lockpick.advanced.breakChancenumber0.0Probabilidad de que se rompa la ganzúa avanzada.
carjack.enabledbooleanfalsetrue deja robar un vehículo conducido por un NPC apuntando un arma al conductor.
carjack.timenumber7000Duración del robo, en milisegundos.
carjack.cooldownnumber10000Milisegundos entre intentos.
carjack.chanceByWeaponGrouptablepor grupo de armaProbabilidad de éxito, de 0 a 1, para cada grupo de arma. Un grupo que no esté en la lista siempre falla.
carjack.noWeaponsstring[]cuerpo a cuerpo y arrojadizasArmas con las que no se puede hacer el robo.

Avisos a la policía · dispatch ​

OpciónTipoPor defectoQué hace
enabledbooleantruefalse no envía avisos.
resourcestring'cuxial_police'Recurso que recibe el aviso. '' lo desactiva. No se envía ningún aviso mientras ese recurso no esté en marcha.
chancenumber0.75Probabilidad de aviso durante el día, de 0 a 1.
nightChancenumber0.25Probabilidad de aviso durante la noche.
nightStartHournumber18Hora a la que empieza la noche. Usa el reloj real de la máquina del servidor, no la hora del juego.
nightDurationnumber6Horas que dura la noche.
cooldownnumber10000Milisegundos antes de que el mismo jugador pueda provocar otro aviso.

Los avisos se envían al forzar una cerradura con éxito, en una búsqueda con éxito y en un robo a mano armada con éxito. sounds y animations definen los sonidos, animaciones y props de la llave; funcionan tal como vienen.

Depósito · data/impound.lua ​

OpciónTipoPor defectoQué hace
jobsstring[]trabajos de ejemploTrabajos que pueden incautar con el comando. También tienen acceso a todo depósito que no tenga su propia lista de trabajos en el panel.
defaultPricenumber500Tasa sugerida en el formulario de incautación, y la que se usa cuando no se indica ninguna.
commandstring'impound'Nombre del comando de incautación.
maxDistancenumber5.0Metros dentro de los cuales el comando busca el vehículo más cercano.

Cómo funciona una incautación:

  • El agente se coloca junto al vehículo y usa el comando. El formulario pide la tasa, el motivo, el depósito y si el dueño puede retirar el vehículo por su cuenta.
  • Un vehículo sin dueño simplemente se elimina.
  • Un vehículo ocupado no se puede incautar.
  • En el depósito, el dueño paga la tasa y se lo lleva conduciendo o lo envía a un garaje público. Si el agente bloqueó la retirada, el dueño no puede recuperarlo solo: tiene que liberarlo un trabajo con acceso al depósito.
  • Un trabajo autorizado puede liberar un vehículo y pedir a un jugador cercano que pague. Ese jugador ve un aviso y debe aceptar.

Alquiler · data/rental.lua ​

Los puntos de alquiler, su catálogo y sus precios se crean en el panel de administración. Este archivo define las reglas comunes a todos.

General ​

OpciónTipoPor defectoQué hace
enabledbooleantruefalse apaga el alquiler.
ticketItemstring'rentalticket'Ítem de inventario que representa el contrato. Al usarlo se abre el recibo mientras el alquiler esté activo.
giveTicketItembooleantruefalse alquila sin entregar el ítem. Los contratos se consultan entonces en el punto de alquiler.
platePrefixstring'RENT'Prefijo de la matrícula de los vehículos alquilados, hasta 4 caracteres, seguido de 4 dígitos.
maxActivePerPlayernumber2Alquileres activos que un jugador puede tener a la vez. 0 = sin límite.
interactDistancenumber8.0Metros que el servidor acepta entre el jugador y el punto para alquilar o devolver.
markerDistancenumber16.0Metros a los que aparece el marcador.
openRangenumber1.6Metros a los que un jugador a pie puede abrir el punto.
returnRangenumber5.0Metros a los que un jugador que conduce un alquiler puede devolverlo.
sweepExpressionstring'* * * * *'Cada cuánto se revisan los contratos activos, como expresión cron. Cada minuto por defecto. Un intervalo mayor retrasa los avisos hasta ese intervalo.
license.resourcestring'cuxial_license'Recurso que aporta las licencias. Mientras no esté en marcha, las ofertas que exigen licencia quedan bloqueadas para todos.

Devoluciones tardías · overdue, decay, condition ​

OpciónTipoPor defectoQué hace
overdue.graceSecondsnumber300Segundos tras el fin del contrato sin recargo.
overdue.feePerHournumber250Recargo por hora o fracción de retraso. Se descuenta de la fianza, nunca más que la fianza.
overdue.forfeitAfternumber3600Segundos de retraso tras los cuales el vehículo se retira y se pierde el resto de la fianza.
decay.enabledbooleantruetrue daña el motor de un alquiler vencido mientras alguien lo conduce.
decay.tickMsnumber2000Milisegundos entre cada pérdida de salud del motor.
decay.stagestable3 fasesCada fase tiene after (segundos desde el fin del contrato), engineLoss (salud de motor perdida por tick, sobre 1000), fire = true para dejar el motor muerto y notify (clave de idioma del mensaje al empezar la fase).
condition.minBodyHealthnumber700.0Salud de carrocería, sobre 1000, por debajo de la cual el vehículo cuenta como dañado al devolverlo.
condition.damageFeenumber1500Importe que se descuenta de la fianza por un vehículo dañado.

Si añades una fase con una clave notify nueva, añade la misma clave en locales/en.json y locales/es.json. Una fase sin notify empieza en silencio.

Avisos · warnings ​

OpciónTipoPor defectoQué hace
enabledbooleantruefalse no envía avisos.
beforeMinutesnumber[]{ 30, 10, 0 }Minutos antes del fin en los que se envía un aviso. 0 = al vencer el contrato. No uses pasos más cortos que el intervalo de sweepExpression.
allowExtendFromMailbooleantruetrue añade al correo un botón que amplía el contrato una hora, al precio por hora.
senderstringconfigurableNombre que aparece como remitente del correo.

Los avisos se envían por correo cuando lb-phone está en marcha y el jugador lleva un teléfono equipado. Si no, aparecen como notificación en pantalla.

Valores de un punto nuevo · defaults y blips ​

OpciónTipoPor defectoQué hace
defaults.presetsnumber[]{ 1, 2, 4, 8, 24 }Botones de duración, en horas, de un punto de alquiler nuevo.
defaults.maxHoursnumber24Alquiler más largo de un punto nuevo, en horas.
defaults.depositnumber2000Fianza sugerida para un punto nuevo.
blipstablepor claseBlip (sprite, color, scale) de cada clase de punto: ground, air, sea, mixed.

Limpieza de vehículos · data/carwipe.lua ​

OpciónTipoPor defectoQué hace
enabledbooleantruefalse elimina la limpieza, sus comandos y sus exports.
commandstring'carwipe'Nombre del comando que inicia una limpieza.
cancelCommandstring'cancelwipe'Nombre del comando que la cancela.
adminAcestring'group.admin'Grupo ACE que puede usar los dos comandos.
countdownnumber60Segundos de aviso cuando el comando se usa sin número.
returnOwnedToGaragebooleantruetrue devuelve a su garaje los vehículos con dueño abandonados. false no toca los vehículos con dueño.
protectNearPlayersnumber30.0Los vehículos con dueño que tengan un jugador a esta distancia en metros no se tocan.
deleteNPCVehiclesbooleantruetrue elimina los vehículos sin dueño. false los deja.
occupiedRadiusnumber5.0Radio, en metros, con el que la pasada del servidor considera en uso un vehículo sin dueño.
auto.enabledbooleanfalsetrue ejecuta la limpieza de forma programada.
auto.expressionstring'0 */3 * * *'Programación como expresión cron: minuto, hora, día, mes, día de la semana.
auto.countdownnumber120Segundos de aviso antes de una limpieza programada.
textstabletextos de la cuenta atrásTextos de la cuenta atrás, que se editan en este archivo. urgentThreshold es el número de segundos a partir del cual el contador pasa a urgente.
protectedZonestablezonas de ejemploZonas donde nunca se elimina un vehículo. Sustituye los ejemplos por las tuyas.

Cada zona protegida tiene un type y un name:

TipoCampos
'sphere'coords, radius
'box'coords, size, rotation
'poly'points, minZ, maxZ

Una limpieza trata los vehículos de flota de trabajo y los alquileres como vehículos sin dueño. Para conservarlos, añade a protectedZones los sitios donde se aparcan o pon deleteNPCVehicles = false.

Interacción y marcador · data/zones.lua ​

OpciónTipoPor defectoQué hace
interactDistancenumber8.0Metros que el servidor acepta entre el jugador y el punto de acceso para guardar, sacar o devolver.
markerDistancenumber16.0Metros a los que aparece el marcador de un garaje.
openRangenumber1.6Metros a los que un jugador a pie puede abrir el garaje.
storeRangenumber5.0Metros a los que un conductor puede guardar o devolver el vehículo.
occupiedRadiusnumber2.5Radio con el que se decide que una plaza está ocupada.
marker.texturestablepor tipoTextura del marcador para cada tipo de punto: public, depot, job, rental.
marker.defaultstring'garage'Textura de los tipos que no están en la lista.
marker.sizetable0.819 en cada ejeTamaño del marcador.
marker.rotationtablex = 90, y = 180, z = 0Rotación del marcador.
marker.colortableblanco, a = 230Color y opacidad: r, g, b, a.
marker.heightnumber0.0Altura del marcador sobre el punto de acceso.
marker.bouncetableactivadoMovimiento de subida y bajada: enabled, amplitude, speed.
marker.fallbacktableflecha azulMarcador simple que se dibuja cuando no se puede cargar el archivo de texturas.

Cambios habituales ​

Cobrar solo en efectivo ​

shared/config.lua
lua
payment = {
    account = 'cash',
    allowCashFallback = false,
},

Limitar los vehículos por garaje ​

Activa la opción y después pon el número en cada garaje desde el panel de administración.

shared/config.lua
lua
capacity = {
    enabled = true,
},

Dejar incautar a policía y mecánicos ​

data/impound.lua
lua
jobs = { 'police', 'mechanic' },

Compartir las llaves de una flota de trabajo ​

data/keys.lua
lua
sharedKeys = {
    enabled = true,
    jobs = {
        police = { requireOnduty = true, vehicles = { 'police', 'police2' } },
    },
},

Limpieza diaria a las 4 de la mañana ​

data/carwipe.lua
lua
auto = {
    enabled = true,
    expression = '0 4 * * *',
    countdown = 120,
},

© Cuxial