I have a playeradded script that adds a player as a folder and includes stats for the game. How do I have it so that if a player joins, the stats board will be updated depending on what has happened during the game.

Data Store Script:

local DataStore = game:GetService("DataStoreService"):GetDataStore("TA5970AJ3B")

local ServStorage = game:GetService("ServerStorage")
local Players = ServStorage:WaitForChild("Players")

local RepStorage = game:GetService("ReplicatedStorage")
local StatsChanged = RepStorage:WaitForChild("StatsChanged")
local PointsEvent = StatsChanged:WaitForChild("Points")
local ReboundsEvent = StatsChanged:WaitForChild("Rebounds")
local StealsEvent = StatsChanged:WaitForChild("Steals")
local BlocksEvent = StatsChanged:WaitForChild("Blocks")
local AssistsEvent = StatsChanged:WaitForChild("Assists")

local UpdateBoard = RepStorage:WaitForChild("StatUpdate")

game.Players.PlayerAdded:Connect(function(player)
	--Variables--
	local Namee = Instance.new("Folder", Players) --their own folder
	Namee.Name = player.Name	
	
	local folder = Instance.new("Folder", Namee) --inside their folder, a stats folder
	folder.Name = 'Stats'
	
	local pts = Instance.new("IntValue", folder)
	pts.Name = 'Points'
	pts.Value = 0
	
	local ast = Instance.new("IntValue", folder)
	ast.Name = 'Assists'
	ast.Value = 0
	
	local reb = Instance.new("IntValue", folder)
	reb.Name = 'Rebounds'
	reb.Value = 0
	
	local steal = Instance.new("IntValue", folder)
	steal.Name = 'Steals'
	steal.Value = 0
	
	local block = Instance.new("IntValue", folder)
	block.Name = 'Blocks'
	block.Value = 0
	
	pts.Changed:Connect(function()
		PointsEvent:FireAllClients(player, pts.Value)
	end)
	
	ast.Changed:Connect(function()
		AssistsEvent:FireAllClients(player, ast.Value)
	end)
	
	reb.Changed:Connect(function()
		ReboundsEvent:FireAllClients(player, reb.Value)
	end)
	
	steal.Changed:Connect(function()
		StealsEvent:FireAllClients(player, steal.Value)
	end)
	
	block.Changed:Connect(function()
		BlocksEvent:FireAllClients(player, block.Value)
	end)
	
	player.CharacterAdded:Connect(function(character) --update board for when a player joins
		UpdateBoard:FireClient(player, 
			pts.Value, ast.Value, 
			reb.Value, steal.Value,
			block.Value)
	end)
	
end)

game.Players.PlayerRemoving:Connect(function(player)
	for i, v in pairs(Players:GetChildren()) do
		if v.Name == player.Name then
			v:Destroy()
		end
	end
end)

Local Script:

local player = game.Players.LocalPlayer
local playergui = player:WaitForChild("PlayerGui")

local Stats = playergui:WaitForChild("Stats")
local StatFrame = Stats:WaitForChild("Frame")
local PlayerFolder = StatFrame:WaitForChild("PlayerFolder")

local RepStorage = game:GetService("ReplicatedStorage")
local UpdateBoard = RepStorage:WaitForChild("StatUpdate")

UpdateBoard.OnClientEvent:Connect(function(pts, ast, reb, steal, block)
	for i, v in pairs(game.Players:GetPlayers()) do --trying to define each player
		local Players = PlayerFolder:GetChildren()
		local PlayersFrame = Players:WaitForChild(v.Name)
		local StatsFrame = PlayersFrame:WaitForChild("Stats")
		local pointstext = StatsFrame:WaitForChild("Points")
		local asttext = StatsFrame:WaitForChild("Assists")
		local rebtext = StatsFrame:WaitForChild("Rebounds")
		local stealtext = StatsFrame:WaitForChild("Steals")
		local blocktext = StatsFrame:WaitForChild("Blocks")
		pointstext.Text = pts.Value
		asttext.Text = ast.Value
		rebtext.Text = reb.Value
		stealtext.Text = steal.Value
		blocktext.Text = block.Value
	end
end)