Skip to content

Configuración

Todas las opciones de Cuxial Multichar: huecos, Discord, registro, menores, aparición, escena y pantalla de carga.

Todo se ajusta en shared/config.lua. Las ubicaciones, el contenido de la pantalla de carga y las nacionalidades están en la carpeta data. Reinicia el recurso después de cada cambio.

General ​

OpciónTipoPor defectoQué hace
debugbooleanfalseMuestra mensajes de depuración en la consola
ui.accentstringconfigurableColor de acento de la interfaz y de la pantalla de carga, en hexadecimal
hudfunctionvacíaSe llama con false cuando la selección se abre y con true cuando se cierra. Úsala para ocultar y mostrar tu HUD. El minimapa se oculta sin ella
shared/config.lua
lua
hud = function(visible)
    exports.mi_hud:setVisible(visible)
end,

Personajes ​

OpciónTipoPor defectoQué hace
characters.slotsnumber3Personajes que puede tener cualquier jugador
characters.maxSlotsnumber10Tope absoluto. Ningún rol ni ID de usuario lo supera
characters.allowDeletebooleantruetrue deja a los jugadores borrar sus propios personajes

Huecos por Discord ​

Da más personajes a roles o usuarios concretos de Discord.

OpciónTipoPor defectoQué hace
discordSlots.enabledbooleanfalsetrue activa los huecos extra por rol y por ID de usuario
discordSlots.roleslistavacíaEntradas { id = 'ID_DEL_ROL', slots = N }. Necesita las convars del bot
discordSlots.userstablavacíaEntradas ['ID_DE_USUARIO_DE_DISCORD'] = N. Funciona sin el bot
discordSlots.cacheMinutesnumber10Minutos que se recuerdan los roles de un jugador antes de volver a pedirlos a Discord
discordSlots.timeoutMsnumber4000Milisegundos de espera a Discord. Si no contesta, el jugador se queda con los huecos base

Cómo se calcula el número final:

  • slots en un rol o en un usuario es el número total de personajes, no una suma.
  • Si un jugador coincide con varias entradas, gana el número más alto.
  • El resultado nunca baja de characters.slots ni pasa de characters.maxSlots.
  • El jugador necesita Discord vinculado a FiveM. Sin él, recibe los huecos base.

El token del bot y el ID del servidor son convars, no opciones del config. Mira Instalación.

Registro ​

OpciónTipoPor defectoQué hace
register.name.min / maxnumber2 / 32Longitud permitida del nombre y del apellido
register.dob.formatstring"DD-MM-YYYY"Formato de fecha: DD-MM-YYYY, YYYY-MM-DD o MM-DD-YYYY
register.dob.minYearnumber1950Año de nacimiento más antiguo aceptado
register.minAgenumber18Edad mínima de un personaje adulto
register.height.enabledbooleantrueMuestra el campo de estatura
register.height.min / maxnumber150 / 200Rango de estatura en cm
register.backstory.enabledbooleantrueMuestra el campo de historia
register.backstory.min / maxnumber10 / 300Longitud permitida de la historia

La lista de nacionalidades está en data/nationalities.lua.

Personajes menores ​

Un menor se crea como solicitud. El jugador elige a los progenitores y escribe una motivación, y el staff la aprueba o la rechaza. Hasta que se aprueba, no se puede jugar con el personaje.

OpciónTipoPor defectoQué hace
family.enabledbooleantrueActiva los personajes menores
family.minAge / maxAgenumber6 / 17Rango de edad de un menor
family.motivation.min / maxnumber30 / 600Longitud permitida de la motivación
family.height.minnumber100Estatura mínima de un menor en cm
family.height.maxtablamale = 168, female = 158Estatura máxima según el género
family.adultHeighttablamale = 182, female = 170Estatura adulta de referencia. El personaje se escala como su estatura dividida entre este valor
family.growthCommandstring"height"Comando con el que el menor cambia su estatura. false lo quita
family.scaleRadiusnumber60.0Distancia en metros dentro de la cual se ve a los demás jugadores escalados
family.rejectCooldownHoursnumber24Horas de espera tras un rechazo antes de enviar otra solicitud. 0 lo desactiva
family.allowOwnParentbooleanfalsetrue permite elegir como progenitores a personajes de la propia cuenta
family.maxPendingnumber1Solicitudes pendientes permitidas por jugador

