I'm trying to make a ready system, so when a player presses a button on a surfaceGui it updates the surfaceGui for everyone and says that the player is ready. I have more to this script but it has nothing to do with the question so i'm only going to put the ready system in the code down below.

Server script in ServerScriptService:

local Players = game:GetService("Players")

local rs = game.ReplicatedStorage

local PlrReadySt = "Not Ready"

local function onPlayerReady(player)
for i,readyPlr in pairs(game.Players:GetChildren()) do
	for i,v in pairs(readyPlr.PlayerGui.MainUi.SurfaceGui.MainFrame.InfoFrame.PlrList:GetChildren()) do
		if v.Name == player.Name then
			if PlrReadySt == "Ready" then
				PlrReadySt = "Not Ready"
				v.StReady.Text = PlrReadySt	
				player.Ready.Value = false
			else
				PlrReadySt = "Ready"
				v.StReady.Text = PlrReadySt	
				player.Ready.Value = true
			end
		end
	end
end
end
rs.Events.PlayerReady.OnServerEvent:Connect(onPlayerReady)

Local script in StarterGui:

local Players = game:GetService("Players")

local function onReadyBtn()
	game.ReplicatedStorage.Events.PlayerReady:FireServer()
end

script.Parent.MainUi.SurfaceGui.MainFrame.ReadyBtn.MouseButton1Click:Connect(onReadyBtn)