config_server.lua (servidor)
Staff, moneda premium, contadores de servicio, membresía, botón Salir y protección
config_server.lua se carga solo en el servidor y nunca se envía a los jugadores. Los rankings, el multitrabajo y las recompensas también están aquí y tienen su propia página:
Staff
ServerConfig.StaffGroups = {
['admin'] = true,
['superadmin'] = true,
['mod'] = true,
['moderator'] = true,
['staff'] = true,
['owner'] = true,
['god'] = true,
}Define quién cuenta como staff: el contador de staff conectado, los comandos de staff y los rankings privados.
Se compara el grupo del jugador (xPlayer.getGroup()) con las claves de la tabla. Escribe las claves en minúsculas.
Moneda premium
ServerConfig.CurrencyItem = 'exoticacoins'
ServerConfig.CurrencyLabel = 'ExoticaCoins'Para mostrar el saldo, primero se busca una cuenta del framework con ese nombre y, si no existe, un item del inventario. CurrencyLabel es el nombre que ve el jugador.
Contadores de servicio
ServerConfig.PoliceJobs = { 'police', 'sheriff' }
ServerConfig.AmbulanceJobs = { 'ambulance' }
ServerConfig.RequireOnDuty = true
ServerConfig.MechanicJobs = { 'mechanic', 'bennys' }
ServerConfig.BusinessJobs = { 'cardealer', 'lscustom', 'cluckinbell' }| Opción | Descripción |
|---|---|
PoliceJobs | Trabajos que cuentan como policía. |
AmbulanceJobs | Trabajos que cuentan como médico. |
RequireOnDuty | En QBCore y Qbox, policías y médicos solo cuentan si tienen onduty = true. |
MechanicJobs | Trabajos que cuentan como mecánico. |
BusinessJobs | Trabajos que cuentan como negocio. También filtra el ranking de negocios: solo aparecen estos trabajos. |
Mecánicos y negocios cuentan a todos los jugadores con ese trabajo, estén o no de servicio. Los contadores se actualizan cada 3 segundos como máximo.
Si usas origen_police en ESX, los contadores de policía y médicos usan su propio estado de servicio. Más en Integraciones.
Membresía / VIP
ServerConfig.GetMembership = function(src)
return 'Sin membresia'
endSi tu Config.VipResource expone GetPauseMenuData(src), se usa su respuesta. Si no, se usa esta función, que puede devolver:
- un texto, por ejemplo
'VIP Oro'; - o una tabla
{ active = true, label = 'VIP Oro', secondsLeft = 86400 }.
ServerConfig.GetMembership = function(src)
local vip = exports['mi_vip']:GetVip(src)
if not vip then return 'Sin membresia' end
return { active = true, label = vip.rango, secondsLeft = vip.segundosRestantes }
endBotón Salir
ServerConfig.ExitFunction = function(src)
DropPlayer(src, 'Has salido del servidor. ¡Hasta pronto!')
endSe ejecuta en el servidor cuando el jugador pulsa Salir. Puedes cambiar el mensaje o guardar datos antes de desconectarlo.
Protección
ServerConfig.Security = {
PlayerDataCacheSeconds = 2,
CallbackCooldownMs = 750,
AbuseLogThreshold = 25,
}| Opción | Descripción |
|---|---|
PlayerDataCacheSeconds | Segundos que se reutilizan los datos del jugador antes de volver a consultarlos. |
CallbackCooldownMs | Tiempo mínimo (ms) entre peticiones del mismo jugador a una misma función del servidor. |
AbuseLogThreshold | Peticiones rechazadas seguidas antes de avisar en la consola de un posible spam. |
Más detalles en Seguridad.
