152 lines
5.4 KiB
Lua
152 lines
5.4 KiB
Lua
|
local function getVehicles(cid)
|
||
|
local result = MySQL.query.await(
|
||
|
'SELECT vehicle, plate, fuel, engine, body FROM player_vehicles WHERE citizenid = ?', { cid })
|
||
|
local vehicles = {}
|
||
|
|
||
|
for k, v in pairs(result) do
|
||
|
local vehicleData = QBCore.Shared.Vehicles[v.vehicle]
|
||
|
|
||
|
if vehicleData then
|
||
|
vehicles[#vehicles + 1] = {
|
||
|
id = k,
|
||
|
cid = cid,
|
||
|
label = vehicleData.name,
|
||
|
brand = vehicleData.brand,
|
||
|
model = vehicleData.model,
|
||
|
plate = v.plate,
|
||
|
fuel = v.fuel,
|
||
|
engine = v.engine,
|
||
|
body = v.body
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return vehicles
|
||
|
end
|
||
|
|
||
|
local function getPlayers()
|
||
|
local players = {}
|
||
|
local GetPlayers = QBCore.Functions.GetQBPlayers()
|
||
|
|
||
|
for k, v in pairs(GetPlayers) do
|
||
|
local playerData = v.PlayerData
|
||
|
local vehicles = getVehicles(playerData.citizenid)
|
||
|
|
||
|
players[#players + 1] = {
|
||
|
id = k,
|
||
|
name = playerData.charinfo.firstname .. ' ' .. playerData.charinfo.lastname,
|
||
|
cid = playerData.citizenid,
|
||
|
license = QBCore.Functions.GetIdentifier(k, 'license'),
|
||
|
discord = QBCore.Functions.GetIdentifier(k, 'discord'),
|
||
|
steam = QBCore.Functions.GetIdentifier(k, 'steam'),
|
||
|
job = playerData.job.label,
|
||
|
grade = playerData.job.grade.level,
|
||
|
dob = playerData.charinfo.birthdate,
|
||
|
cash = playerData.money.cash,
|
||
|
bank = playerData.money.bank,
|
||
|
phone = playerData.charinfo.phone,
|
||
|
vehicles = vehicles
|
||
|
}
|
||
|
end
|
||
|
|
||
|
table.sort(players, function(a, b) return a.id < b.id end)
|
||
|
|
||
|
return players
|
||
|
end
|
||
|
|
||
|
lib.callback.register('ps-adminmenu:callback:GetPlayers', function(source)
|
||
|
return getPlayers()
|
||
|
end)
|
||
|
|
||
|
-- Set Job
|
||
|
RegisterNetEvent('ps-adminmenu:server:SetJob', function(data, selectedData)
|
||
|
local data = CheckDataFromKey(data)
|
||
|
if not data or not CheckPerms(data.perms) then return end
|
||
|
local src = source
|
||
|
local playerId, Job, Grade = selectedData["Player"].value, selectedData["Job"].value, selectedData["Grade"].value
|
||
|
local Player = QBCore.Functions.GetPlayer(playerId)
|
||
|
local name = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname
|
||
|
local jobInfo = QBCore.Shared.Jobs[Job]
|
||
|
local grade = jobInfo["grades"][selectedData["Grade"].value]
|
||
|
|
||
|
if not jobInfo then
|
||
|
TriggerClientEvent('QBCore:Notify', source, "Ikke et gyldigt job", 'error')
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if not grade then
|
||
|
TriggerClientEvent('QBCore:Notify', source, "Ikke et gyldigt job", 'error')
|
||
|
return
|
||
|
end
|
||
|
|
||
|
Player.Functions.SetJob(tostring(Job), tonumber(Grade))
|
||
|
if Config.RenewedPhone then
|
||
|
exports['qb-phone']:hireUser(tostring(Job), Player.PlayerData.citizenid, tonumber(Grade))
|
||
|
end
|
||
|
|
||
|
QBCore.Functions.Notify(src, locale("jobset", name, Job, Grade), 'success', 5000)
|
||
|
end)
|
||
|
|
||
|
-- Set Gang
|
||
|
RegisterNetEvent('ps-adminmenu:server:SetGang', function(data, selectedData)
|
||
|
local data = CheckDataFromKey(data)
|
||
|
if not data or not CheckPerms(data.perms) then return end
|
||
|
local src = source
|
||
|
local playerId, Gang, Grade = selectedData["Player"].value, selectedData["Gang"].value, selectedData["Grade"].value
|
||
|
local Player = QBCore.Functions.GetPlayer(playerId)
|
||
|
local name = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname
|
||
|
local GangInfo = QBCore.Shared.Gangs[Gang]
|
||
|
local grade = GangInfo["grades"][selectedData["Grade"].value]
|
||
|
|
||
|
if not GangInfo then
|
||
|
TriggerClientEvent('QBCore:Notify', source, "Ikke en gyldig bande", 'error')
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if not grade then
|
||
|
TriggerClientEvent('QBCore:Notify', source, "Ikke en gyldig bande", 'error')
|
||
|
return
|
||
|
end
|
||
|
|
||
|
Player.Functions.SetGang(tostring(Gang), tonumber(Grade))
|
||
|
QBCore.Functions.Notify(src, locale("gangset", name, Gang, Grade), 'success', 5000)
|
||
|
end)
|
||
|
|
||
|
-- Set Perms
|
||
|
RegisterNetEvent("ps-adminmenu:server:SetPerms", function(data, selectedData)
|
||
|
local data = CheckDataFromKey(data)
|
||
|
if not data or not CheckPerms(data.perms) then return end
|
||
|
local src = source
|
||
|
local rank = selectedData["Permissions"].value
|
||
|
local targetId = selectedData["Player"].value
|
||
|
local tPlayer = QBCore.Functions.GetPlayer(tonumber(targetId))
|
||
|
|
||
|
if not tPlayer then
|
||
|
QBCore.Functions.Notify(src, locale("not_online"), "error", 5000)
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local name = tPlayer.PlayerData.charinfo.firstname .. ' ' .. tPlayer.PlayerData.charinfo.lastname
|
||
|
|
||
|
QBCore.Functions.AddPermission(tPlayer.PlayerData.source, tostring(rank))
|
||
|
QBCore.Functions.Notify(tPlayer.PlayerData.source, locale("player_perms", name, rank), 'success', 5000)
|
||
|
end)
|
||
|
|
||
|
-- Remove Stress
|
||
|
RegisterNetEvent("ps-adminmenu:server:RemoveStress", function(data, selectedData)
|
||
|
local data = CheckDataFromKey(data)
|
||
|
if not data or not CheckPerms(data.perms) then return end
|
||
|
local src = source
|
||
|
local targetId = selectedData['Player (Optional)'] and tonumber(selectedData['Player (Optional)'].value) or src
|
||
|
local tPlayer = QBCore.Functions.GetPlayer(tonumber(targetId))
|
||
|
|
||
|
if not tPlayer then
|
||
|
QBCore.Functions.Notify(src, locale("not_online"), "error", 5000)
|
||
|
return
|
||
|
end
|
||
|
|
||
|
TriggerClientEvent('ps-adminmenu:client:removeStress', targetId)
|
||
|
|
||
|
QBCore.Functions.Notify(tPlayer.PlayerData.source, locale("removed_stress_player"), 'success', 5000)
|
||
|
end)
|