Cómo funcionan las integraciones#
El clima y la hora no dependen de ningún framework: las zonas, los ciclos, el reloj y todos los efectos funcionan igual en ESX, QBCore, Qbox o sin ninguno. El framework solo responde quién es este jugador y en qué grupo está, mediante un pequeño archivo adaptador por framework. Todo lo demás se detecta al arrancar y se hace a un lado si falta.
Capa | Compatible | Sin ella |
|---|---|---|
Framework |
| Funciona en modo standalone. Todo funciona; el acceso a los paneles lo decide solo ACE. |
Permisos | ACE en todos los frameworks, además de los grupos | — |
Notificaciones |
| ox_lib, que de todos modos es una dependencia. El feed propio del juego como último recurso. |
HUD |
| El HUD sigue en pantalla mientras hay un panel abierto. |
Teléfono |
| Las alertas de emergencia solo se muestran en pantalla. |
Avisos 3D |
| Se dibujan con el texto propio del juego y un recuadro de fondo. |
Scripts de clima | Sustituye a | Consulta Reemplazar scripts de clima. |
Base de datos |
| Obligatoria. La única. |
Cada integración opcional se desactiva sin hacer ruido. Si falta un recurso, su parte se retira en lugar de lanzar un error. La línea de consola
framework resolvedal arrancar es la forma más rápida de ver qué se eligió.
Frameworks#
El framework se detecta en config/config.lua a partir de los recursos que ya están en marcha cuando arranca Zone Weather:
local frameworks = {
['es_extended'] = 'esx',
['qb-core'] = 'qb',
['qbx_core'] = 'qb',
}
Config.Framework = DependencyCheck(frameworks) or 'standalone'Qbox usa el adaptador de QBCore. Para omitir la detección —dos frameworks instalados, o uno renombrado en tu servidor— define el valor a mano después de esa línea:
Config.Framework = 'esx' -- 'esx' · 'qb' · 'standalone' · or your own adapter's nameAñadir un framework#
Cada adaptador es un par de archivos pequeños y sin cifrar en custom/<name>/. Dar soporte a otro framework es una carpeta más dos líneas:
Copia el adaptador más parecido
Copia
custom/esx/(ocustom/standalone/para lo mínimo) acustom/myframework/.Completa las funciones
Cada archivo devuelve una tabla de funciones que llaman a tu framework:
lua -- custom/myframework/client.lua framework:getObject() -- the core object framework:getPlayerData() -- the local player's data table framework:getIdentifier() -- their identifier framework:isLoaded() -- true once the character is in framework:onPlayerLoaded(cb) -- call cb when the character loads -- custom/myframework/server.lua framework:getObject() framework:isReady() framework:getPlayerFromId(src) framework:getIdentifier(src) framework:getName(src) framework:getGroup(src) -- the admin group, or nil to rely on ACERegístralo
Añade el archivo de cliente a la lista
filesenfxmanifest.lua, junto a los adaptadores existentes, para que los clientes puedan cargarlo; luego apuntaConfig.Frameworka él, o añade su recurso a la tabla de detección de arriba:lua -- fxmanifest.lua, inside files { ... } 'custom/myframework/client.lua', -- config/config.lua ['my_core'] = 'myframework',
Si un adaptador no se carga, la consola indica qué archivo y por qué, y el recurso sigue en modo standalone.
Permisos#
Cada panel comprueba su propio nodo ACE: command.weather, command.weatherconfig y command.weathercreator. Con un framework en marcha, primero se comprueba el grupo del jugador en el framework — admin y superadmin en ESX — y ACE es la alternativa para todos los demás; en standalone solo se usa ACE. La comprobación se hace en el servidor en cada acción, no solo al abrir un panel.
Notificaciones y el HUD#
Notificaciones#
Cada mensaje que muestra el recurso —un clima aplicado, una zona guardada, una alerta de emergencia— pasa por una sola función, Notification en custom/client.lua. Usa qs-interface cuando está en marcha, luego ox_lib y luego el feed del juego. Para usar otro recurso de notificaciones, cambia esa única función:
-- custom/client.lua
-- type: 'info' · 'success' · 'warning' · 'error'
-- duration: milliseconds, set for long messages such as emergency alerts
function Notification(msg, type, duration)
exports['my_notify']:Show(msg, type, duration or 5000)
endEl título que muestran es Notification title en Settings → General.
Ocultar el HUD#
Mientras hay un panel abierto, el HUD del jugador se oculta, y vuelve cuando se cierra el último. qs-interface ya está conectado; añade cualquier otro HUD a la tabla en client/custom/hud.lua:
QSW.HudResources = {
['qs-interface'] = function(visible)
exports['qs-interface']:ToggleHud(visible)
end,
['my-hud'] = function(visible)
exports['my-hud']:SetVisible(visible)
end,
}Solo se llama a los recursos que están iniciados, así que incluir un HUD que no usas no causa ningún problema.
qs-smartphone#
Con qs-smartphone en marcha, una alerta de emergencia también se envía como notificación larga al teléfono de cada jugador afectado: todos los que están en la zona, o todos en el caso de un tsunami. Lleva el desastre en el título, la zona debajo y las instrucciones completas con la cuenta atrás, y se queda en el centro de notificaciones del teléfono si estaba cerrado.
Llega como la app Emergency Alert, en el idioma del servidor. Los jugadores pueden silenciarla desde los ajustes del teléfono como cualquier otra app.
Un jugador sin teléfono activo simplemente no la recibe.
Desactívala con Phone notification en Settings → Emergency alerts.
State bags#
Con Publish state bags activado (por defecto), el clima y la hora se reflejan en state bags, así que cualquier recurso puede leerlos sin llamar a un export:
State bag | Contiene |
|---|---|
| El clima activo en esa zona. |
|
|
| Si el apagón está activo. |
| En cada cliente: la zona en la que está el jugador. |
| En cada cliente: el clima bajo el que está ese jugador. |
-- any client script
if GlobalState.weatherBlackout then
-- the power is out
end
local clock = GlobalState.weatherTime
if clock and clock.hour >= 22 then
-- night
endLos dos valores LocalPlayer se quedan en la máquina de ese jugador; el servidor no los ve.
Idiomas#
Se incluyen 41 traducciones en locales/, que cubren los paneles, las notificaciones y las alertas de emergencia. Elige una en Settings → General → Language; cambia para todos los jugadores en cuanto guardas.
ar · bg · bn · ca · cs · da · de · el · en · es · et · fa · fi · fr · he · hi · hr · hu · id · it · ja · ko · lt · lv · ms · nl · no · pl · pt · ro · ru · sk · sl · sv · sw · th · tr · uk · ur · vi · zh
Para cambiar un texto —la redacción de una alerta, el nombre de un clima—, edítalo en el archivo de ese idioma y reinicia el recurso. Todo lo que falte en una traducción usa el inglés.



