Ok, When i play my game inStudio the voting system work perfectly fine. but when the player Respawning/LoadCharacter, the Voting system didn't count the player after they respawning. Any Idea?

ServerScript

local rep = game.ReplicatedStorage
local assets = rep.Assets

local maps = assets.Maps

local signal = assets.Signal
local event = signal.Event
local FEvent = signal.FEvent

local mapVotes = {}

local Game = workspace.Game
local g_maps = Game.Maps
local stats = Game.Stats
local settings = {
	playersRequired = 1	
}
event.OnServerEvent:connect(function(player, variables)
	if variables.reason == 'voteOnMap' then
		for a,b in pairs(mapVotes) do
			for d,c in pairs(b.players) do
				if c.player == player.UserId then
					table.remove(b.players, d)
					break
				end
			end
		end
		for a,b in pairs(mapVotes) do
			if b.id == variables.itemNum then
				table.insert(b.players, {player = player.UserId})
			end
		end
	elseif variables.reason == "removeFromVote" then
		for a,b in pairs(mapVotes) do
			for d,c in pairs(b.players) do
				if c.player == player.UserId then
					table.remove(b.players, d)
					break
				end
			end
		end
	end
end)

function getMap()
	local randomMap = maps:GetChildren()[math.random(1,#maps:GetChildren())]
	for a,b in pairs(mapVotes) do
		if b.mapName == randomMap.Name then
			return getMap()
		end
	end
	return randomMap.Name
end

while wait() do
	if #game.Players:GetPlayers() < settings.playersRequired then
		local playersNeeded = settings.playersRequired-#game.Players:GetPlayers()
		stats.Status.Value = playersNeeded.." "..((playersNeeded==1 and "Player")or "Players").." Need player"
	else
		mapVotes = {}
		for a,b in pairs(Game.Special.VotingPads:GetChildren()) do
			table.insert(mapVotes, {id = tonumber(b.Name:match("%d+")); mapName=getMap(); players={};})
		end
		
		event:FireAllClients({reason="StartVoting"})
	end
end)

Client Script

local rep = game.ReplicatedStorage
local assets = rep.Assets

local maps = assets.Maps

local signal = assets.Signal
local event = signal.Event
local FEvent = signal.FEvent

local Game = workspace.Game
local stats = Game.Stats

local vars = {
	currentvote = nil;
	services = {};
}

event.OnClientEvent:connect(function(variables)
	if variables.reason == "StartVoting" then
		table.insert(vars.services, game:GetService("RunService").RenderStepped:Connect(function()
			local ray = Ray.new(char.PrimaryPart.CFrame.p, Vector3.new(0,-1000,0))
			local object = workspace:FindPartOnRay(ray, char, false, false)
			if object and  object.Name:match("VotingPad") then
				local votingPadNum = tonumber(object.Name:match("%d+"))
				if vars.currentvote == nil then
					vars.currentvote = votingPadNum
					event:FireServer({reason="voteOnMap"; itemNum = votingPadNum;})
				elseif vars.currentvote~= votingPadNum then
					vars.currentvote = votingPadNum
					event:FireServer({reason="voteOnMap"; itemNum = votingPadNum;})
				end
			elseif vars.currentvote ~= nil then
				vars.currentvote = nil
				event:FireServer({reason="removeFromVote"})
			end
		end))
	elseif variables.reason == "endVoting" then
		for a,b in pairs(vars.services) do
			b:disconnect()
		end
		vars.services={}
	end
end)