163 lines
7.1 KiB
Lua
163 lines
7.1 KiB
Lua
local QBCore = exports['qb-core']:GetCoreObject()
|
|
OutsideVehicles = {}
|
|
|
|
QBCore.Functions.CreateCallback('ss-garage:server:SpawnVehicle', function(source, cb, plate, model, coords)
|
|
local player = QBCore.Functions.GetPlayer(source)
|
|
local vehicle = exports['oxmysql']:fetchSync('SELECT * FROM player_vehicles WHERE citizenid = ? AND plate = ? AND vehicle = ?', {player.PlayerData.citizenid, plate, model})
|
|
|
|
if not vehicle[1] then
|
|
TriggerClientEvent('QBCore:Notify', source, 'Du ejer ikke dette køretøj', 'error')
|
|
cb(false)
|
|
return
|
|
end
|
|
if vehicle[1].fakeplate ~= nil and string.len(vehicle[1].fakeplate) > 0 then
|
|
plate = vehicle[1].fakeplate
|
|
end
|
|
if OutsideVehicles[plate] and DoesEntityExist(OutsideVehicles[plate].entity) or vehicle[1].state == 0 then
|
|
TriggerClientEvent('QBCore:Notify', source, 'Køretøj er allerede ude', 'error')
|
|
cb(false)
|
|
return
|
|
end
|
|
|
|
local veh = QBCore.Functions.SpawnVehicle(source, model, coords, Config.ShouldTeleport)
|
|
SetVehicleNumberPlateText(veh, plate)
|
|
OutsideVehicles[plate] = { netID = NetworkGetNetworkIdFromEntity(veh), entity = veh }
|
|
exports['oxmysql']:execute('UPDATE player_vehicles SET state = ?, depotprice = ? WHERE (plate = ? OR fakeplate = ?)', { 0, 0, plate, plate })
|
|
cb(true, NetworkGetNetworkIdFromEntity(veh), json.decode(vehicle[1].mods), plate, vehicle[1].fuel, vehicle[1].engine, vehicle[1].body)
|
|
end)
|
|
|
|
QBCore.Functions.CreateCallback('qb-garages:server:GetPlayerVehicles', function(source, cb)
|
|
local Player = QBCore.Functions.GetPlayer(source)
|
|
local result = exports['oxmysql']:fetchSync('SELECT * FROM player_vehicles WHERE citizenid = ?', {Player.PlayerData.citizenid})
|
|
|
|
if result[1] then
|
|
local vehs = FormatVehicles(result)
|
|
cb(vehs)
|
|
else
|
|
cb(nil)
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('ss-garage:server:setHouseGarages', function(data)
|
|
Config.Garages = data
|
|
end)
|
|
|
|
QBCore.Functions.CreateCallback('qb-garages:server:canDeposit', function(source, cb, plate, type, garage, state)
|
|
local Player = QBCore.Functions.GetPlayer(source)
|
|
local isOwned = exports['oxmysql']:fetchSync('SELECT * FROM player_vehicles WHERE citizenid = ? AND (plate = ? OR fakeplate = ?)', {Player.PlayerData.citizenid, plate})
|
|
if not isOwned[1] then
|
|
cb(false)
|
|
return
|
|
end
|
|
if type == 'house' and not exports['ps-housing']:IsOwner(source, garage) then
|
|
cb(false)
|
|
return
|
|
end
|
|
if state == 1 then
|
|
exports['oxmysql']:execute('UPDATE player_vehicles SET state = ?, garage = ? WHERE plate = ?', { state, garage, plate })
|
|
cb(true)
|
|
else
|
|
cb(false)
|
|
end
|
|
end)
|
|
|
|
QBCore.Functions.CreateCallback('ss-garage:server:GetVehicles', function(source, cb, garage, type, category)
|
|
local Player = QBCore.Functions.GetPlayer(source)
|
|
local result
|
|
|
|
if type == 'depot' then
|
|
result = exports['oxmysql']:fetchSync('SELECT * FROM player_vehicles WHERE citizenid = ? AND depotprice > 0', {Player.PlayerData.citizenid})
|
|
elseif Config.realisticGarage then
|
|
result = exports['oxmysql']:fetchSync('SELECT * FROM player_vehicles WHERE citizenid = ? AND garage = ?', {Player.PlayerData.citizenid, garage})
|
|
else
|
|
result = exports['oxmysql']:fetchSync('SELECT * FROM player_vehicles WHERE citizenid = ?', {Player.PlayerData.citizenid})
|
|
end
|
|
|
|
if result[1] then
|
|
local vehs = FormatVehicles(result)
|
|
cb(vehs)
|
|
else
|
|
cb(nil)
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('qb-garages:server:updateVehicleStats', function(plate, fuel, engine, body)
|
|
exports['oxmysql']:execute('UPDATE player_vehicles SET fuel = ?, engine = ?, body = ? WHERE plate = ?', { fuel, engine, body, plate })
|
|
end)
|
|
|
|
RegisterNetEvent('qb-garages:server:UpdateOutsideVehicle', function(plate, vehicleNetID)
|
|
OutsideVehicles[plate] = {
|
|
netID = vehicleNetID,
|
|
entity = NetworkGetEntityFromNetworkId(vehicleNetID)
|
|
}
|
|
end)
|
|
|
|
RegisterNetEvent('ss-garage:server:SwapVehicle', function(data)
|
|
local source = source
|
|
local Player = QBCore.Functions.GetPlayer(source)
|
|
local vehicle = exports['oxmysql']:fetchSync('SELECT * FROM player_vehicles WHERE citizenid = ? AND plate = ? AND garage = ?', { Player.PlayerData.citizenid, data.vehicle.plate, data.vehicle.garageindex })
|
|
|
|
if not Config.Garages[data.garage] then
|
|
TriggerClientEvent('QBCore:Notify', source, 'Garage eksisterer ikke', 'error')
|
|
return
|
|
end
|
|
|
|
if not vehicle[1] then
|
|
TriggerClientEvent('QBCore:Notify', source, 'Du ejer ikke dette køretøj', 'error')
|
|
return
|
|
end
|
|
|
|
if OutsideVehicles[vehicle[1].plate] and DoesEntityExist(OutsideVehicles[vehicle[1].plate].entity) then
|
|
TriggerClientEvent('QBCore:Notify', source, 'Køretøj er allerede ude', 'error')
|
|
return
|
|
end
|
|
|
|
TriggerClientEvent('QBCore:Notify', source, 'Du rykkede dit køretøj til '..data.garage, 'success')
|
|
exports['oxmysql']:execute('UPDATE player_vehicles SET garage = ? WHERE plate = ?', { data.garage, data.vehicle.plate })
|
|
end)
|
|
|
|
RegisterNetEvent('ss-garage:server:TransferVehicle', function(data)
|
|
local source = source
|
|
local Player = QBCore.Functions.GetPlayer(source)
|
|
local vehicle = exports['oxmysql']:fetchSync('SELECT * FROM player_vehicles WHERE citizenid = ? AND plate = ? AND garage = ?', { Player.PlayerData.citizenid, data.vehicle.plate, data.vehicle.garageindex })
|
|
|
|
if not vehicle[1] then
|
|
TriggerClientEvent('QBCore:Notify', source, 'Du ejer ikke dette køretøj', 'error')
|
|
return
|
|
end
|
|
|
|
if OutsideVehicles[vehicle[1].plate] and DoesEntityExist(OutsideVehicles[vehicle[1].plate].entity) then
|
|
TriggerClientEvent('QBCore:Notify', source, 'Dette køretøj er allerede ude', 'error')
|
|
return
|
|
end
|
|
|
|
local target = QBCore.Functions.GetPlayer(tonumber(data.id))
|
|
|
|
if not target then
|
|
TriggerClientEvent('QBCore:Notify', source, 'Spilleren er ikke online', 'error')
|
|
return
|
|
end
|
|
|
|
TriggerClientEvent('QBCore:Notify', Player.PlayerData.source, 'Du gav dit køretøj til '..target.PlayerData.charinfo.firstname..' '..target.PlayerData.charinfo.lastname, 'success')
|
|
TriggerClientEvent('QBCore:Notify', target.PlayerData.source, 'Du modtog et køretøj fra '..Player.PlayerData.charinfo.firstname..' '..Player.PlayerData.charinfo.lastname, 'success')
|
|
exports['oxmysql']:execute('UPDATE player_vehicles SET citizenid = ?, license = ? WHERE plate = ?', { target.PlayerData.citizenid, target.PlayerData.license, data.vehicle.plate })
|
|
end)
|
|
|
|
AddEventHandler('onResourceStop', function(resource)
|
|
if resource == GetCurrentResourceName() then
|
|
for k, v in pairs(OutsideVehicles) do
|
|
if DoesEntityExist(v.entity) then
|
|
DeleteEntity(v.entity)
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
AddEventHandler('onResourceStart', function(resource)
|
|
if resource == GetCurrentResourceName() then
|
|
local vehicles = exports['oxmysql']:fetchSync('SELECT * FROM player_vehicles WHERE state = 0')
|
|
for k, v in pairs(vehicles) do
|
|
exports['oxmysql']:execute('UPDATE player_vehicles SET state = ? WHERE plate = ?', { 1 , v.plate })
|
|
end
|
|
end
|
|
end) |