604 lines
		
	
	
		
			No EOL
		
	
	
		
			20 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			604 lines
		
	
	
		
			No EOL
		
	
	
		
			20 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
CoreName = nil
 | 
						||
 | 
						||
local function GetPlayer(source)
 | 
						||
    if CoreName == 'qb-core' then
 | 
						||
        return QBCore.Functions.GetPlayer(source)
 | 
						||
    elseif CoreName == 'qbx_core' then
 | 
						||
        return QBX:GetPlayer(source)
 | 
						||
    elseif CoreName == 'es_extended' then
 | 
						||
        return ESX.GetPlayerFromId(source)
 | 
						||
    end
 | 
						||
end
 | 
						||
 | 
						||
function GetIdentifier(source)
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
    local Identifier = nil
 | 
						||
 | 
						||
    if CoreName == 'qb-core' then
 | 
						||
        Identifier = Player.PlayerData.citizenid
 | 
						||
    elseif CoreName == 'qbx_core' then
 | 
						||
        Identifier = Player.PlayerData.citizenid
 | 
						||
    elseif CoreName == 'es_extended' then
 | 
						||
        Identifier = Player.getIdentifier()
 | 
						||
    end
 | 
						||
 | 
						||
    return Identifier
 | 
						||
end
 | 
						||
 | 
						||
local function GetBatteryLevel(serie)
 | 
						||
    local battery = 0
 | 
						||
 | 
						||
    local result = ExecuteSql("SELECT battery FROM 0r_rccar WHERE serieNumber = '"..serie.."'")
 | 
						||
 | 
						||
    if result[1] then
 | 
						||
        battery = result[1].battery
 | 
						||
    end
 | 
						||
 | 
						||
    return battery
 | 
						||
end
 | 
						||
 | 
						||
if GetResourceState('qb-core') == 'started' and Config.Framework == 'qb-core' then
 | 
						||
    QBCore = exports['qb-core']:GetCoreObject()
 | 
						||
    CoreName = 'qb-core'
 | 
						||
elseif GetResourceState('qbx_core') == 'started' and Config.Framework == 'qbx_core' then
 | 
						||
    QBX = exports['qbx_core']
 | 
						||
    CoreName = 'qbx_core'
 | 
						||
elseif GetResourceState('es_extended') == 'started' and Config.Framework == 'es_extended' then
 | 
						||
    ESX = exports['es_extended']:getSharedObject()
 | 
						||
    CoreName = 'es_extended'
 | 
						||
end
 | 
						||
 | 
						||
