local QBCore = exports['qb-core']:GetCoreObject() -- Functions local function generateOID() local num = math.random(1, 10) .. math.random(111, 999) return 'OC' .. num end -- Callbacks QBCore.Functions.CreateCallback('alizadev-occasions:server:getVehicles', function(_, cb) local result = MySQL.query.await('SELECT * FROM occasion_vehicles', {}) if result[1] then cb(result) else cb(nil) end end) QBCore.Functions.CreateCallback('alizadev-occasions:server:checkVehicleOwner', function(source, cb, plate) local pData = QBCore.Functions.GetPlayer(source) MySQL.query('SELECT balance FROM player_vehicles WHERE plate = ? AND citizenid = ?', { plate, pData.PlayerData.citizenid }, function(result) if result[1] then cb(true, result[1].balance) else cb(false) end end) end) QBCore.Functions.CreateCallback('alizadev-occasions:server:getSellerInformation', function(_, cb, citizenid) MySQL.query('SELECT * FROM players WHERE citizenid = ?', { citizenid }, function(result) if result[1] then cb(result[1]) else cb(nil) end end) end) if Config.JGDealer then QBCore.Functions.CreateCallback("jg-advancedgarages:server:checkVehicleOwner", function(source, cb, plate) local src = source local pData = QBCore.Functions.GetPlayer(src) local financed = MySQL.scalar.await('SELECT `financed` FROM `player_vehicles` WHERE `plate` = ? LIMIT 1', { plate }) if not financed then MySQL.query('SELECT * FROM player_vehicles WHERE plate = ? AND citizenid = ?',{plate, pData.PlayerData.citizenid}, function(result) if result[1] then cb(true, result[1].balance) else cb(false) end end) elseif financed then TriggerClientEvent('QBCore:Notify', src, "you cannot sell a vehicle that is under finance", 'error') end end) end QBCore.Functions.CreateCallback('alizadev-vehiclesale:server:CheckModelName', function(_, cb, plate) if plate then local ReturnData = MySQL.scalar.await('SELECT vehicle FROM player_vehicles WHERE plate = ?', { plate }) cb(ReturnData) end end) -- Events RegisterNetEvent('alizadev-occasions:server:ReturnVehicle', function(vehicleData) local src = source local Player = QBCore.Functions.GetPlayer(src) local result = MySQL.query.await('SELECT * FROM occasion_vehicles WHERE plate = ? AND occasionid = ?', { vehicleData['plate'], vehicleData['oid'] }) if result[1] then if result[1].seller == Player.PlayerData.citizenid then MySQL.insert('INSERT INTO player_vehicles (license, citizenid, vehicle, hash, mods, plate, state) VALUES (?, ?, ?, ?, ?, ?, ?)', { Player.PlayerData.license, Player.PlayerData.citizenid, vehicleData['model'], joaat(vehicleData['model']), vehicleData['mods'], vehicleData['plate'], 0 }) MySQL.query('DELETE FROM occasion_vehicles WHERE occasionid = ? AND plate = ?', { vehicleData['oid'], vehicleData['plate'] }) TriggerClientEvent('alizadev-occasions:client:ReturnOwnedVehicle', src, result[1]) TriggerClientEvent('qb-occasion:client:refreshVehicles', -1) else TriggerClientEvent('QBCore:Notify', src, Lang:t('error.not_your_vehicle'), 'error', 3500) end else TriggerClientEvent('QBCore:Notify', src, Lang:t('error.vehicle_does_not_exist'), 'error', 3500) end end) RegisterNetEvent('alizadev-occasions:server:sellVehicle', function(vehiclePrice, vehicleData) local src = source local Player = QBCore.Functions.GetPlayer(src) -- Emergency araç kontrolü local vehicle = QBCore.Shared.Vehicles[vehicleData.model] if vehicle and vehicle.category == "emergency" then TriggerClientEvent('QBCore:Notify', src, 'Emergency araçları satamazsınız!', 'error') return end MySQL.query('DELETE FROM player_vehicles WHERE plate = ? AND vehicle = ?', { vehicleData.plate, vehicleData.model }) MySQL.insert('INSERT INTO occasion_vehicles (seller, price, description, plate, model, mods, occasionid) VALUES (?, ?, ?, ?, ?, ?, ?)', { Player.PlayerData.citizenid, vehiclePrice, vehicleData.desc, vehicleData.plate, vehicleData.model, json.encode(vehicleData.mods), generateOID() }) TriggerEvent('qb-log:server:CreateLog', 'vehicleshop', 'Vehicle for Sale', 'red', '**' .. GetPlayerName(src) .. '** has a ' .. vehicleData.model .. ' priced at ' .. vehiclePrice) TriggerClientEvent('qb-occasion:client:refreshVehicles', -1) end) RegisterNetEvent('alizadev-occasions:server:sellVehicleBack', function(vehData) local src = source local Player = QBCore.Functions.GetPlayer(src) local price = 0 local plate = vehData.plate for _, v in pairs(QBCore.Shared.Vehicles) do if v['hash'] == vehData.model then price = tonumber(v['price']) break end end local payout = math.floor(tonumber(price * 0.4)) -- This will give you half of the cars value Player.Functions.AddMoney('bank', payout, 'sold vehicle back') TriggerClientEvent('QBCore:Notify', src, Lang:t('success.sold_car_for_price', { value = payout }), 'success', 5500) MySQL.query('DELETE FROM player_vehicles WHERE plate = ?', { plate }) end) RegisterNetEvent('alizadev-occasions:server:buyVehicle', function(vehicleData) local src = source local Player = QBCore.Functions.GetPlayer(src) local result = MySQL.query.await('SELECT * FROM occasion_vehicles WHERE plate = ? AND occasionid = ?', { vehicleData['plate'], vehicleData['oid'] }) if result[1] and next(result[1]) then if Player.PlayerData.money.bank >= result[1].price then local SellerCitizenId = result[1].seller local SellerData = QBCore.Functions.GetPlayerByCitizenId(SellerCitizenId) local NewPrice = math.ceil((result[1].price / 100) * 77) Player.Functions.RemoveMoney('bank', result[1].price, 'bought vehicle used lot') MySQL.insert( 'INSERT INTO player_vehicles (license, citizenid, vehicle, hash, mods, plate, state) VALUES (?, ?, ?, ?, ?, ?, ?)', { Player.PlayerData.license, Player.PlayerData.citizenid, result[1]['model'], GetHashKey(result[1]['model']), result[1]['mods'], result[1]['plate'], 0 }) if SellerData then SellerData.Functions.AddMoney('bank', NewPrice, 'sold vehicle used lot') else local BuyerData = MySQL.query.await('SELECT * FROM players WHERE citizenid = ?', { SellerCitizenId }) if BuyerData[1] then local BuyerMoney = json.decode(BuyerData[1].money) BuyerMoney.bank = BuyerMoney.bank + NewPrice MySQL.update('UPDATE players SET money = ? WHERE citizenid = ?', { json.encode(BuyerMoney), SellerCitizenId }) end end -- TriggerEvent('qb-log:server:CreateLog', 'vehicleshop', 'bought', 'green', '**' .. GetPlayerName(src) .. '** has bought for ' .. result[1].price .. ' (' .. result[1].plate .. ') from **' .. SellerCitizenId .. '**') TriggerClientEvent('alizadev-occasions:client:BuyFinished', src, result[1]) TriggerClientEvent('qb-occasion:client:refreshVehicles', -1) TriggerEvent('alizadev-vehiclesales:server:LogTransfer', result[1].plate, result[1].seller, Player, result[1].price, result[1].model) MySQL.query('DELETE FROM occasion_vehicles WHERE plate = ? AND occasionid = ?', { result[1].plate, result[1].occasionid }) else TriggerClientEvent('QBCore:Notify', src, Lang:t('error.not_enough_money'), 'error', 3500) end end end)