Scripts/resources/[ps]/ps-adminmenu/server/players.lua

152 lines
5.4 KiB
Lua
Raw Normal View History

2024-12-29 20:11:16 +00:00
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)