Citizen.CreateThread(function()
 | 
						||
    if CoreName == 'qb-core' then
 | 
						||
        for k, v in pairs(Config.RCCars) do
 | 
						||
            QBCore.Functions.CreateUseableItem(v.item.name, function(source, item)
 | 
						||
                local metadata = Config.Inventory == 'ox_inventory' and item.metadata or item.info
 | 
						||
                if GetBatteryLevel(metadata.serie) > Config.MinimumBattery then
 | 
						||
                    local data = {
 | 
						||
                        item = {
 | 
						||
                            type = v.item.type,
 | 
						||
                            price = v.item.price,
 | 
						||
                            prop = v.item.prop,
 | 
						||
                            label = v.item.label,
 | 
						||
                            name = v.item.name,
 | 
						||
                            category = v.item.category,
 | 
						||
                            description = v.item.description,
 | 
						||
                        },
 | 
						||
                        vehicle = {
 | 
						||
                            prop = v.vehicle.prop,
 | 
						||
                            istatistics = v.vehicle.istatistics,
 | 
						||
                        },
 | 
						||
                        jobs = v.jobs,
 | 
						||
                        info = metadata,
 | 
						||
                    }
 | 
						||
                    
 | 
						||
                    if v.jobs ~= 'all' then
 | 
						||
                        local Player = QBCore.Functions.GetPlayer(source)
 | 
						||
                        if Player ~= nil then
 | 
						||
                            local PlayerJob = Player.PlayerData.job.name
 | 
						||
                            if v.jobs[PlayerJob] then
 | 
						||
                                TriggerClientEvent('0r-rccar:client:useRcCar', source, data)
 | 
						||
                            else
 | 
						||
                                TriggerClientEvent('QBCore:Notify', source, Locales[Config.Locale].LUA['no_authorization'], 'error')
 | 
						||
                            end
 | 
						||
                        end
 | 
						||
                    else
 | 
						||
                        TriggerClientEvent('0r-rccar:client:useRcCar', source, data)
 | 
						||
                    end
 | 
						||
                else
 | 
						||
                    TriggerClientEvent('QBCore:Notify', source, Locales[Config.Locale].LUA['no_battery'], 'error')
 | 
						||
                end
 | 
						||
            end)
 | 
						||
        end
 | 
						||
    elseif CoreName == 'qbx_core' then
 | 
						||
        for k, v in pairs(Config.RCCars) do
 | 
						||
            QBX:CreateUseableItem(v.item.name, function(source, item)
 | 
						||
                if GetBatteryLevel(item.metadata.serie) > Config.MinimumBattery then
 | 
						||
                    local data = {
 | 
						||
                        item = {
 | 
						||
                            type = v.item.type,
 | 
						||
                            price = v.item.price,
 | 
						||
                            prop = v.item.prop,
 | 
						||
                            label = v.item.label,
 | 
						||
                            name = v.item.name,
 | 
						||
                            category = v.item.category,
 | 
						||
                            description = v.item.description,
 | 
						||
                        },
 | 
						||
                        vehicle = {
 | 
						||
                            prop = v.vehicle.prop,
 | 
						||
                            istatistics = v.vehicle.istatistics,
 | 
						||
                        },
 | 
						||
                        jobs = v.jobs,
 | 
						||
                        info = item.metadata,
 | 
						||
                    }
 | 
						||
 | 
						||
                    if v.jobs ~= 'all' then
 | 
						||
                        local Player = QBX:GetPlayer(source)
 | 
						||
                        if Player ~= nil then
 | 
						||
                            local PlayerJob = Player.PlayerData.job.name
 | 
						||
                            if v.jobs[PlayerJob] then
 | 
						||
                                TriggerClientEvent('0r-rccar:client:useRcCar', source, data)
 | 
						||
                            else
 | 
						||
                                QBX:Notify(source, Locales[Config.Locale].LUA['no_authorization'], 'error')
 | 
						||
                            end
 | 
						||
                        end
 | 
						||
                    else
 | 
						||
                        TriggerClientEvent('0r-rccar:client:useRcCar', source, data)
 | 
						||
                    end
 | 
						||
                else
 | 
						||
                    QBX:Notify(source, Locales[Config.Locale].LUA['no_battery'], 'error')
 | 
						||
                end
 | 
						||
            end)
 | 
						||
        end
 | 
						||
    elseif CoreName == 'es_extended' then
 | 
						||
        for k, v in pairs(Config.RCCars) do
 | 
						||
            ESX.RegisterUsableItem(v.item.name, function(source, item, itemData)
 | 
						||
                if GetBatteryLevel(itemData.metadata.serie) > Config.MinimumBattery then
 | 
						||
                    local data = {
 | 
						||
                        item = {
 | 
						||
                            type = v.item.type,
 | 
						||
                            price = v.item.price,
 | 
						||
                            prop = v.item.prop,
 | 
						||
                            label = v.item.label,
 | 
						||
                            name = v.item.name,
 | 
						||
                            category = v.item.category,
 | 
						||
                            description = v.item.description,
 | 
						||
                        },
 | 
						||
                        vehicle = {
 | 
						||
                            prop = v.vehicle.prop,
 | 
						||
                            istatistics = v.vehicle.istatistics,
 | 
						||
                        },
 | 
						||
                        jobs = v.jobs,
 | 
						||
                        info = itemData.metadata,
 | 
						||
                    }
 | 
						||
 | 
						||
                    if v.jobs ~= 'all' then
 | 
						||
                        local Player = ESX.GetPlayerFromId(source)
 | 
						||
                        if Player ~= nil then
 | 
						||
                            local PlayerJob = Player.job.name
 | 
						||
                            if v.jobs[PlayerJob] then
 | 
						||
                                TriggerClientEvent('0r-rccar:client:useRcCar', source, data)
 | 
						||
                            else
 | 
						||
                                TriggerClientEvent("esx:showNotification", source, Locales[Config.Locale].LUA['no_authorization'], "error")
 | 
						||
                            end
 | 
						||
                        end
 | 
						||
                    else
 | 
						||
                        TriggerClientEvent('0r-rccar:client:useRcCar', source, data)
 | 
						||
                    end
 | 
						||
                else
 | 
						||
                    TriggerClientEvent("esx:showNotification", source, Locales[Config.Locale].LUA['no_battery'], "error")
 | 
						||
                end
 | 
						||
            end)
 | 
						||
        end
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:scanPlayer', function(source, netId)
 | 
						||
    local ped = NetworkGetEntityFromNetworkId(netId)
 | 
						||
    local src = NetworkGetEntityOwner(ped)
 | 
						||
    local Player = GetPlayer(src)
 | 
						||
 | 
						||
    if CoreName == 'qb-core' then
 | 
						||
        if Player then
 | 
						||
            local Data = {
 | 
						||
                name = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname,
 | 
						||
                birthDate = Player.PlayerData.charinfo.birthdate,
 | 
						||
            }
 | 
						||
            
 | 
						||
            return Data
 | 
						||
        end
 | 
						||
    elseif CoreName == 'qbx_core' then
 | 
						||
        if Player then
 | 
						||
            local Data = {
 | 
						||
                name = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname,
 | 
						||
                birthDate = Player.PlayerData.charinfo.birthdate,
 | 
						||
            }
 | 
						||
            
 | 
						||
            return Data
 | 
						||
        end
 | 
						||
    elseif CoreName == 'es_extended' then
 | 
						||
        if Player then
 | 
						||
            local Data = {
 | 
						||
                name = Player.getName(),
 | 
						||
                birthDate = Player.variables.dateofbirth,
 | 
						||
            }
 | 
						||
 | 
						||
            return Data
 | 
						||
        end
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:buyCar', function(source, data)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
    local Job = nil
 | 
						||
 | 
						||
    if Player then
 | 
						||
        if CoreName == 'qb-core' then
 | 
						||
            Job = Player.PlayerData.job.name
 | 
						||
        elseif CoreName == 'qbx_core' then
 | 
						||
            Job = Player.PlayerData.job.name
 | 
						||
        elseif CoreName == 'es_extended' then
 | 
						||
            Job = Player.getJob().name
 | 
						||
        end
 | 
						||
 | 
						||
        local car = nil
 | 
						||
 | 
						||
        for k, v in pairs(Config.RCCars) do
 | 
						||
            if v.item.name == data.item.name then
 | 
						||
                car = v
 | 
						||
                break
 | 
						||
            end
 | 
						||
        end
 | 
						||
 | 
						||
        if car.jobs ~= 'all' and Job then
 | 
						||
            for job, allowed in pairs(car.jobs) do
 | 
						||
                if allowed and job == Job then
 | 
						||
                    if car.item.price then
 | 
						||
                        if CheckMoney(Player, car.item.price) then
 | 
						||
                            if CreateNewVehicle(src, car.item.name, 1) then
 | 
						||
                                RemoveMoney(Player, car.item.price)
 | 
						||
                            end
 | 
						||
                        else
 | 
						||
                            if CoreName == 'qb-core' then
 | 
						||
                                TriggerClientEvent('QBCore:Notify', src, Locales[Config.Locale].LUA['not_enough_money'], 'error')
 | 
						||
                            elseif CoreName == 'qbx_core' then
 | 
						||
                                QBX:Notify(src, Locales[Config.Locale].LUA['not_enough_money'], 'error')
 | 
						||
                            elseif CoreName == 'es_extended' then
 | 
						||
                                TriggerClientEvent("esx:showNotification", src, Locales[Config.Locale].LUA['not_enough_money'], "error")
 | 
						||
                            end
 | 
						||
                        end
 | 
						||
                    end
 | 
						||
                    break
 | 
						||
                end
 | 
						||
            end
 | 
						||
        else
 | 
						||
            if car.item.price then
 | 
						||
                if CheckMoney(Player, car.item.price) then
 | 
						||
                    if CreateNewVehicle(src, car.item.name, 1) then
 | 
						||
                        RemoveMoney(Player, car.item.price)
 | 
						||
                    end
 | 
						||
                else
 | 
						||
                    if CoreName == 'qb-core' then
 | 
						||
                        TriggerClientEvent('QBCore:Notify', src, Locales[Config.Locale].LUA['not_enough_money'], 'error')
 | 
						||
                    elseif CoreName == 'qbx_core' then
 | 
						||
                        QBX:Notify(src, Locales[Config.Locale].LUA['not_enough_money'], 'error')
 | 
						||
                    elseif CoreName == 'es_extended' then
 | 
						||
                        TriggerClientEvent("esx:showNotification", src, Locales[Config.Locale].LUA['not_enough_money'], "error")
 | 
						||
                    end
 | 
						||
                end
 | 
						||
            end
 | 
						||
        end
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:crafting', function(source, data)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
    local Job = nil
 | 
						||
 | 
						||
    if Player then
 | 
						||
        if CoreName == 'qb-core' then
 | 
						||
            Job = Player.PlayerData.job.name
 | 
						||
        elseif CoreName == 'qbx_core' then
 | 
						||
            Job = Player.PlayerData.job.name
 | 
						||
        elseif CoreName == 'es_extended' then
 | 
						||
            Job = Player.getJob().name
 | 
						||
        end
 | 
						||
 | 
						||
        local craft = nil
 | 
						||
 | 
						||
        for k, v in pairs(Config.RCCrafts) do
 | 
						||
            if v.item.name == data.item.name then
 | 
						||
                craft = v
 | 
						||
                break
 | 
						||
            end
 | 
						||
        end
 | 
						||
 | 
						||
        if craft.jobs ~= 'all' and Job then
 | 
						||
            for job, allowed in pairs(craft.jobs) do
 | 
						||
                if allowed and job == Job then
 | 
						||
                    if GetItemsCount(src, craft.resources) then
 | 
						||
                        if not RemoveItem(src, k, v) then
 | 
						||
                            return false
 | 
						||
                        end
 | 
						||
                    end
 | 
						||
                    break
 | 
						||
                end
 | 
						||
            end
 | 
						||
        else
 | 
						||
            if GetItemsCount(src, craft.resources) then
 | 
						||
                if not RemoveItem(src, craft.resources) then
 | 
						||
                    return false
 | 
						||
                end
 | 
						||
            end
 | 
						||
        end
 | 
						||
 | 
						||
        return true
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:getItemCount', function(source, resources)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
 | 
						||
    if Player then
 | 
						||
        local resourcesCount = {}
 | 
						||
 | 
						||
        for k, v in pairs(resources) do
 | 
						||
            local itemData = GetItemByName(src, k)
 | 
						||
 | 
						||
            if itemData and itemData ~= '[]' then
 | 
						||
                table.insert(resourcesCount, { name = itemData.name, count = itemData.count or itemData.amount or 0  })
 | 
						||
            end
 | 
						||
        end
 | 
						||
 | 
						||
        return resourcesCount
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:craftingFinish', function(source, data)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
    local Job = nil
 | 
						||
 | 
						||
    if Player then
 | 
						||
        if CoreName == 'qb-core' then
 | 
						||
            Job = Player.PlayerData.job.name
 | 
						||
        elseif CoreName == 'qbx_core' then
 | 
						||
            Job = Player.PlayerData.job.name
 | 
						||
        elseif CoreName == 'es_extended' then
 | 
						||
            Job = Player.getJob().name
 | 
						||
        end
 | 
						||
 | 
						||
        local craft = nil
 | 
						||
 | 
						||
        for k, v in pairs(Config.RCCrafts) do
 | 
						||
            if v.item.name == data.item.name then
 | 
						||
                craft = v
 | 
						||
                break
 | 
						||
            end
 | 
						||
        end
 | 
						||
 | 
						||
        if craft.jobs ~= 'all' and Job then
 | 
						||
            for job, allowed in pairs(craft.jobs) do
 | 
						||
                if allowed and job == Job then
 | 
						||
                    if AddItem(src, craft.item.name, 1, false, nil, false) then
 | 
						||
                        return true
 | 
						||
                    end
 | 
						||
                    break
 | 
						||
                end
 | 
						||
            end
 | 
						||
        else
 | 
						||
            if AddItem(src, craft.item.name, 1, false, nil, false) then
 | 
						||
                return true
 | 
						||
            end
 | 
						||
        end
 | 
						||
 | 
						||
        return false
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:getBatteryLevel', function(source, data)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
 | 
						||
    if Player then
 | 
						||
        return GetBatteryLevel(data.info.serie)
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:getActivePlugins', function(source, data)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
    local extensions = {}
 | 
						||
 | 
						||
    if Player then
 | 
						||
        local result = ExecuteSql("SELECT extensions FROM 0r_rccar WHERE serieNumber = '"..data.info.serie.."'")
 | 
						||
 | 
						||
        if result[1] then
 | 
						||
            extensions = result[1].extensions
 | 
						||
        end
 | 
						||
 | 
						||
        return extensions
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:getNewExtensions', function(source, data)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
    local extensions = {}
 | 
						||
 | 
						||
    if Player then
 | 
						||
        for k, v in pairs(Config.RCCrafts) do
 | 
						||
            if GetItemCount(src, v.item.name, 1) then
 | 
						||
                if v.jobs == 'all' then
 | 
						||
                    table.insert(extensions, v)
 | 
						||
                else
 | 
						||
                    if v.jobs[Player.PlayerData.job.name] then
 | 
						||
                        table.insert(extensions, v)
 | 
						||
                    end
 | 
						||
                end
 | 
						||
            end
 | 
						||
        end
 | 
						||
 | 
						||
 | 
						||
        return extensions
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:addExtension', function(source, data, target)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
    local newTarget = {
 | 
						||
        name = target.item.name,
 | 
						||
        label = target.item.label,
 | 
						||
        description = target.item.description,
 | 
						||
    }
 | 
						||
 | 
						||
    if Player then
 | 
						||
        local result = ExecuteSql("SELECT extensions FROM 0r_rccar WHERE serieNumber = '"..data.info.serie.."'")
 | 
						||
 | 
						||
        if result[1] and GetItemCount(src, newTarget.name, 1) then
 | 
						||
            local extensions = json.decode(result[1].extensions)
 | 
						||
            local newExtensions = {}
 | 
						||
 | 
						||
            local alreadyExists = false
 | 
						||
            if extensions then
 | 
						||
                for k, v in pairs(extensions) do
 | 
						||
                    if v.name == newTarget.name then
 | 
						||
                        alreadyExists = true
 | 
						||
                        break
 | 
						||
                    end
 | 
						||
                    table.insert(newExtensions, v)
 | 
						||
                end
 | 
						||
            end
 | 
						||
 | 
						||
            if alreadyExists then
 | 
						||
                TriggerClientEvent('QBCore:Notify', src, "Bu uzantı zaten eklenmiş!", "error")
 | 
						||
                return false
 | 
						||
            end
 | 
						||
 | 
						||
            table.insert(newExtensions, newTarget)
 | 
						||
 | 
						||
            ExecuteSql("UPDATE 0r_rccar SET extensions = '"..json.encode(newExtensions).."' WHERE serieNumber = '"..data.info.serie.."'")
 | 
						||
 | 
						||
            RemoveItem(src, target.item.name, 1)
 | 
						||
 | 
						||
            TriggerClientEvent('0r-rccar:client:refreshExtension', src, newExtensions)
 | 
						||
 | 
						||
            return true
 | 
						||
        end
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:removeExtension', function(source, data, target)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
 | 
						||
    if Player then
 | 
						||
        local result = ExecuteSql("SELECT extensions FROM 0r_rccar WHERE serieNumber = '"..data.info.serie.."'")
 | 
						||
 | 
						||
        if result[1] then
 | 
						||
            local extensions = json.decode(result[1].extensions)
 | 
						||
            local newExtensions = {}
 | 
						||
 | 
						||
            for k, v in pairs(extensions) do
 | 
						||
                if v.name ~= target.name then
 | 
						||
                    table.insert(newExtensions, v)
 | 
						||
                end
 | 
						||
            end
 | 
						||
 | 
						||
            ExecuteSql("UPDATE 0r_rccar SET extensions = '"..json.encode(newExtensions).."' WHERE serieNumber = '"..data.info.serie.."'")
 | 
						||
            
 | 
						||
            AddItem(src, target.name, 1, false, nil)
 | 
						||
 | 
						||
            TriggerClientEvent('0r-rccar:client:refreshExtension', src, newExtensions)
 | 
						||
            
 | 
						||
            return true
 | 
						||
        end
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:getVehicleForCharge', function(source)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
    local vehicles = {}
 | 
						||
 | 
						||
    if Player then
 | 
						||
        if Config.Inventory == 'ox_inventory' then
 | 
						||
            local playerItems = exports.ox_inventory:GetInventoryItems(source)
 | 
						||
 | 
						||
            if playerItems and playerItems[1] then
 | 
						||
                for k, v in pairs(playerItems) do
 | 
						||
                    for x, y in pairs(Config.RCCars) do
 | 
						||
                        if v.name == y.item.name then
 | 
						||
                            table.insert(vehicles, { name = v.name, label = v.label, serie = v.metadata.serie, battery = GetBatteryLevel(v.metadata.serie) })
 | 
						||
                        end
 | 
						||
                    end
 | 
						||
                end
 | 
						||
            end
 | 
						||
        else
 | 
						||
            for k, v in pairs(Config.RCCars) do
 | 
						||
                local itemData = GetItem(src, v.item.name)
 | 
						||
 | 
						||
                if itemData and itemData ~= '[]' then
 | 
						||
                    for x, y in pairs(itemData) do
 | 
						||
                        table.insert(vehicles, { name = y.name, label = y.label, serie = y.info.serie, battery = GetBatteryLevel(y.info.serie) })
 | 
						||
                    end
 | 
						||
                end
 | 
						||
            end
 | 
						||
        end
 | 
						||
 | 
						||
        return vehicles
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:undoChargeVehicle', function(source, serie, item, battery)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
 | 
						||
    if Player then
 | 
						||
        ExecuteSql("UPDATE 0r_rccar SET battery = '"..battery.."' WHERE serieNumber = '"..serie.."'")
 | 
						||
        AddItem(src, item, 1, false, { serie = serie })
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
lib.callback.register('0r-rccar:server:checkMoney', function(source, price)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
 | 
						||
    if Player then
 | 
						||
        if CheckMoney(Player, price) then
 | 
						||
            return RemoveMoney(Player, price)
 | 
						||
        else
 | 
						||
            return false
 | 
						||
        end
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
RegisterNetEvent('0r-rccar:server:saveVehicle')
 | 
						||
AddEventHandler('0r-rccar:server:saveVehicle', function(vehicleData, batteryLevel)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
 | 
						||
    if Player then
 | 
						||
        local serie = vehicleData.info.serie
 | 
						||
 | 
						||
        if Config.ChargeSystem then
 | 
						||
            ExecuteSql("UPDATE 0r_rccar SET battery = '"..batteryLevel.."' WHERE serieNumber = '"..serie.."'")
 | 
						||
        end
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
RegisterNetEvent('0r-rccar:server:bombVehicle')
 | 
						||
AddEventHandler('0r-rccar:server:bombVehicle', function(vehicleData)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
 | 
						||
    if Player then
 | 
						||
        local serie = vehicleData.info.serie
 | 
						||
 | 
						||
        ExecuteSql("DELETE FROM 0r_rccar WHERE serieNumber = '"..serie.."'")
 | 
						||
        RemoveItem(src, vehicleData.item.name, 1)
 | 
						||
    end
 | 
						||
end)
 | 
						||
 | 
						||
RegisterNetEvent('0r-rccar:server:chargeVehicle')
 | 
						||
AddEventHandler('0r-rccar:server:chargeVehicle', function(serie, item)
 | 
						||
    local src = source
 | 
						||
    local Player = GetPlayer(source)
 | 
						||
 | 
						||
    if Player then
 | 
						||
        local itemData = GetItemByName(src, item, { serie = serie })
 | 
						||
 | 
						||
        if Config.Inventory == 'ox_inventory' then
 | 
						||
            RemoveItem(src, item, 1)
 | 
						||
        else
 | 
						||
            if itemData.info.serie == serie then
 | 
						||
                RemoveItem(src, item, 1)
 | 
						||
            end
 | 
						||
        end
 | 
						||
 | 
						||
    end
 | 
						||
end) |