The exports and the event
Both exist on the server only. A call on the client returns nil, with no error and no line in the log.
exports.skillry_lizenz:Gilt() --> true | false | nil
exports.skillry_lizenz:Stand() --> table, never nil
nil is one of three answers, not a "no"
Gilt() returns nil while the first answer is outstanding. Writing if not Gilt() then StopResource(…) stops your resource in the first seconds after every start. true also comes back when the check is switched off entirely — if nothing is being checked, everything is allowed, and an embedded block has no business noticing.
Stand() always returns a table:
{
stand = 'aus' | 'unbekannt' | 'gilt' | 'gilt_nicht',
bis = 1790000000, -- or nil
seit = 1786000000, -- when the grace period started
grund = '…', -- or nil
kontakt = '…',
anhalten = true, -- whether C.Anhalten is armed
angehalten = false, -- whether it has already happened
}
The event fires on every change of state, not on every check — otherwise it would be the same message twenty-four times a day, and a listener that acts on it would act twenty-four times.
AddEventHandler('skillry_lizenz:stand', function(stand) … end)
A TriggerEvent, and deliberately no RegisterNetEvent
A net event under this name could be raised by any player, telling every resource that the licence is valid. A check the checked party can answer for itself is not a check.