EXOTICA NETWORKDocs
Configuración

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

config_server.lua
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

config_server.lua
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

config_server.lua
ServerConfig.PoliceJobs = { 'police', 'sheriff' }
ServerConfig.AmbulanceJobs = { 'ambulance' }
ServerConfig.RequireOnDuty = true
ServerConfig.MechanicJobs = { 'mechanic', 'bennys' }
ServerConfig.BusinessJobs = { 'cardealer', 'lscustom', 'cluckinbell' }
OpciónDescripción
PoliceJobsTrabajos que cuentan como policía.
AmbulanceJobsTrabajos que cuentan como médico.
RequireOnDutyEn QBCore y Qbox, policías y médicos solo cuentan si tienen onduty = true.
MechanicJobsTrabajos que cuentan como mecánico.
BusinessJobsTrabajos 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

config_server.lua
ServerConfig.GetMembership = function(src)
  return 'Sin membresia'
end

Si 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 }.
Ejemplo con una tabla propia
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 }
end

Botón Salir

config_server.lua
ServerConfig.ExitFunction = function(src)
  DropPlayer(src, 'Has salido del servidor. ¡Hasta pronto!')
end

Se ejecuta en el servidor cuando el jugador pulsa Salir. Puedes cambiar el mensaje o guardar datos antes de desconectarlo.

Protección

config_server.lua
ServerConfig.Security = {
  PlayerDataCacheSeconds = 2,
  CallbackCooldownMs = 750,
  AbuseLogThreshold = 25,
}
OpciónDescripción
PlayerDataCacheSecondsSegundos que se reutilizan los datos del jugador antes de volver a consultarlos.
CallbackCooldownMsTiempo mínimo (ms) entre peticiones del mismo jugador a una misma función del servidor.
AbuseLogThresholdPeticiones rechazadas seguidas antes de avisar en la consola de un posible spam.

Más detalles en Seguridad.

En esta página