Lightbar überarbeitet
Überarbeitung der Lightbars
This commit is contained in:
		
							parent
							
								
									ba79461ce9
								
							
						
					
					
						commit
						2c78a1349f
					
				
					 99 changed files with 0 additions and 0 deletions
				
			
		
							
								
								
									
										62
									
								
								resources/[Lightbar]/EVC/Custom/Client/access.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								resources/[Lightbar]/EVC/Custom/Client/access.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,62 @@
 | 
			
		|||
-- ESX
 | 
			
		||||
if GetResourceState("es_extended") == "started" then
 | 
			
		||||
  Citizen.CreateThread(function()
 | 
			
		||||
    ESX = exports["es_extended"]:getSharedObject()
 | 
			
		||||
    while ESX.GetPlayerData().job == nil do
 | 
			
		||||
      Citizen.Wait(100)
 | 
			
		||||
    end
 | 
			
		||||
    TriggerServerEvent(GetCurrentResourceName()..":CheckAccess")
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  RegisterNetEvent('esx:setJob', function(_)
 | 
			
		||||
    TriggerServerEvent(GetCurrentResourceName()..":CheckAccess")
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  RegisterNetEvent('esx:setJob2', function(_)
 | 
			
		||||
    TriggerServerEvent(GetCurrentResourceName()..":CheckAccess")
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
-- QBCore
 | 
			
		||||
elseif GetResourceState("qb-core") == "started" then
 | 
			
		||||
  Citizen.CreateThread(function()
 | 
			
		||||
    QBCore = exports['qb-core']:GetCoreObject()
 | 
			
		||||
    while QBCore.Functions.GetPlayerData().job == nil do
 | 
			
		||||
      Citizen.Wait(100)
 | 
			
		||||
    end
 | 
			
		||||
    TriggerServerEvent(GetCurrentResourceName()..":CheckAccess")
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  RegisterNetEvent('QBCore:Client:OnPlayerUnload', function()
 | 
			
		||||
    TriggerServerEvent(GetCurrentResourceName()..":CheckAccess")
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  RegisterNetEvent('QBCore:Client:OnJobUpdate', function(_)
 | 
			
		||||
    TriggerServerEvent(GetCurrentResourceName()..":CheckAccess")
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
-- Standalone / Other
 | 
			
		||||
else
 | 
			
		||||
  Citizen.CreateThread(function()
 | 
			
		||||
    TriggerServerEvent(GetCurrentResourceName()..":CheckAccess")
 | 
			
		||||
  end)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
hasAccess = false
 | 
			
		||||
RegisterNetEvent(GetCurrentResourceName()..":CheckAccess", function(access_table)
 | 
			
		||||
  hasAccess = false
 | 
			
		||||
  for type, _ in pairs(Config.Models) do
 | 
			
		||||
    for model, v in pairs(access_table[type]) do
 | 
			
		||||
      Config.Models[type][model].HasAccess = v
 | 
			
		||||
      if v then
 | 
			
		||||
        hasAccess = true
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  for model, v in pairs(access_table["siren"]) do
 | 
			
		||||
    Config.SirenTones[model].HasAccess = v
 | 
			
		||||
    if v then
 | 
			
		||||
      hasAccess = true
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end)
 | 
			
		||||
							
								
								
									
										13
									
								
								resources/[Lightbar]/EVC/Custom/Client/block.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								resources/[Lightbar]/EVC/Custom/Client/block.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
-- exports.EVC:DisableBind(true / false)
 | 
			
		||||
 | 
			
		||||
-- ESX
 | 
			
		||||
Citizen.CreateThread(function()
 | 
			
		||||
  while ESX == nil do
 | 
			
		||||
    TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
 | 
			
		||||
    Citizen.Wait(1000)
 | 
			
		||||
  end
 | 
			
		||||
  while true do
 | 
			
		||||
    Citizen.Wait(500)
 | 
			
		||||
    exports.EVC:DisableBind(#(ESX.UI.Menu.GetOpenedMenus()) > 0)
 | 
			
		||||
  end
 | 
			
		||||
end)
 | 
			
		||||
							
								
								
									
										114
									
								
								resources/[Lightbar]/EVC/Custom/Server/access.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								resources/[Lightbar]/EVC/Custom/Server/access.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,114 @@
 | 
			
		|||
if GetResourceState("es_extended") == "started" then
 | 
			
		||||
  ESX = exports["es_extended"]:getSharedObject()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
if GetResourceState("qb-core") == "started" then
 | 
			
		||||
  QBCore = exports['qb-core']:GetCoreObject()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function IsIdAllowed(_source, id)
 | 
			
		||||
 | 
			
		||||
  -- By Identifier
 | 
			
		||||
  for _, id2 in pairs(GetPlayerIdentifiers(_source)) do
 | 
			
		||||
    if id == id2 then
 | 
			
		||||
      return true
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  -- By ACE permission
 | 
			
		||||
  if IsPlayerAceAllowed(_source, id) then
 | 
			
		||||
    return true
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  -- By job with ESX
 | 
			
		||||
  if GetResourceState("es_extended") == "started" then
 | 
			
		||||
    while ESX.GetPlayerFromId(_source) == nil or ESX.GetPlayerFromId(_source).job == nil do
 | 
			
		||||
      Citizen.Wait(100)
 | 
			
		||||
    end
 | 
			
		||||
    local Player = ESX.GetPlayerFromId(_source)
 | 
			
		||||
    if id == Player.job.name then
 | 
			
		||||
      return true
 | 
			
		||||
    end
 | 
			
		||||
    if id == Player.job.name ..":".. Player.job.grade then
 | 
			
		||||
      return true
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  -- By job with QB Core
 | 
			
		||||
  if GetResourceState("qb-core") == "started" then
 | 
			
		||||
    local Player = QBCore.Functions.GetPlayer(_source)
 | 
			
		||||
    if id == Player.PlayerData.job.name then
 | 
			
		||||
      return true
 | 
			
		||||
    end
 | 
			
		||||
    if id == Player.PlayerData.job.name ..":".. Player.PlayerData.job.grade.level  then
 | 
			
		||||
      return true
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  -- By a custom method
 | 
			
		||||
  -- .......
 | 
			
		||||
  -- return true / false
 | 
			
		||||
 | 
			
		||||
  return false
 | 
			
		||||
end
 | 
			
		||||
-- Check which element the player is allowed to use
 | 
			
		||||
RegisterNetEvent(GetCurrentResourceName()..':CheckAccess', function()
 | 
			
		||||
  local _source = source
 | 
			
		||||
  local default_value = false
 | 
			
		||||
  if Config.WhiteList and Config.WhiteListEnabled then
 | 
			
		||||
    for _, id in pairs(Config.WhiteList) do
 | 
			
		||||
      default_value = IsIdAllowed(_source, id)
 | 
			
		||||
      if default_value then
 | 
			
		||||
        break
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  local Access = {}
 | 
			
		||||
  for type, _ in pairs(Config.Models) do
 | 
			
		||||
    Access[type] = {}
 | 
			
		||||
    for model, _ in pairs(Config.Models[type]) do
 | 
			
		||||
 | 
			
		||||
      if Config.WhiteListEnabled then
 | 
			
		||||
        if Config.Models[type][model].WhiteList == nil then
 | 
			
		||||
          Access[type][model] = default_value
 | 
			
		||||
        else
 | 
			
		||||
          Access[type][model] = false
 | 
			
		||||
          for _, id in pairs(Config.Models[type][model].WhiteList) do
 | 
			
		||||
            Access[type][model] = IsIdAllowed(_source, id)
 | 
			
		||||
            if Access[type][model] then
 | 
			
		||||
              break
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      else
 | 
			
		||||
        Access[type][model] = true
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  local type = "siren"
 | 
			
		||||
  Access[type] = {}
 | 
			
		||||
  for k,_ in pairs(Config.SirenTones) do
 | 
			
		||||
    if Config.WhiteListEnabled then
 | 
			
		||||
      -- Default whitelist is the one defined at the top
 | 
			
		||||
      if Config.SirenTones[k].WhiteList == nil then
 | 
			
		||||
        Access[type][k] = default_value
 | 
			
		||||
      else
 | 
			
		||||
        Access[type][k] = false
 | 
			
		||||
        for _, id in pairs(Config.SirenTones[k].WhiteList) do
 | 
			
		||||
          Access[type][k] = IsIdAllowed(_source, id)
 | 
			
		||||
          if Access[type][k] then
 | 
			
		||||
            break
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    else
 | 
			
		||||
      Access[type][k] = true
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  -- Respond to the client
 | 
			
		||||
  TriggerClientEvent(GetCurrentResourceName()..':CheckAccess', _source, Access)
 | 
			
		||||
end)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue