Todos los ajustes están en shared/config.lua. El catálogo de emotes y algunas listas están en data/. Reinicia el recurso después de cualquier cambio.
General
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
debug | boolean | false | true imprime trazas en la consola. setr cuxial_emotes_debug 1 en server.cfg hace lo mismo sin tocar el archivo. |
Interfaz (ui)
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
accent | string | configurable | Color de acento del menú, en hexadecimal, por ejemplo '#3b82f6'. |
blur | boolean | false | true desenfoca el juego con el menú abierto. |
walkWhileOpen | boolean | true | true permite caminar con el menú abierto. false hace que el menú bloquee el movimiento. |
newEmoteDays | number | 14 | Días que un emote con fecha Added aparece con la marca de «nuevo». |
Staff (admin)
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
permission | string | 'admin' | Permiso que se comprueba a través de cuxial_bridge para gestionar las zonas de emotes y, si commands.syncPos.adminOnly es true, para usar /syncpos. |
Comandos (commands)
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
emote.name | string | 'e' | Comando que reproduce un emote: /e <emote> [variante]. /e c cancela. |
emote.cooldown | number | 1000 | Milisegundos entre dos emotes. |
cancel.enabled | boolean | true | true registra un comando suelto para cancelar. false deja solo la tecla y /e c. |
cancel.name | string | 'c' | Nombre del comando suelto para cancelar. |
menu.name | string | 'animationmenu' | Nombre interno del atajo que abre el menú. |
set.name | string | 'emoteset' | Comando que cambia el set rápido activo: /emoteset <1-6>. |
animEdit.enabled | boolean | true | true activa el editor de posición, tanto el comando como el botón del menú. |
animEdit.name | string | 'animedit' | Nombre del comando del editor de posición. |
animEdit.maxDistance | number | 3.0 | Metros que el jugador puede alejarse del punto inicial mientras edita. |
animEdit.canEditAll | boolean | true | true deja que el comando edite cualquier emote. false lo limita a los emotes en bucle que usan un diccionario de animación. |
syncPos.enabled | boolean | true | true registra el editor de posiciones de emotes en pareja (herramienta de desarrollo). |
syncPos.name | string | 'syncpos' | Nombre de ese comando. |
syncPos.maxDistance | number | 6.0 | Distancia máxima en metros mientras se usa el editor. |
syncPos.adminOnly | boolean | true | true lo restringe al staff. false deja usarlo a cualquiera. |
zones.name | string | 'emotezones' | Comando que abre el panel de zonas. |
zones.restricted | string | 'group.admin' | Grupo ACE autorizado a ejecutar el comando de zonas. |
No cambies menu.name en un servidor en marcha. Es la clave con la que FiveM guarda la tecla de cada jugador: cambiarla reinicia la tecla del menú a todos.
Teclas por defecto (keys)
Son las teclas que recibe un jugador la primera vez que entra. Cada jugador puede cambiarlas en los ajustes de GTA, en la asignación de teclas de FiveM.
| Opción | Por defecto | Acción |
|---|---|---|
menu | F3 | Abrir el menú |
cancel | X | Cancelar el emote actual |
accept | Y | Aceptar un emote en pareja o una sugerencia |
reject | X | Rechazar un emote en pareja o una sugerencia |
pointing | B | Señalar con el dedo |
ragdoll | comma | Tirarse al suelo |
handsUp | H | Manos arriba |
crossArms | G | Cruzar los brazos |
prone | rcontrol | Tumbarse |
crouch | LCONTROL | Agacharse |
photoPanel | h | Modo foto: ocultar o mostrar el panel |
photoFocus | lmenu | Modo foto: liberar o capturar el cursor |
quick | 1 a 5 | Emotes rápidos 1 a 5, pulsados junto con Shift |
Cambiar una tecla por defecto solo afecta a los jugadores que nunca han entrado con el recurso. Los demás conservan la tecla que ya tienen guardada en su juego.
Jugadores muertos (deadCheck)
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | true impide que un jugador muerto use emotes. |
useStateBag | boolean | true | true lee el estado dead del jugador. false pregunta al juego si el personaje está muerto. |
Si cuxial_medical está iniciado, el script le pregunta a él si el jugador está muerto e ignora estas dos opciones.
Emotes (emotes)
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
disableInCar | boolean | false | true bloquea los emotes dentro de un vehículo. |
quickAnims | boolean | true | true activa los emotes rápidos (Shift + 1-5) y el comando de sets. |
maxProps | number | 8 | Máximo de props por emote que se crean en la pantalla de los demás jugadores. |
Lo que se guarda entre sesiones (saving)
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
walkStyle | boolean | true | true recuerda el estilo de caminar elegido. |
expression | boolean | true | true recuerda la expresión elegida. |
Emotes en pareja (sync)
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
distance | number | 10.0 | Metros máximos entre dos jugadores para un emote en pareja. |
pendingMs | number | 30000 | Milisegundos que una solicitud sigue viva sin respuesta. |
cooldownMs | number | 3000 | Milisegundos mínimos entre dos solicitudes o sugerencias del mismo jugador. |
Reportes (report)
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | true acepta los reportes de emotes rotos enviados desde el menú. false los rechaza. |
cooldown | number | 30 | Segundos entre reportes del mismo jugador. |
convar | string | 'cuxial_emotes:report_webhook' | Nombre de la convar de server.cfg que contiene el webhook de Discord. |
Zonas (zones)
Solo se aplica cuando el complemento cuxial_emotes_dlc está iniciado.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
global | boolean | false | true hace que los emotes de zona estén disponibles en todas partes. false los limita a su zona. |
Relaciones (relations)
Estas dos opciones solo se aplican cuando el complemento cuxial_emotes_dlc está iniciado. El resto del módulo se configura en los archivos del propio complemento.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
testShareDistance | number | 3.0 | Metros a los que los demás jugadores ven el resultado de un test ya usado. |
staleSessionSec | number | 900 | Segundos tras los que una sesión colgada se cierra sola. |
Límites (limits)
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
favorites | number | 100 | Favoritos por personaje. |
nameLength | number | 64 | Caracteres máximos del comando de un emote. |
setSlots | number | 6 | Número de sets rápidos. |
setAnims | number | 4 | Máximo de emotes guardados por set. |
recents | number | 15 | Entradas que se guardan en «recientes». |
usage | number | 300 | Emotes distintos con contador de uso. |
usageFlushMs | number | 5000 | Milisegundos mínimos entre dos guardados del contador de uso. |
Archivos de datos
| Archivo | Contenido |
|---|---|
data/manifest.lua | Categorías que aparecen en el menú y su orden. |
data/emotes/*.lua | El catálogo: un archivo por categoría. |
data/tags.lua | Palabras con las que el menú etiqueta los emotes automáticamente para los filtros y el buscador. |
data/weapons.lua | Armas que admiten una animación de apuntado propia. |
data/photomode.lua | Límites del modo foto (distancia, velocidad, zoom, profundidad de campo), controles bloqueados y lista de filtros. |
data/bypass.lua | Excepciones de desarrollo por personaje. Apagadas por defecto. |
locales/*.json | Todos los textos, en inglés y español. |
Deja data/bypass.lua desactivado en producción. Su grupo SharedEmotes hace que los emotes en pareja empiecen sin preguntar al otro jugador.
Cambios habituales
Cambiar el color de acento
ui = {
accent = '#3b82f6',
},Bloquear los emotes en vehículos
emotes = {
disableInCar = true,
},Dejar a todos usar el editor de emotes en pareja
syncPos = { enabled = true, name = 'syncpos', maxDistance = 6.0, adminOnly = false },Añadir un emote propio
Abre el archivo de la categoría que le corresponda, por ejemplo data/emotes/general.lua, y añade una entrada a options:
{
Label = 'Apoyarse en la pared',
Command = 'leanwall',
Dictionary = 'lean@wall',
Animation = 'lean_clip',
Options = {
Flags = { Loop = true, Move = true },
Duration = 4000,
},
Added = '2026-01-15',
},| Campo | Obligatorio | Qué es |
|---|---|---|
Label | Sí | Nombre que se ve en el menú. |
Command | Sí | Se usa con /e. Debe ser único en todo el menú. |
Dictionary / Animation | Sí, salvo con Scenario | Diccionario de animación y clip. |
Scenario | Alternativa | Nombre de un escenario de GTA en lugar de diccionario y clip. |
Options.Flags | No | Loop repite la animación. Move la reproduce en bucle en el torso, así el jugador puede caminar. Stuck la reproduce en el torso y mantiene el último fotograma. |
Options.Duration | No | Duración en milisegundos. |
Options.Props | No | Lista de props: Name, Bone y Placement (dos vec3: posición y rotación). |
Options.EnterEmote | No | Comando de un emote que se reproduce una vez antes de este. |
Options.ExitEmote | No | Nombre de una entrada de data/emotes/exits.lua, que se reproduce al cancelar un emote en bucle. |
Tags | No | Etiquetas extra para los filtros del menú. |
Added | No | Fecha como 'AAAA-MM-DD'. Marca el emote como nuevo durante ui.newEmoteDays días. |
Un emote en pareja necesita además Synchronized = true y Options.Shared.OtherEmote con el comando que hace el otro jugador.
Un diccionario de animación propio necesita su archivo .ycd dentro de la carpeta stream/ del recurso. Los diccionarios nativos de GTA no necesitan nada más.
Los estilos de caminar, las expresiones y los escenarios usan una forma más corta, en data/emotes/walks.lua, expressions.lua y scenarios.lua:
{ Label = 'Brave', Command = 'brave', Walk = 'move_m@brave' },
{ Label = 'Angry', Command = 'angry', Expression = 'mood_angry_1' },
{ Label = 'ATM', Command = 'atm', Scenario = 'PROP_HUMAN_ATM' },Añadir una categoría
- Crea
data/emotes/<archivo>.lua:
return {
id = 'myserver',
name = 'My Server',
label = { es = 'Mi servidor', en = 'My server' },
icon = 'fa-star',
options = {
-- aquí van los emotes
},
}- Añade el nombre del archivo, sin
.lua, acategoriesendata/manifest.lua, en la posición en la que quieras que aparezca.
El menú lee la lista desde ahí. No hay que cambiar nada más.
Campos opcionales de la categoría:
| Campo | Qué hace |
|---|---|
synced = true | Lanza todos sus emotes en pareja. |
hideInAll = true | Deja la categoría fuera del filtro «Todos». |
syncDances = true | Añade una versión sincronizada /e s<comando> de cada emote. La usa la categoría de bailes. |