Las solicitudes se revisan mediante los exports.

Aparición ​

OpciónTipoPor defectoQué hace
spawn.newCharactervec4—Dónde se coloca un personaje nuevo mientras se abre el creador de apariencia
spawn.birthvec4—Dónde aparece un personaje nuevo al salir del creador. false omite este traslado
spawn.registerPreviewvec4—Dónde se muestra el personaje durante la creación
spawn.registerReferencevec4—Dónde se coloca la referencia adulta al ajustar la estatura de un menor
spawn.fallbackvec4—Se usa cuando un personaje no tiene posición guardada o no hay ubicación disponible
spawn.apartmentsstring / boolean"auto""auto" usa apartamentos iniciales si qbx_properties está en marcha y el framework los tiene activados. true / false lo fuerza. Con apartamentos se omiten el creador de apariencia y el traslado a spawn.birth

Los personajes que ya existen aparecen siempre en su última posición guardada.

Escena ​

OpciónTipoPor defectoQué hace
scene.randomLocationbooleantruetrue elige una ubicación al azar cada vez. false usa siempre la primera de la lista
scene.emoteslistatexting, idle3, smoke2Comandos de emote que se reproducen al azar cuando la ubicación no tiene emote propio. Necesita cuxial_emotes
scene.fallbackScenariostring"WORLD_HUMAN_STAND_MOBILE"Escenario que se usa cuando cuxial_emotes no está en marcha
scene.posturestring"side""side" respeta la orientación de la ubicación. "front" gira al personaje hacia la cámara
scene.depthOfFieldbooleantrueDesenfoque del fondo. El jugador puede quitarlo con el modo FPS
scene.cameraDistancenumber2Distancia de cámara por defecto: 1 cerca, 2 lejos

Ubicaciones ​

data/locations.lua contiene los lugares donde se muestran los personajes.

data/locations.lua
lua
{ label = 'Rockford Hills', coords = vec4(-852.73, -226.99, 61.02, 354.04) },

{
    label = 'Comisaría',
    coords = vec4(444.37, -984.33, 30.69, 71.35),
    groups = { 'police' },
    emote = { scenario = 'WORLD_HUMAN_COP_IDLES' },
},
CampoQué hace
labelNombre de la ubicación
coordsPosición y orientación del personaje
groupsNombres de trabajo o banda. La ubicación solo se usa con personajes que pertenezcan a alguno, y esos personajes solo reciben ubicaciones de su grupo
emote{ command = '...' } para un emote o { scenario = '...' } para un escenario de GTA
camerafront (por defecto), back, close o free
cameraCoords, fov, focusOffset, blurPosición y óptica de la cámara, solo con camera = 'free'. cameraCoords es obligatorio en ese modo
scene'bar' reproduce la animación de apoyarse con los props definidos en data/scenes.lua

data/vehicle_locations.lua contiene los puntos que se usan cuando el personaje posa con un vehículo. data/scenes.lua contiene las animaciones de las escenas de barra, pareja, mejor amigo y vehículo.

Carné, vehículos y pareja ​

