Picking Targets

What I want to achieve - I want people to have each other as a target e.g Player1 Has Player2 as target and they can both kill each other but other people cant heres my script it keeps picking Player1 rarely player2 as target


local module = {}

-- DO NOT REMOVE THINGS WILL BREAK
module.Playing = {}
module.Targets = {}
module.Targets2 = {}
module.PlayingRem = {}

-- Settings
module.MinimumPlayers = 2
module.IntermissionTime = 5
module.KnifeGiveTime = 5
module.GameTime = 60 * 3

return module


local module = {}

-- Services
local Players = game:GetService("Players")
local RS = game:GetService("ReplicatedStorage")
local SS = game:GetService("ServerStorage")

-- Remotes
local SendStatus = RS["Remotes"]["SendStatus"]

-- Modules
local settings_ = require(script.Parent.Parent:WaitForChild("Settings"))

-- Functions
function isInTable(tableValue, toFind)
	local found = false
	for _,v in pairs(tableValue) do
		if v==toFind then
			found = true
			break;
		end
	end
	return found
end

function tablefind(tab,el)
	for index, value in pairs(tab) do
		if value == el then
			return index
		end
	end
end

function Format(Int)
	return string.format("%02i", Int)
end

function convertToHMS(Seconds)
	local Minutes = (Seconds - Seconds%60)/60
	Seconds = Seconds - Minutes*60
	local Hours = (Minutes - Minutes%60)/60
	Minutes = Minutes - Hours*60
	return Format(Hours)..":"..Format(Minutes)..":"..Format(Seconds)
end

function module.GiveTargets()
	print("Selecting Targets...")
	
	
	for _, x in pairs(settings_.Playing) do
		local target = settings_.Playing[math.random(1, #settings_.Playing)]
		local id = target.UserId
		local reward = math.random(5, 15)

		
		if isInTable(settings_.Targets, x) and isInTable(settings_.Targets2, target) then
			
		else
			print(x.Name .. " - " .. target.Name)
			RS.Remotes.ShowTarget:FireClient(x, id, target.Name, reward)
			table.insert(settings_.Targets, x)
			table.remove(settings_.Playing, tablefind(settings_.Playing, x))
			table.insert(settings_.PlayingRem, x)
			wait(.01)
			RS.Remotes.ShowTarget:FireClient(target, id, x.Name, reward)
			table.insert(settings_.Targets2, target)
		end
	end
	wait(4)
	module.GiveKnives()
end

function module.GiveKnives()
	
	RS.Remotes.StartTimer:FireAllClients(settings_.KnifeGiveTime)
	
	wait(settings_.KnifeGiveTime)

	
	for _, x in pairs(settings_.PlayingRem, settings_.Playing) do
		if x.Backpack:FindFirstChild("Knife") or x.Character:FindFirstChild("Knife") then

		else
			local knife = game.ReplicatedStorage.Knife:Clone()
			knife.Parent = x.Backpack
		end
	end
	
	for i = 1, settings_.GameTime do
		RS.Remotes.SendStatus:FireAllClients(convertToHMS(settings_.GameTime - i))
		
		
		if i == settings_.GameTime then
			break
		end
		wait(1)
	end
end

function module.RemoveKnives()
	for _, x in pairs(settings_.PlayingRem) do
		local knife = x.Backpack:FindFirstChild("Knife") or x.Character:FindFirstChild("Knife")
		knife:Destroy()
	end
end

return module


also it only sends the notification to player1

heres the notification script


game.ReplicatedStorage.Remotes.ShowTarget.OnClientEvent:Connect(function(userId, name, reward)
	local GOAL_POSITION = UDim2.new(0.415, 0, 0.073, 0)
	local START_POSITION = UDim2.new(0.415, 0, -2, 0)
	

	local function callback() 
		
	end
	
	local function tweenPosition(pos)
		local willPlay = script.Parent.Target:TweenPosition(
			pos,
			Enum.EasingDirection.In,
			Enum.EasingStyle.Sine,
			2,
			true,
			callback
		)
	end
	
	local thumbType = Enum.ThumbnailType.HeadShot
	local thumbSize = Enum.ThumbnailSize.Size420x420
	local content, isReady = game.Players:GetUserThumbnailAsync(userId, thumbType, thumbSize)
	script.Parent.Target.Position = START_POSITION
	script.Parent.Target.Subtitle.Text = name
	script.Parent.Target.Avatar.Image = content
	script.Parent.Target.Reward.Text = "Reward: " .. reward
	
	tweenPosition(GOAL_POSITION)
end)

local script ^

Consider using comments in your code @SpookyHexcode to clarify what, how and when things get done. This just makes things easier for people who are unfamiliar to your code, to understand it better/faster instead of trying to reverse engineer it.