Skip to main content

Configuration

La configuracion editable esta en shared/config.lua. No hay un normalizador separado como en cold_multichar: cliente y servidor leen este archivo casi tal cual.

Bloque publico actual

Config.Framework = 'auto'
Config.Locale = 'es'
Config.OpenKey = 'T'

Config.HudToggleCommand = 'coldhud'
Config.HudHideCommand = 'coldhide'
Config.HudAutoHideMs = 6000
Config.HudStartPinned = false

Config.NameMode = 'character'

Config.ProximityRange = 20.0
Config.Show3D = true
Config.ThreeDSeconds = 6

Config.CooldownMs = 800

Config.AntiSpam = {
enabled = true,
windowMs = 15000,
warnAt = 5,
muteAt = 8,
autoMuteSeconds = 45,
cooldownStepMs = 180,
cooldownMaxExtraMs = 2200
}

Config.Moderation = {
enabled = true,
acePerm = 'cold.chat.moderator',
defaultMuteSeconds = 300,
maxMuteSeconds = 86400,
commands = {
mute = 'mutechat',
unmute = 'unmutechat',
clearAll = 'clearchatall'
}
}

Config.Mentions = {
enabled = true,
byId = true,
byName = true,
pingSound = true
}

Config.PrivateMessages = {
previewMs = 6500,
pingSound = true
}

Config.MaxMessageLen = 220
Config.EnableOOC = true

Config.OOC = {
proximity = true,
range = 25.0
}

Config.Framework y locale

  • Config.Framework: auto, qbx, qb, esx
  • Con auto, el orden real es qbx -> qb -> esx
  • Config.Locale: por defecto es
  • Config.Locales: tabla opcional para inyectar tus propios textos

Detalle importante:

  • El adaptador qbx detecta qbx_core
  • El adaptador qb detecta qb-core
  • El adaptador esx detecta es_extended

Apertura del chat y HUD

Config.OpenKey = 'T'

Config.HudToggleCommand = 'coldhud'
Config.HudHideCommand = 'coldhide'
Config.HudAutoHideMs = 6000
Config.HudStartPinned = false

Que controla cada valor:

  • OpenKey: tecla registrada para coldchat
  • HudToggleCommand: alterna entre HUD automatico y HUD fijado
  • HudHideCommand: entra o sale del modo oculto
  • HudAutoHideMs: tiempo de auto hide del HUD cuando esta en modo automatico
  • HudStartPinned: si es true, el HUD arranca fijado

Modos internos del HUD:

  • 0: automatico
  • 1: fijado
  • 2: oculto

Config.NameMode

Config.NameMode se pasa a los adaptadores para decidir el nombre visible.

  • character: intenta mostrar nombre del personaje si el framework lo expone
  • Cualquier otro valor acaba cayendo en GetPlayerName

Proximidad y 3D text

Config.ProximityRange = 20.0
Config.Show3D = true
Config.ThreeDSeconds = 6
Config.ThreeDChat = {
maxStack = 3,
maxCharsPerLine = 28,
maxLines = 3,
baseOffsetZ = 0.24,
stackOffsetZ = 0.14,
minScale = 0.23,
maxScale = 0.34,
fadeOutMs = 1200,
fadeStartPct = 0.72,
maxDistance = 20.0,
textAlpha = 255,
types = {
me = { prefix = '* ', suffix = ' *', textColor = {126, 231, 142} },
["do"] = { prefix = '', suffix = '', textColor = {120, 200, 255} }
}
}

Comportamiento real:

  • ProximityRange se usa para /me y /do
  • Show3D habilita o deshabilita el render 3D encima del ped
  • ThreeDSeconds marca la duracion base del texto 3D
  • ThreeDChat.types solo trae estilos para me y do
  • maxStack limita cuantos mensajes 3D simultaneos se apilan por jugador
  • maxCharsPerLine y maxLines recortan el texto visual, no el mensaje original del chat

