Licenses
Verwaltet Führerscheine und Lizenzen pro Charakter über die Datenbanktabellen license_types und character_licenses.
Datenbankschema
-- Lizenzdefinitionen
CREATE TABLE license_types (
id INT PRIMARY KEY AUTO_INCREMENT,
license_code VARCHAR(50) UNIQUE,
label VARCHAR(100),
description TEXT,
active TINYINT(1) DEFAULT 1
);
-- Charakter-Lizenzen
CREATE TABLE character_licenses (
id INT PRIMARY KEY AUTO_INCREMENT,
char_id INT,
license_type VARCHAR(50), -- Referenz auf license_types.license_code
status ENUM('active','suspended','revoked') DEFAULT 'active',
issued_by VARCHAR(100),
expiry_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Vordefinierte Lizenz-Codes
| Code |
Bezeichnung |
car_license |
PKW-Führerschein |
truck_license |
LKW-Führerschein |
pilot_license |
Pilotenlizenz |
weapon_license |
Waffenschein |
first_aid_license |
Erste-Hilfe-Schein |
Server-API
Lizenztypen abfragen
-- Alle aktiven Typen
cv.licenses.getAllLicenseTypes() -- → table
-- Einzelner Typ
cv.licenses.getLicenseType(licenseCode) -- → table | nil
-- Nur Bezeichnung
cv.licenses.getLicenseLabel(licenseCode)-- → string | licenseCode
Charakter-Lizenzen
-- Alle Lizenzen eines Charakters
cv.licenses.getCharacterLicenses(charId) -- → table
-- Einzelne Lizenz
cv.licenses.getCharacterLicense(charId, code) -- → table | nil
-- Besitz prüfen
cv.licenses.hasLicense(charId, licenseCode) -- → boolean
Lizenzen verwalten
-- Lizenz vergeben
cv.licenses.addLicense(charId, licenseCode, issuedBy, expiryDate)
-- → boolean (false wenn bereits vorhanden oder Typ unbekannt)
-- Lizenz entziehen (status → 'revoked')
cv.licenses.removeLicense(charId, licenseCode) -- → boolean
-- Lizenz suspendieren
cv.licenses.suspendLicense(charId, licenseCode)-- → boolean
-- Suspendierung aufheben (status → 'active')
cv.licenses.restoreLicense(charId, licenseCode)-- → boolean
Exports (Server)
exports['cv_framework']:HasLicense(charId, 'weapon_license')
exports['cv_framework']:AddLicense(charId, 'car_license', 'DMV', nil)
exports['cv_framework']:RemoveLicense(charId, 'car_license')
exports['cv_framework']:SuspendLicense(charId, 'weapon_license')
Client-API
-- Label einer Lizenz abfragen
cv.licenses.getLabel(licenseCode) -- → string
-- Alle Typen (via Export)
cv.licenses.getAllLicenseTypes() -- → table
-- Eigene Lizenz asynchron prüfen
cv.licenses.checkLicense('weapon_license', function(hasLicense)
if hasLicense then
-- Spieler hat eine aktive Waffen-Lizenz
end
end)
Admin Commands
| Command |
Parameter |
Berechtigung |
/addlicense <playerId> <code> |
Player-ID, Lizenz-Code |
group.admin |
/removelicense <playerId> <code> |
Player-ID, Lizenz-Code |
group.admin |
/licenses |
— |
alle (eigene Lizenzen anzeigen) |
Beispiel: Lizenzprüfung in Ressource
-- Server-seitig
local player = cv.player.getPlayer(source)
if not player or not player.charId then return end
if not exports['cv_framework']:HasLicense(player.charId, 'weapon_license') then
cv.notify(source, 'Fehler', 'Du benötigst einen Waffenschein', 'error')
return
end
-- Weiter...