Zerix Development

Wat is dit?

Architectuur van Z-staff en Z-staff, voor ESX, Qbox en QBCore.

Z-staff is één resource voor in- en uitdienst, staffkleding en toegang.

Het is één pack. Framework (ESX / Qbox / QBCore) wordt automatisch gedetecteerd. Zie Framework.

Verantwoordelijkheden

Z-staff

  • Command `/staffdienst` (toggle in/uit dienst)
  • Controleren of de speler staff is
  • Civiele kleding opslaan en staff-outfit aantrekken
  • Metadata staffdienst bewaren (duty + clothing)
  • State bag staffdienst zetten (client + server)
  • Panel vertellen dat duty aan of uit is (exports.setDuty)
  • Bij uitdienst het panel dwingen te sluiten (erp-staff:client:dutyOff)

Z-staff

  • Rank bepalen (Discord, license, ACE, database, ESX-groups of QB/Qbox-groups)
  • ACE-principals zetten (group.mod / group.admin / group.god + group.erpstaff)
  • NUI Z-staff (dashboard, spelers, reports, bans, tools, wereld, server, logs)
  • Moderatie: warn / kick / ban / unban
  • Bancheck bij playerConnecting
  • Audit logs + Discord webhooks
  • Staff-uren in erp_staff_duty (of jouw Config.Database.duty)
  • Reports via /report

Startvolgorde

Altijd dienst vóór panel. Start alleen jouw framework:

ensure oxmysql
ensure ox_lib
ensure es_extended   # of qb-core / qbx_core
ensure Z-staff
ensure Z-staff

Z-staff heeft Z-staff als dependency. Als dienst niet draait, start het panel niet.

Dataflow bij in dienst gaan

  1. Speler typt /staffdienst.
  2. Z-staff checkt IsStaff:
  • Config.allowedIdentifiers
  • Panel-export getStaff / refreshStaff
  • ACE (group.erpstaff, group.admin, …)
  • ESX group (Config.esxGroups) of QB/Qbox group (Config.qbGroups)
  1. Client stuurt huidige kleding terug (getClothing).
  2. Server zet:
  • dutyBySource[src] = true
  • Player(src).state.staffdienst = true
  • metadata staffdienst = { onduty = true, clothing = ... }
  1. Server roept exports['Z-staff']:setDuty(src, true) aan.
  2. Panel schrijft clock-in in de duty-tabel en logt duty_in.
  3. Client speelt progressbar, trekt outfit aan, toont “Je bent nu in dienst…”.

Dataflow bij het panel openen

  1. Speler drukt F10 of typt /staff.
  2. Client checkt LocalPlayer.state.staffdienst of exports['Z-staff']:IsOnDuty().
  3. Server checkt duty + rank.
  4. NUI krijgt payload: rank, perms, locaties, weers, ban-durations, wapens.
  5. Knoppen onder het rank-level worden niet getoond.

Wat gebeurt er bij uit dienst?

  • Staffkleding uit, civiele kleding terug
  • Panel sluit als het openstaat
  • Noclip, godmode, invis, superjump, infinite ammo, vehicle god, IDs, namen, blips, spectate gaan uit
  • Clock-out + duration in de duty-tabel
  • Log duty_out

Bestandsstructuur

Z-staff/
  fxmanifest.lua
  config.lua
  shared/framework.lua
  client/main.lua
  server/main.lua

Z-staff/
  fxmanifest.lua
  config.lua
  README.md
  sql/install.sql
  shared/   framework.lua
  client/   notify.lua, main.lua, self.lua, noclip.lua, spectate.lua, overlays.lua
  server/   bridge.lua, main.lua, permissions.lua, discord.lua, moderation.lua,
            players.lua, reports.lua, world.lua, utils.lua
  html/     index.html, style.css, app.js

Event-namen in het panel beginnen nog met erp-staff: (historisch). De resource zelf heet Z-staff. Dit is geen extra resource die je moet starten.