Cooldown y anti-spam

Config.CooldownMs = 800

Config.AntiSpam = {
enabled = true,
windowMs = 15000,
warnAt = 5,
muteAt = 8,
autoMuteSeconds = 45,
cooldownStepMs = 180,
cooldownMaxExtraMs = 2200
}

Logica real:

  • Siempre existe un cooldown base de Config.CooldownMs
  • Si AntiSpam.enabled = true, el recurso suma penalizacion extra cuando el jugador insiste
  • warnAt lanza aviso de spam
  • muteAt aplica auto mute temporal
  • cooldownStepMs aumenta la espera por mensaje dentro de la ventana
  • cooldownMaxExtraMs pone techo a esa penalizacion adicional

Moderacion

Config.Moderation = {
enabled = true,
acePerm = 'cold.chat.moderator',
defaultMuteSeconds = 300,
maxMuteSeconds = 86400,
commands = {
mute = 'mutechat',
unmute = 'unmutechat',
clearAll = 'clearchatall'
}
}

Notas utiles:

  • enabled = false evita registrar los comandos
  • acePerm es el permiso que mira canModerate
  • La consola del servidor (src == 0) siempre puede usar moderacion
  • defaultMuteSeconds se usa cuando no pasas segundos
  • maxMuteSeconds limita el mute manual

Menciones y mensajes privados

Config.Mentions = {
enabled = true,
byId = true,
byName = true,
pingSound = true
}

Config.PrivateMessages = {
previewMs = 6500,
pingSound = true
}
  • Mentions.enabled: activa o corta toda la deteccion de @
  • byId: permite @12
  • byName: permite @NombreJugador
  • pingSound: sonido al recibir mencion
  • PrivateMessages.previewMs: tiempo de preview visual de PM
  • PrivateMessages.pingSound: sonido al recibir PM

OOC y longitud de mensajes

Config.MaxMessageLen = 220
Config.EnableOOC = true

Config.OOC = {
proximity = true,
range = 25.0
}
  • MaxMessageLen: recorte duro tras limpiar saltos de linea
  • EnableOOC = true: texto sin slash se trata como ooc
  • EnableOOC = false: texto sin slash pasa a tipo ic
  • OOC.proximity = true: el ooc se manda por rango
  • OOC.range: distancia de ese ooc

Config.Suggestions

El bloque Config.Suggestions rellena la lista de sugerencias que se envia a la NUI y al recurso chat.

Comandos incluidos por defecto:

  • /me
  • /do
  • /ooc
  • /pm
  • /reply
  • /id
  • /clear
  • /pd
  • /ems
  • /mec
  • /mutechat
  • /unmutechat
  • /clearchatall

Config.Layout

Config.Layout = {
x = 24,
y = 24,
w = 420,
h = 520,
minW = 320,
maxW = 720,
minH = 300,
maxH = 820
}

Este bloque define la caja inicial del panel y sus limites de resize.

Config.Announcements

Config.Announcements = {
enabled = true,
ttlMs = 12000,
cooldownMs = 2500,
maxStack = 3,

police = {
enabled = true,
command = 'pd',
color = '#7cc7ff',
useAce = false,
acePerm = 'cold.chat.police',
jobs = { 'police', 'sheriff' }
},

ems = {
enabled = true,
command = 'ems',
color = '#ff6b6b',
useAce = false,
acePerm = 'cold.chat.ems',
jobs = { 'ambulance', 'ems' }
},

mechanic = {
enabled = true,
command = 'mec',
color = '#ffb86b',
useAce = false,
acePerm = 'cold.chat.mec',
jobs = { 'mechanic' }
}
}

Cada bloque de anuncio controla:

  • enabled
  • command
  • label
  • color
  • useAce
  • acePerm
  • jobs

Si useAce = false, el permiso sale del job devuelto por el adaptador. Si useAce = true, usa ACE y se olvida del trabajo.