Add a client side boolean to register if the user has or not the radio and then trigger to all client. Do a client side check to see if the user has the radio and if so display the msg

local input = 0
local HasDarkNetAccess = false

RegisterNetEvent('esx:playerLoaded')
AddEventHandler('esx:playerLoaded', function(xPlayer)
	PlayerData = xPlayer

	for i=1, #PlayerData.inventory, 1 do
		if PlayerData.inventory[i].name == 'boitier_darknet' then
			if PlayerData.inventory[i].count > 0 then
				HasDarkNetAccess = true
			end
		end
	end
end)

RegisterNetEvent('esx_weashop:darknet')
AddEventHandler('esx_weashop:darknet', function()

	-- if PlayerData.job.name ~= 'police' then
	if HasDarkNetAccess then
		DisplayOnscreenKeyboard(false, "FMMC_KEY_TIP8", "", "", "", "", "", 150)
		local input = true
		Citizen.CreateThread(function()
			while input do
				if input == true then
					HideHudAndRadarThisFrame()
					if UpdateOnscreenKeyboard() == 3 then
						input = false
					elseif UpdateOnscreenKeyboard() == 1 then
						local inputText = GetOnscreenKeyboardResult()
						if string.len(inputText) > 0 then
							TriggerServerEvent('SyncAmmuAd', inputText) 
							input = false
						else
							DisplayOnscreenKeyboard(false, "FMMC_KEY_TIP8", "", "", "", "", "", 150)
						end
					elseif UpdateOnscreenKeyboard() == 2 then
						input = false
					end
				end
				Citizen.Wait(0) 
			end	
		end)
	end
	-- end
end)

RegisterNetEvent('AddDarknet')
AddEventHandler('AddDarknet',function()
	HasDarkNetAccess = true
end)

RegisterNetEvent('RemoveDarknet')
AddEventHandler('RemoveDarknet',function()
	HasDarkNetAccess = false
end)

RegisterNetEvent('DisplayAmmuAd')
AddEventHandler('DisplayAmmuAd',function(inputText)
	if HasDarkNetAccess then
		SetNotificationTextEntry("STRING");
		AddTextComponentString(inputText);
		SetNotificationMessage("CHAR_AMMUNATION", "CHAR_AMMUNATION", true, 1, "~y~DarkBoitier~", "");
		DrawNotification(false, true);
	end
end)

Server


ESX.RegisterUsableItem('boitier_darknet', function(source)
	local _source = source
    local xPlayer = ESX.GetPlayerFromId(_source)
	local xPlayers = ESX.GetPlayers()
	
	local DarkNetItem = xPlayer.getInventoryItem('boitier_darknet')

	
	if DarkNetItem.count > 0 then
	
		for i=1, #xPlayers, 1 do
			local xPlayer = ESX.GetPlayerFromId(xPlayers[i])
			if xPlayer.job.name ~= 'police' then
				TriggerClientEvent('esx_weashop:darknet', source)	
			end
		end

	end
	
end) 

RegisterServerEvent("SyncAmmuAd")
AddEventHandler('SyncAmmuAd', function(inputText)
	TriggerClientEvent('DisplayAmmuAd', -1, inputText)
end)

AddEventHandler('esx:onAddInventoryItem', function(source, item, count)
	if item.name == 'boitier_darknet' then
		TriggerClientEvent('AddDarknet', source)
	end
end)

AddEventHandler('esx:onRemoveInventoryItem', function(source, item, count)
	if item.name == 'boitier_darknet' and item.count < 1 then
		TriggerClientEvent('RemoveDarknet', source)
	end
end)

1 Like