Files
red-valley/resources/[framework]/[addons]/0r_idcard/server/open.lua
2026-03-29 21:41:17 +03:00

186 lines
5.8 KiB
Lua

RegisterNetEvent('esx_dmvschool:addLicense')
AddEventHandler('esx_dmvschool:addLicense', function(type)
local source = source
exports['0r-idcard']:setPlayerLicense('driver_license', source, 1)
end)
registerItem(Config.DriverLicense, function(source)
local found = false
if Config.UseDatabaseForDriverLicense then
local license = getPlayerLicense(getExtendedPlayer(source))
local result = mysqlQuery("SELECT * FROM 0r_idcard WHERE license = @license", {["@license"] = license})
local driverLicense = result[1].driver_license
if driverLicense == 0 then
TriggerClientEvent("0r_idcard:client:notify", source, "You don't have a driver license.", "error")
return
end
elseif Config.UseQbLicense then
local player = getExtendedPlayer(source)
local driverLicense = player.PlayerData.metadata["licences"]["driver"]
if driverLicense == nil or driverLicense == 0 then
TriggerClientEvent("0r_idcard:client:notify", source, "You don't have a driver license.", "error")
return
end
elseif Config.UseEsxLicense then
TriggerEvent('esx_license:getLicenses', source, function(licenses)
for k, v in pairs(licenses) do
if v.type == "driver" or v.type == "driver_license" then
found = true
end
end
end)
if not found then
TriggerClientEvent("0r_idcard:client:notify", source, "You don't have a driver license.", "error")
return
end
end
local data = useIdCard(source)
data.cardType = "driver"
data.jobGrade = 0
TriggerClientEvent("0r_idcard:client:showCard", source, data, false, false)
end)
registerItem(Config.WeaponLicense, function(source)
local found = false
if Config.UseDatabaseForWeaponLicense then
local license = getPlayerLicense(getExtendedPlayer(source))
local result = mysqlQuery("SELECT * FROM 0r_idcard WHERE license = @license", {["@license"] = license})
local weaponLicense = result[1].weapon_license
if weaponLicense == 0 then
TriggerClientEvent("0r_idcard:client:notify", source, "You don't have a weapon license.", "error")
return
end
elseif Config.UseQbLicense then
local player = getExtendedPlayer(source)
local weaponLicense = player.PlayerData.metadata["licences"]["weapon"]
if weaponLicense == nil or weaponLicense == 0 then
TriggerClientEvent("0r_idcard:client:notify", source, "You don't have a weapon license.", "error")
return
end
elseif Config.UseEsxLicense then
TriggerEvent('esx_license:getLicenses', source, function(licenses)
for k, v in pairs(licenses) do
if v.type == "weapon" or v.type == "weapon_license" then
found = true
end
end
end)
if not found then
TriggerClientEvent("0r_idcard:client:notify", source, "You don't have a weapon license.", "error")
return
end
end
local data = useIdCard(source)
data.cardType = "weapon"
data.jobGrade = 0
TriggerClientEvent("0r_idcard:client:showCard", source, data, false, false)
end)
function getPlayerName(player)
if Config.Framework == "qb" then
return { firstname = player.PlayerData.charinfo.firstname, lastname = player.PlayerData.charinfo.lastname }
elseif Config.Framework == "esx" then
local name = player.getName()
local names = splitString(name, " ")
if #names > 1 then
local lastname = ""
for i = 2, #names do
if names[i] ~= nil then
lastname = lastname .. names[i] .. " "
end
end
return { firstname = names[1], lastname = lastname }
else
return { firstname = name, lastname = "" }
end
end
end
function splitString(text)
local t = {}
for str in string.gmatch(text, "([^%s]+)") do
table.insert(t, str)
end
return t
end
function getBirthDate(player)
if Config.Framework == "qb" then
return player.PlayerData.charinfo.birthdate
elseif Config.Framework == "esx" then
return player.variables.dateofbirth
end
end
function getPlayerLicense(player)
if Config.Framework == "qb" then
return player.PlayerData.citizenid
elseif Config.Framework == "esx" then
return player.getIdentifier()
end
end
function getGender(player)
if Config.Framework == "qb" then
return player.PlayerData.charinfo.gender == 0 and "Male" or "Female"
elseif Config.Framework == "esx" then
return player.variables.sex == "m" and "Male" or "Female"
end
end
function getPlayerJob(src)
local player = getExtendedPlayer(src)
while player == nil do
Citizen.Wait(100)
player = getExtendedPlayer(src)
end
if Config.Framework == "qb" then
return { name = player.PlayerData.job.name, grade = player.PlayerData.job.grade.level }
elseif Config.Framework == "esx" then
return { name = player.job.name, grade = player.job.grade }
end
end
function getPlayerNation(src)
local player = getExtendedPlayer(src)
while player == nil do
Citizen.Wait(100)
player = getExtendedPlayer(src)
end
if Config.Framework == "qb" then
return doesNationIncludesFlag(player.PlayerData.charinfo.nationality)
elseif Config.Framework == "esx" then
return doesNationIncludesFlag(player.variables.nationality)
end
end
function doesNationIncludesFlag(nation)
if not nation then
return "us"
end
for k, v in pairs(Nations) do
if string.lower(k) == string.lower(nation) then
return v
end
end
return 'ro'
end