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

153 lines
5.5 KiB
Lua
Raw Normal View History

2024-12-29 20:11:16 +00:00
-- Admin Car
RegisterNetEvent('ps-adminmenu:server:SaveCar', function(mods, vehicle, _, plate)
local src = source
local Player = QBCore.Functions.GetPlayer(src)
local result = MySQL.query.await('SELECT plate FROM player_vehicles WHERE plate = ?', { plate })
if result[1] == nil then
MySQL.insert(
'INSERT INTO player_vehicles (license, citizenid, vehicle, hash, mods, plate, state) VALUES (?, ?, ?, ?, ?, ?, ?)',
{
Player.PlayerData.license,
Player.PlayerData.citizenid,
vehicle.model,
vehicle.hash,
json.encode(mods),
plate,
0
})
TriggerClientEvent('QBCore:Notify', src, locale("veh_owner"), 'success', 5000)
else
TriggerClientEvent('QBCore:Notify', src, locale("u_veh_owner"), 'error', 3000)
end
end)
-- Give Car
RegisterNetEvent("ps-adminmenu:server:givecar", function(data, selectedData)
local src = source
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then
QBCore.Functions.Notify(src, locale("no_perms"), "error", 5000)
return
end
local vehmodel = selectedData['Vehicle'].value
local vehicleData = lib.callback.await("ps-adminmenu:client:getvehData", src, vehmodel)
if not next(vehicleData) then
return
end
local tsrc = selectedData['Player'].value
local plate = selectedData['Plate (Optional)'] and selectedData['Plate (Optional)'].value or vehicleData.plate
local garage = selectedData['Garage (Optional)'] and selectedData['Garage (Optional)'].value or Config.DefaultGarage
local Player = QBCore.Functions.GetPlayer(tsrc)
if plate and #plate < 1 then
plate = vehicleData.plate
end
if garage and #garage < 1 then
garage = Config.DefaultGarage
end
if plate:len() > 8 then
QBCore.Functions.Notify(src, locale("plate_max"), "error", 5000)
return
end
if not Player then
QBCore.Functions.Notify(src, locale("not_online"), "error", 5000)
return
end
if CheckAlreadyPlate(plate) then
QBCore.Functions.Notify(src, locale("givecar.error.plates_alreadyused", plate:upper()), "error", 5000)
return
end
MySQL.insert(
'INSERT INTO player_vehicles (license, citizenid, vehicle, hash, mods, plate, garage, state) VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
{
Player.PlayerData.license,
Player.PlayerData.citizenid,
vehmodel,
joaat(vehmodel),
json.encode(vehicleData),
plate,
garage,
1
})
QBCore.Functions.Notify(src,
locale("givecar.success.source", QBCore.Shared.Vehicles[vehmodel].name,
("%s %s"):format(Player.PlayerData.charinfo.firstname, Player.PlayerData.charinfo.lastname)), "success", 5000)
QBCore.Functions.Notify(Player.PlayerData.source, locale("givecar.success.target", plate:upper(), garage), "success",
5000)
end)
-- Give Car
RegisterNetEvent("ps-adminmenu:server:SetVehicleState", function(data, selectedData)
local src = source
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then
QBCore.Functions.Notify(src, locale("no_perms"), "error", 5000)
return
end
local plate = string.upper(selectedData['Plate'].value)
local state = tonumber(selectedData['State'].value)
if plate:len() > 8 then
QBCore.Functions.Notify(src, locale("plate_max"), "error", 5000)
return
end
if not CheckAlreadyPlate(plate) then
QBCore.Functions.Notify(src, locale("plate_doesnt_exist"), "error", 5000)
return
end
MySQL.update('UPDATE player_vehicles SET state = ?, depotprice = ? WHERE plate = ?', { state, 0, plate })
QBCore.Functions.Notify(src, locale("state_changed"), "success", 5000)
end)
-- Change Plate
RegisterNetEvent('ps-adminmenu:server:ChangePlate', function(newPlate, currentPlate)
local newPlate = newPlate:upper()
if Config.Inventory == 'ox_inventory' then
exports.ox_inventory:UpdateVehicle(currentPlate, newPlate)
end
MySQL.Sync.execute('UPDATE player_vehicles SET plate = ? WHERE plate = ?', { newPlate, currentPlate })
MySQL.Sync.execute('UPDATE trunkitems SET plate = ? WHERE plate = ?', { newPlate, currentPlate })
MySQL.Sync.execute('UPDATE gloveboxitems SET plate = ? WHERE plate = ?', { newPlate, currentPlate })
end)
lib.callback.register('ps-adminmenu:server:GetVehicleByPlate', function(source, plate)
local result = MySQL.query.await('SELECT vehicle FROM player_vehicles WHERE plate = ?', { plate })
local veh = result[1] and result[1].vehicle or {}
return veh
end)
-- Fix Vehicle for player
RegisterNetEvent('ps-adminmenu:server:FixVehFor', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local playerId = selectedData['Player'].value
local Player = QBCore.Functions.GetPlayer(tonumber(playerId))
if Player then
local name = Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname
TriggerClientEvent('iens:repaira', Player.PlayerData.source)
TriggerClientEvent('vehiclemod:client:fixEverything', Player.PlayerData.source)
QBCore.Functions.Notify(src, locale("veh_fixed", name), 'success', 7500)
else
TriggerClientEvent('QBCore:Notify', src, locale("not_online"), "error")
end
end)