Zerix Development

Wie mag in dienst?

Lagen die bepalen of iemand staffdienst mag gebruiken (identifiers, panel, ACE, framework-groups).

isStaff(source) in Z-staff is waar bij de eerste match, in deze volgorde:

1. Config.allowedIdentifiers

Discord-ID, license: of license2:. Prefix is optioneel. Alleen het nummer mag ook (wordt als Discord behandeld).

Config.allowedIdentifiers = {
    'discord:1397307295502696480',
    -- '123456789012345678',
    -- ['discord:123456789012345678'] = 'owner',
    -- 'license:xxxxxxxx',
}
  • Lijst-item ('discord:…') = mag in dienst, en het panel krijgt grantStaff (fallback-rank, default owner).
  • Map-item (['discord:…'] = 'admin') = mag in dienst; de rank-string wordt door het panel gebruikt via GetAllowedIdentifiers.

Bij een match roept dienst meteen exports['Z-staff']:grantStaff(source) aan.

2. Panel-rank

Als Z-staff started is:

  1. exports['Z-staff']:getStaff(source)
  2. Zo niet: exports['Z-staff']:refreshStaff(source) (Discord/licenses opnieuw)

Heeft de speler een rank in het panel, dan mag hij in dienst — ook zonder in allowedIdentifiers te staan. Dit is de normale weg voor het hele team (Discord-rollen).

3. ACE

Config.staffAces = {
    'group.erpstaff',
    'group.admin',
    'group.god',
    'group.mod',
}

IsPlayerAceAllowed(source, ace) — bij match opnieuw grantStaff.

4. Framework-groups

ESX

Config.esxGroups = {
    superadmin = true,
    admin = true,
}

xPlayer.getGroup() moet een key in deze map zijn. moderator staat hier niet standaard; die komt binnen via Discord of het panel EsxGroupMap.

Qbox / QBCore

Config.qbGroups = {
    god = true,
    admin = true,
    mod = true,
}

Qbox: exports.qbx_core:HasGroup. QBCore: Functions.HasPermission / PlayerData.groups. Alleen keys die true zijn tellen.

Wat gebeurt er als niemand matcht?

Notify: “Je hebt geen toegang tot staffdienst.”\ Het panel opent daarna ook niet, omdat duty nooit true wordt.

Identifier-matching (technisch)

De resource bouwt een set van aliases per speler:

  • ruwe waarde (discord:123)
  • lowercase
  • zonder prefix (123)
  • met prefix als je alleen een getal opgaf (discord:123)

Daardoor werken deze vormen allemaal:

1397307295502696480
discord:1397307295502696480
DISCORD:1397307295502696480

Hetzelfde voor license: / license2:.

Zet owners altijd in beide configs: LicenseOverrides (panel, bepaalt rank) én allowedIdentifiers (dienst, poort). Dan werkt inloggen ook als Discord even down is.