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 esqbx -> qb -> esx Config.Locale: por defectoesConfig.Locales: tabla opcional para inyectar tus propios textos
Detalle importante:
- El adaptador
qbxdetectaqbx_core - El adaptador
qbdetectaqb-core - El adaptador
esxdetectaes_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 paracoldchatHudToggleCommand: alterna entre HUD automatico y HUD fijadoHudHideCommand: entra o sale del modo ocultoHudAutoHideMs: tiempo de auto hide del HUD cuando esta en modo automaticoHudStartPinned: si estrue, el HUD arranca fijado
Modos internos del HUD:
0: automatico1: fijado2: 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:
ProximityRangese usa para/mey/doShow3Dhabilita o deshabilita el render 3D encima del pedThreeDSecondsmarca la duracion base del texto 3DThreeDChat.typessolo trae estilos parameydomaxStacklimita cuantos mensajes 3D simultaneos se apilan por jugadormaxCharsPerLineymaxLinesrecortan 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 warnAtlanza aviso de spammuteAtaplica auto mute temporalcooldownStepMsaumenta la espera por mensaje dentro de la ventanacooldownMaxExtraMspone 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 = falseevita registrar los comandosacePermes el permiso que miracanModerate- La consola del servidor (
src == 0) siempre puede usar moderacion defaultMuteSecondsse usa cuando no pasas segundosmaxMuteSecondslimita 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@12byName: permite@NombreJugadorpingSound: sonido al recibir mencionPrivateMessages.previewMs: tiempo de preview visual de PMPrivateMessages.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 lineaEnableOOC = true: texto sin slash se trata comooocEnableOOC = false: texto sin slash pasa a tipoicOOC.proximity = true: eloocse manda por rangoOOC.range: distancia de eseooc
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:
enabledcommandlabelcoloruseAceacePermjobs
Si useAce = false, el permiso sale del job devuelto por el adaptador. Si useAce = true, usa ACE y se olvida del trabajo.