ed
This commit is contained in:
parent
91f2af8b8b
commit
4a1367fb44
2 changed files with 310 additions and 200 deletions
|
@ -10,16 +10,6 @@ local function debugPrint(message)
|
|||
end
|
||||
end
|
||||
|
||||
local function safeCallback(cb, ...)
|
||||
if cb and type(cb) == "function" then
|
||||
cb(...)
|
||||
return true
|
||||
else
|
||||
debugPrint("^1FEHLER: Callback ist keine Funktion! Typ: " .. type(cb) .. "^7")
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
local function formatDate(timestamp)
|
||||
if not timestamp then return nil end
|
||||
return os.date("%d.%m.%Y", timestamp)
|
||||
|
@ -165,19 +155,16 @@ local function getIssuerName(citizenid, callback)
|
|||
end)
|
||||
end
|
||||
|
||||
-- Callbacks
|
||||
QBCore.Functions.CreateCallback('license-system:server:getLicense', function(source, cb, targetId)
|
||||
debugPrint("getLicense Callback - Source: " .. source .. ", Target: " .. tostring(targetId))
|
||||
|
||||
if not cb or type(cb) ~= "function" then
|
||||
debugPrint("^1FEHLER: Ungültiger Callback in getLicense!^7")
|
||||
return
|
||||
end
|
||||
-- EVENT: Einzelne Lizenz abrufen
|
||||
RegisterNetEvent('license-system:server:requestLicense', function(targetId)
|
||||
local src = source
|
||||
debugPrint("=== Event: requestLicense ===")
|
||||
debugPrint("Source: " .. src .. ", Target: " .. tostring(targetId))
|
||||
|
||||
local TargetPlayer = QBCore.Functions.GetPlayer(targetId)
|
||||
if not TargetPlayer then
|
||||
debugPrint("^1Ziel-Spieler nicht gefunden: " .. tostring(targetId) .. "^7")
|
||||
safeCallback(cb, nil)
|
||||
TriggerClientEvent('license-system:client:receiveLicense', src, nil)
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -209,27 +196,26 @@ QBCore.Functions.CreateCallback('license-system:server:getLicense', function(sou
|
|||
}
|
||||
}
|
||||
|
||||
safeCallback(cb, licenseData)
|
||||
debugPrint("Sende Lizenz-Daten an Client")
|
||||
TriggerClientEvent('license-system:client:receiveLicense', src, licenseData)
|
||||
end)
|
||||
else
|
||||
debugPrint("Keine aktive Lizenz gefunden für: " .. citizenid)
|
||||
safeCallback(cb, nil)
|
||||
TriggerClientEvent('license-system:client:receiveLicense', src, nil)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateCallback('license-system:server:getMyLicense', function(source, cb, licenseType)
|
||||
debugPrint("getMyLicense Callback - Source: " .. source .. ", Typ: " .. tostring(licenseType))
|
||||
-- EVENT: Eigene Lizenz abrufen
|
||||
RegisterNetEvent('license-system:server:requestMyLicense', function(licenseType)
|
||||
local src = source
|
||||
debugPrint("=== Event: requestMyLicense ===")
|
||||
debugPrint("Source: " .. src .. ", LicenseType: " .. tostring(licenseType))
|
||||
|
||||
if not cb or type(cb) ~= "function" then
|
||||
debugPrint("^1FEHLER: Ungültiger Callback in getMyLicense!^7")
|
||||
return
|
||||
end
|
||||
|
||||
local Player = QBCore.Functions.GetPlayer(source)
|
||||
local Player = QBCore.Functions.GetPlayer(src)
|
||||
if not Player then
|
||||
debugPrint("^1Spieler nicht gefunden: " .. source .. "^7")
|
||||
safeCallback(cb, nil)
|
||||
debugPrint("^1Spieler nicht gefunden: " .. src .. "^7")
|
||||
TriggerClientEvent('license-system:client:receiveMyLicense', src, nil, licenseType)
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -262,73 +248,71 @@ QBCore.Functions.CreateCallback('license-system:server:getMyLicense', function(s
|
|||
}
|
||||
}
|
||||
|
||||
safeCallback(cb, licenseData)
|
||||
debugPrint("Sende eigene Lizenz-Daten an Client")
|
||||
TriggerClientEvent('license-system:client:receiveMyLicense', src, licenseData, licenseType)
|
||||
end)
|
||||
else
|
||||
debugPrint("Keine eigene Lizenz vom Typ " .. licenseType .. " gefunden")
|
||||
safeCallback(cb, nil)
|
||||
TriggerClientEvent('license-system:client:receiveMyLicense', src, nil, licenseType)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateCallback('license-system:server:getPlayerLicenses', function(source, cb, targetId)
|
||||
debugPrint("getPlayerLicenses Callback - Source: " .. source .. ", Target: " .. tostring(targetId))
|
||||
|
||||
if not cb or type(cb) ~= "function" then
|
||||
debugPrint("^1FEHLER: Ungültiger Callback in getPlayerLicenses!^7")
|
||||
return
|
||||
end
|
||||
-- EVENT: Alle Spieler-Lizenzen abrufen
|
||||
RegisterNetEvent('license-system:server:requestPlayerLicenses', function(targetId)
|
||||
local src = source
|
||||
debugPrint("=== Event: requestPlayerLicenses ===")
|
||||
debugPrint("Source: " .. src .. ", Target: " .. tostring(targetId))
|
||||
|
||||
local TargetPlayer = QBCore.Functions.GetPlayer(targetId)
|
||||
if not TargetPlayer then
|
||||
debugPrint("^1Ziel-Spieler nicht gefunden: " .. tostring(targetId) .. "^7")
|
||||
safeCallback(cb, {})
|
||||
TriggerClientEvent('license-system:client:receivePlayerLicenses', src, {}, targetId, "Unbekannt")
|
||||
return
|
||||
end
|
||||
|
||||
local citizenid = TargetPlayer.PlayerData.citizenid
|
||||
local targetName = TargetPlayer.PlayerData.charinfo.firstname .. ' ' .. TargetPlayer.PlayerData.charinfo.lastname
|
||||
debugPrint("Suche alle Lizenzen für CitizenID: " .. citizenid)
|
||||
|
||||
MySQL.Async.fetchAll('SELECT * FROM player_licenses WHERE citizenid = ? ORDER BY created_at DESC', {
|
||||
citizenid
|
||||
}, function(result)
|
||||
if result then
|
||||
debugPrint("Gefundene Lizenzen: " .. #result)
|
||||
local licenses = result or {}
|
||||
debugPrint("Gefundene Lizenzen: " .. #licenses)
|
||||
|
||||
-- Spieler-Daten zu jeder Lizenz hinzufügen
|
||||
for i, license in ipairs(licenses) do
|
||||
license.name = TargetPlayer.PlayerData.charinfo.firstname .. ' ' .. TargetPlayer.PlayerData.charinfo.lastname
|
||||
license.birthday = TargetPlayer.PlayerData.charinfo.birthdate
|
||||
license.gender = TargetPlayer.PlayerData.charinfo.gender
|
||||
license.issued_by_name = 'System' -- Wird später durch echten Namen ersetzt
|
||||
|
||||
-- Spieler-Daten zu jeder Lizenz hinzufügen
|
||||
for i, license in ipairs(result) do
|
||||
license.name = TargetPlayer.PlayerData.charinfo.firstname .. ' ' .. TargetPlayer.PlayerData.charinfo.lastname
|
||||
license.birthday = TargetPlayer.PlayerData.charinfo.birthdate
|
||||
license.gender = TargetPlayer.PlayerData.charinfo.gender
|
||||
license.issued_by_name = 'System' -- Wird später durch echten Namen ersetzt
|
||||
end
|
||||
|
||||
safeCallback(cb, result)
|
||||
else
|
||||
debugPrint("Keine Lizenzen gefunden")
|
||||
safeCallback(cb, {})
|
||||
debugPrint("Lizenz " .. i .. ": " .. license.license_type .. " (Aktiv: " .. tostring(license.is_active) .. ")")
|
||||
end
|
||||
|
||||
debugPrint("Sende " .. #licenses .. " Lizenzen an Client")
|
||||
TriggerClientEvent('license-system:client:receivePlayerLicenses', src, licenses, targetId, targetName)
|
||||
end)
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateCallback('license-system:server:canIssueLicense', function(source, cb, licenseType)
|
||||
debugPrint("canIssueLicense Callback - Source: " .. source .. ", Typ: " .. tostring(licenseType))
|
||||
-- EVENT: Berechtigung prüfen
|
||||
RegisterNetEvent('license-system:server:checkPermission', function(licenseType)
|
||||
local src = source
|
||||
debugPrint("=== Event: checkPermission ===")
|
||||
debugPrint("Source: " .. src .. ", LicenseType: " .. tostring(licenseType))
|
||||
|
||||
if not cb or type(cb) ~= "function" then
|
||||
debugPrint("^1FEHLER: Ungültiger Callback in canIssueLicense!^7")
|
||||
return
|
||||
end
|
||||
|
||||
local hasAuth = hasPermission(source, licenseType)
|
||||
local hasAuth = hasPermission(src, licenseType)
|
||||
debugPrint("Berechtigung für Lizenz " .. licenseType .. ": " .. tostring(hasAuth))
|
||||
|
||||
safeCallback(cb, hasAuth)
|
||||
TriggerClientEvent('license-system:client:receivePermission', src, hasAuth, licenseType)
|
||||
end)
|
||||
|
||||
-- Events
|
||||
-- EVENT: Lizenz ausstellen
|
||||
RegisterNetEvent('license-system:server:issueLicense', function(targetId, licenseType, classes)
|
||||
local src = source
|
||||
debugPrint("Event: issueLicense - Von: " .. src .. ", Für: " .. targetId .. ", Typ: " .. licenseType)
|
||||
debugPrint("=== Event: issueLicense ===")
|
||||
debugPrint("Von: " .. src .. ", Für: " .. targetId .. ", Typ: " .. licenseType)
|
||||
|
||||
local Player = QBCore.Functions.GetPlayer(src)
|
||||
local TargetPlayer = QBCore.Functions.GetPlayer(targetId)
|
||||
|
@ -384,6 +368,9 @@ RegisterNetEvent('license-system:server:issueLicense', function(targetId, licens
|
|||
TriggerClientEvent('QBCore:Notify', src, Config.Notifications.license_granted.message, Config.Notifications.license_granted.type)
|
||||
TriggerClientEvent('QBCore:Notify', targetId, 'Du hast eine neue ' .. licenseConfig.label .. ' erhalten!', 'success')
|
||||
|
||||
-- Client über erfolgreiche Ausstellung informieren
|
||||
TriggerClientEvent('license-system:client:licenseIssued', src, targetId, licenseType)
|
||||
|
||||
-- Log erstellen
|
||||
debugPrint(Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname .. ' hat ' .. TargetPlayer.PlayerData.charinfo.firstname .. ' ' .. TargetPlayer.PlayerData.charinfo.lastname .. ' eine ' .. licenseConfig.label .. ' ausgestellt')
|
||||
else
|
||||
|
@ -391,9 +378,11 @@ RegisterNetEvent('license-system:server:issueLicense', function(targetId, licens
|
|||
end
|
||||
end)
|
||||
|
||||
-- EVENT: Lizenz entziehen
|
||||
RegisterNetEvent('license-system:server:revokeLicense', function(targetId, licenseType)
|
||||
local src = source
|
||||
debugPrint("Event: revokeLicense - Von: " .. src .. ", Für: " .. targetId .. ", Typ: " .. licenseType)
|
||||
debugPrint("=== Event: revokeLicense ===")
|
||||
debugPrint("Von: " .. src .. ", Für: " .. targetId .. ", Typ: " .. licenseType)
|
||||
|
||||
local Player = QBCore.Functions.GetPlayer(src)
|
||||
local TargetPlayer = QBCore.Functions.GetPlayer(targetId)
|
||||
|
@ -423,6 +412,9 @@ RegisterNetEvent('license-system:server:revokeLicense', function(targetId, licen
|
|||
licenseCache[TargetPlayer.PlayerData.citizenid][licenseType] = nil
|
||||
end
|
||||
|
||||
-- Client über erfolgreiche Entziehung informieren
|
||||
TriggerClientEvent('license-system:client:licenseRevoked', src, targetId, licenseType)
|
||||
|
||||
debugPrint(Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname .. ' hat ' .. TargetPlayer.PlayerData.charinfo.firstname .. ' ' .. TargetPlayer.PlayerData.charinfo.lastname .. ' die ' .. (Config.LicenseTypes[licenseType] and Config.LicenseTypes[licenseType].label or licenseType) .. ' entzogen')
|
||||
else
|
||||
TriggerClientEvent('QBCore:Notify', src, 'Keine aktive Lizenz gefunden!', 'error')
|
||||
|
@ -430,9 +422,11 @@ RegisterNetEvent('license-system:server:revokeLicense', function(targetId, licen
|
|||
end)
|
||||
end)
|
||||
|
||||
-- EVENT: Foto speichern
|
||||
RegisterNetEvent('license-system:server:savePhoto', function(citizenid, photoData)
|
||||
local src = source
|
||||
debugPrint("Event: savePhoto für CitizenID: " .. citizenid)
|
||||
debugPrint("=== Event: savePhoto ===")
|
||||
debugPrint("CitizenID: " .. citizenid)
|
||||
|
||||
local Player = QBCore.Functions.GetPlayer(src)
|
||||
if not Player then return end
|
||||
|
@ -537,7 +531,7 @@ end)
|
|||
-- Resource Start/Stop Events
|
||||
AddEventHandler('onResourceStart', function(resourceName)
|
||||
if GetCurrentResourceName() == resourceName then
|
||||
debugPrint("License-System Server gestartet")
|
||||
debugPrint("License-System Server gestartet (Event-basiert)")
|
||||
|
||||
-- Datenbank-Tabelle erstellen falls nicht vorhanden
|
||||
MySQL.Async.execute([[
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue