local QBCore = exports['qb-core']:GetCoreObject() local passengers = {} local function GetUsername(id) return QBCore.Functions.GetPlayer(id).PlayerData.charinfo.firstname ..' '.. QBCore.Functions.GetPlayer(id).PlayerData.charinfo.lastname end local function comma_value(amount) local formatted = tostring(amount) while true do formatted, k = string.gsub(formatted, '^(-?%d+)(%d%d%d)', '%1,%2') if (k==0) then break end end return formatted end local function isEMSService(id) local isAllowed = false local Player = QBCore.Functions.GetPlayer(id) if Player then if Player.PlayerData.job.name == "police" or Player.PlayerData.job.name == "ambulance" or Player.PlayerData.job.name == "mechanic" or Player.PlayerData.job.name == "taxi" and Player.PlayerData.job.onduty then isAllowed = true end end return isAllowed end local function GetOnlinePlayers() local sources = {} for k, id in pairs(QBCore.Functions.GetPlayers()) do local target = QBCore.Functions.GetPlayer(id) if target then sources[#sources + 1] = { source = target.PlayerData.source, fullname = target.PlayerData.charinfo.firstname.." "..target.PlayerData.charinfo.lastname } end end return sources end local function CanIPayTheBill(id, company, price) local Player = QBCore.Functions.GetPlayer(id) local topay = math.floor(price) if Player then if Player.PlayerData.money["cash"] >= topay then return true else if Player.PlayerData.money["bank"] >= topay then return true end end end return false end QBCore.Functions.CreateCallback('qb-npcservices:server:isEMSServices', function(source, cb) local src = source cb(isEMSService(src)) end) QBCore.Functions.CreateCallback('qb-npcservices:server:emsOnline', function(source, cb, job) local count = QBCore.Functions.GetDutyCount(job) cb(count) end) QBCore.Functions.CreateCallback("qb-npcservices:server:GetOnlinePlayers", function(source, cb) cb(GetOnlinePlayers()) end) QBCore.Functions.CreateCallback("qb-npcservices:server:CanIPayTheBill", function(source, cb, company, price) local src = source cb(CanIPayTheBill(src, company, price)) end) QBCore.Functions.CreateCallback('qb-npcservices:server:IsVehicleOwner', function(source, cb, plate) local src = source local Player = QBCore.Functions.GetPlayer(src) local citizenid = Player.PlayerData.citizenid MySQL.Async.fetchAll('SELECT * FROM player_vehicles WHERE plate = ? AND citizenid = ?', {plate, citizenid}, function(result) if result[1] ~= nil then cb(true) else cb(false) end end) end) RegisterServerEvent('qb-npcservices:server:sendService', function(callData) local src = source local num = nil if not id then id = src end if src == callData.targetId then num = src else num = callData.targetId end local caller = QBCore.Functions.GetPlayer(callData.callerId) if isEMSService(callData.callerId) then if callData.targetId == callData.callerId then if Config.UseServicesForJobs then TriggerClientEvent("qb-npcservices:client:sendService", callData.targetId, callData) else TriggerClientEvent('QBCore:Notify', num, Lang:t('notify.can_not_use_services_on_your_seld'), "error", 10000) end else TriggerClientEvent("qb-npcservices:client:sendService", callData.targetId, callData) end else local count = QBCore.Functions.GetDutyCount(callData.job) if count >= Config.MinOnlineEMS then TriggerClientEvent('QBCore:Notify', num, Lang:t('notify.can_not_use_services'), "error", 10000) else if CanIPayTheBill(num, callData.job, callData.price) then TriggerClientEvent("qb-npcservices:client:sendService", num, callData) else TriggerClientEvent('QBCore:Notify', num, Lang:t('notify.cant_pay',{price = callData.price}), "error", 10000) end end end end) RegisterServerEvent('qb-npcservices:server:getin', function(job, vehicle) local src = source passengers[#passengers + 1] = {company = job, vehicle = vehicle, passenger = src} TriggerClientEvent('qb-npcservices:client:getinvehicle', src, vehicle) end) RegisterServerEvent('qb-npcservices:server:leavevehicle', function(vehicle) for i = 0, #passengers do if passengers[i] then if passengers[i].passenger ~= nil then local Player = QBCore.Functions.GetPlayer(passengers[i].passenger) if Player then local fullname = Player.PlayerData.charinfo.firstname ..' '.. Player.PlayerData.charinfo.lastname TriggerClientEvent('qb-npcservices:client:leavevehicle', passengers[i].passenger) TriggerClientEvent('QBCore:Notify', passengers[i].passenger, Lang:t('notify.left_vehicle'), "success") passengers[i].passenger = nil end end end end end) RegisterServerEvent('qb-npcservices:server:pay', function(company, price) local src = source local Player = QBCore.Functions.GetPlayer(src) if Player.PlayerData.money["cash"] >= price then Player.Functions.RemoveMoney("cash", price, "pay-"..company) else if Player.PlayerData.money["bank"] >= price then Player.Functions.RemoveMoney("bank", price, "pay-"..company) end end end)