OpciónTipoPor defectoQué hace
idCard.enabledbooleantrueMuestra el carné real mientras se crea el personaje
idCard.resourcestring"cuxial_license"Recurso que aporta el carné
idCard.itemstring"id_card"Objeto cuyo carné se usa
idCard.cardIdstringnilID de un carné concreto. nil lo deduce del objeto
vehicles.enabledbooleantrueDeja al jugador elegir un vehículo propio para la escena
vehicles.resourcestring"cuxial_garages"Recurso que tiene que estar en marcha para esta función
vehicles.spotCommandstring / booleanfalseNombre de un comando que copia tu vec4 actual al portapapeles, para rellenar data/vehicle_locations.lua
partner.enabledbooleantrueActiva las escenas de pareja y de mejor amigo
partner.maxDistancenumber10.0Distancia máxima en metros para invitar a alguien
partner.inviteSecondsnumber60Segundos que dura abierta una invitación
partner.invitesPerMinutenumber3Invitaciones que puede enviar un jugador por minuto
partner.commands.invitestring"partnerinvite"Nombre del comando de invitación
partner.commands.forcetablaforcepartner, group.adminname y restricted (permiso) del comando de staff

Mundo ​

Clima y hora que se ven en la selección. Cada jugador puede cambiarlos en sus ajustes.

OpciónTipoPor defectoQué hace
world.enabledbooleantruefalse no toca el clima ni la hora del servidor
world.weatherstring"XMAS"Tipo de clima de GTA
world.hour / minutenumber23 / 30Hora del día

Pantalla de carga y música ​

OpciónTipoPor defectoQué hace
loading.enabledbooleantruefalse cierra la pantalla de carga nada más empezar
loading.autoEnterbooleanfalsetrue entra a la selección sin el botón de comenzar
loading.handoffMsnumber2400Duración de la transición hacia la selección, en milisegundos
loading.timeoutMsnumber60000Límite de seguridad en milisegundos. La pantalla de carga se cierra si la transición no llega
loading.debugbooleanfalseSalida de depuración de la pantalla de carga
music.enabledbooleantrueMúsica en la pantalla de carga y en la selección
music.filestring""Ruta dentro de web/build de la pista que se usa cuando data/loading.lua no tiene lista de pistas
music.scalenumber0.35Multiplicador de volumen sobre el volumen que elige el jugador
music.analysebooleantrueHace que la interfaz reaccione al ritmo

El contenido se edita en data/loading.lua:

CampoQué hace
background.videoArchivo de vídeo dentro de web/build, o una URL. Vacío por defecto: sin vídeo, fondo oscuro con partículas
background.dim, blurOscurecido (de 0 a 1) y desenfoque del vídeo
background.loop, startAtRepetir el vídeo y segundo en el que empieza
background.sound'auto' detecta si el vídeo tiene sonido. true / false lo fuerza
background.title, artistSe muestran en el reproductor cuando el sonido es el del vídeo
tipSecondsSegundos que cada consejo permanece en pantalla
tracksLista de reproducción: { id, url, title, artist }. Vacía por defecto: sin música
tipsConsejos: { id, category, title, text }
keysGuía de teclas: { id, keys, label, category, description }

El paquete no incluye vídeo ni música. Pon tus archivos en web/build/video y web/build/music, creando las carpetas si faltan, y añádelos en data/loading.lua. Usa vídeo .webm y audio .ogg.

Objetos iniciales, comandos y registros ​

OpciónTipoPor defectoQué hace
starterItemslistaphone, id_card, driver_license{ item, amount }. identity = true rellena el objeto con el nombre, la fecha de nacimiento y la nacionalidad del personaje. metadata fija metadatos propios
commands.logouttablalogout, group.adminname y restricted (permiso) del comando. restricted = false lo abre a todos
commands.logoutPlayertablalogoutplayer, group.adminname y restricted (permiso) del comando
logs.enabledbooleantrueEnvía registros a Discord cuando la convar del webhook está definida
logs.convarstring"cuxial_multichar_webhook"Nombre de la convar que guarda el webhook
logs.usernamestring"Multicharacter"Nombre que muestra el webhook

Cambios habituales ​

lua
discordSlots = {
    enabled = true,
    roles = {
        { id = '123456789012345678', slots = 5 },
    },
},

© Cuxial