145 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| if Link.framework ~= 'esx' and Link.framework ~= 'es_extended' then
 | |
|     return
 | |
| end
 | |
| 
 | |
| ESX = nil
 | |
| 
 | |
| if not Link.esx.useOldExport then
 | |
|     ESX = exports['es_extended']:getSharedObject()
 | |
| else
 | |
|     TriggerEvent('esx:getSharedObject', function(obj)
 | |
|         ESX = obj
 | |
|     end)
 | |
| end
 | |
| 
 | |
| function GetPlayersWithJob(jobs)
 | |
|     local matchingPlayers = {}
 | |
|     local players = GetPlayers()
 | |
|     local isTable = type(jobs) == 'table'
 | |
|     
 | |
|     for _, playerId in ipairs(players) do
 | |
|         local src = tonumber(playerId)
 | |
|         local xPlayer = ESX.GetPlayerFromId(src)
 | |
|         local job = xPlayer and xPlayer.job and xPlayer.job.name
 | |
|         
 | |
|         if job then
 | |
|             if isTable then
 | |
|                 for _, name in ipairs(jobs) do
 | |
|                     if job == name then
 | |
|                         table.insert(matchingPlayers, src)
 | |
|                         break
 | |
|                     end
 | |
|                 end
 | |
|             elseif job == jobs then
 | |
|                 table.insert(matchingPlayers, src)
 | |
|             end
 | |
|         end
 | |
|     end
 | |
|     
 | |
|     return matchingPlayers
 | |
| end
 | |
| 
 | |
| 
 | |
| function CanPlayerAfford(player, amount)
 | |
|     local xPlayer = ESX.GetPlayerFromId(player)
 | |
| 
 | |
|     if xPlayer.getAccount('money').money >= amount then
 | |
|         return true
 | |
|     end
 | |
| 
 | |
|     if xPlayer.getAccount('bank').money >= amount then
 | |
|         return true
 | |
|     end
 | |
| 
 | |
|     return false
 | |
| end
 | |
| 
 | |
| function AddPlayerMoney(player, amount, account)
 | |
|     local xPlayer = ESX.GetPlayerFromId(player)
 | |
|     if not xPlayer then
 | |
|         return false
 | |
|     end
 | |
| 
 | |
|     return xPlayer.addAccountMoney(account or 'money', amount)
 | |
| end
 | |
| 
 | |
| function RemovePlayerMoney(player, amount)
 | |
|     local xPlayer = ESX.GetPlayerFromId(player)
 | |
|     if not xPlayer then
 | |
|         return false
 | |
|     end
 | |
| 
 | |
|     if not CanPlayerAfford(player, amount) then
 | |
|         return false
 | |
|     end
 | |
| 
 | |
|     if xPlayer.getAccount('money').money >= amount then
 | |
|         xPlayer.removeAccountMoney('money', amount)
 | |
|         return true
 | |
|     end
 | |
| 
 | |
|     if xPlayer.getAccount('bank').money >= amount then
 | |
|         xPlayer.removeAccountMoney('bank', amount)
 | |
|         return true
 | |
|     end
 | |
| 
 | |
|     return false
 | |
| end
 | |
| 
 | |
| function RegisterUsableItem(...)
 | |
|     ESX.RegisterUsableItem(...)
 | |
| end
 | |
| 
 | |
| if Link.inventory == 'framework' then
 | |
|     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 AddPlayerItem(player, item, amount, meta)
 | |
|         local xPlayer = ESX.GetPlayerFromId(player)
 | |
| 
 | |
|         if xPlayer.canCarryItem(item, amount or 1) then
 | |
|             xPlayer.addInventoryItem(item, amount or 1, meta)
 | |
|             return true
 | |
|         else
 | |
|             return false
 | |
|         end
 | |
|     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 OpenCustomStash()
 | |
|         -- Not available in base framework inv
 | |
|         return true
 | |
|     end
 | |
|     
 | |
|     function GetStashItems()
 | |
|         -- Not available in standalone
 | |
|         return {}
 | |
|     end
 | |
| end
 | |
| 
 | |
| function GetPlayerCharacterId(player)
 | |
|     local xPlayer = ESX.GetPlayerFromId(player)
 | |
| 
 | |
|     return xPlayer.identifier
 | |
| end
 | 
