85 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
if Config.esxSettings.enabled then
 | 
						|
    ESX = nil
 | 
						|
    
 | 
						|
    if Config.esxSettings.useNewESXExport then
 | 
						|
        ESX = exports['es_extended']:getSharedObject()
 | 
						|
    else
 | 
						|
        TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
 | 
						|
    end
 | 
						|
    
 | 
						|
    ESX.RegisterUsableItem(Config.items.towingRope, function(source)
 | 
						|
        if Config.jobWhitelist.towing.enabled then
 | 
						|
            if not IsPlayerJobWhitelisted(source, Config.jobWhitelist.towing.jobs) then
 | 
						|
                return TriggerClientEvent('kq_towing:client:notify', source, L('~r~You may not use this item'))
 | 
						|
            end
 | 
						|
        end
 | 
						|
        TriggerClientEvent('kq_towing:client:startRope', source, false, true)
 | 
						|
    end)
 | 
						|
 | 
						|
    ESX.RegisterUsableItem(Config.items.winch, function(source)
 | 
						|
        if Config.jobWhitelist.winch.enabled then
 | 
						|
            if not IsPlayerJobWhitelisted(source, Config.jobWhitelist.winch.jobs) then
 | 
						|
                return TriggerClientEvent('kq_towing:client:notify', source, L('~r~You may not use this item'))
 | 
						|
            end
 | 
						|
        end
 | 
						|
        TriggerClientEvent('kq_towing:client:startRope', source, true, true)
 | 
						|
    end)
 | 
						|
    
 | 
						|
    function IsPlayerJobWhitelisted(player, jobs)
 | 
						|
        local xPlayer = ESX.GetPlayerFromId(player)
 | 
						|
        if not xPlayer then
 | 
						|
            return false
 | 
						|
        end
 | 
						|
        local job = xPlayer.getJob()
 | 
						|
        
 | 
						|
        return Contains(jobs, job.name)
 | 
						|
    end
 | 
						|
    
 | 
						|
    function GetPlayerItemData(player, item)
 | 
						|
        local xPlayer = ESX.GetPlayerFromId(player)
 | 
						|
        
 | 
						|
        return xPlayer.getInventoryItem(item)
 | 
						|
    end
 | 
						|
    
 | 
						|
    function GetPlayerItemCount(player, item)
 | 
						|
        local data = GetPlayerItemData(player, item)
 | 
						|
        if not data then
 | 
						|
            return 0
 | 
						|
        end
 | 
						|
        return data.count or data.amount or 0
 | 
						|
    end
 | 
						|
    
 | 
						|
    function RemovePlayerItem(player, item, amount)
 | 
						|
        if GetPlayerItemCount(player, item) < amount then
 | 
						|
            return false
 | 
						|
        end
 | 
						|
        
 | 
						|
        local xPlayer = ESX.GetPlayerFromId(player)
 | 
						|
        xPlayer.removeInventoryItem(item, amount or 1)
 | 
						|
        
 | 
						|
        return true
 | 
						|
    end
 | 
						|
 | 
						|
    function AddPlayerItem(player, item, amount)
 | 
						|
        local xPlayer = ESX.GetPlayerFromId(tonumber(player))
 | 
						|
 | 
						|
        -- Support for old esx which didn't use weight for inventory size but rather item limit per item type
 | 
						|
        if Config.esxSettings.oldEsx then
 | 
						|
            local esxItem = xPlayer.getInventoryItem(item)
 | 
						|
 | 
						|
            if esxItem.limit == -1 or (esxItem.count + amount) <= esxItem.limit then
 | 
						|
                xPlayer.addInventoryItem(item, amount or 1)
 | 
						|
                return true
 | 
						|
            else
 | 
						|
                return false
 | 
						|
            end
 | 
						|
        else
 | 
						|
            if xPlayer.canCarryItem(item, amount or 1) then
 | 
						|
                xPlayer.addInventoryItem(item, amount or 1)
 | 
						|
                return true
 | 
						|
            else
 | 
						|
                return false
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 |