Yesterday I was tinkering with some GUIs and I stumbled when I ran this script:
for i,p in pairs(game.Players:GetPlayers()) do p.PlayerGui.ScreenGui.TextLabel.Text = "Hello" end
When I put those 3 lines in a function that was fired via a ClickDetector's MouseClick
event like so...
script.Parent.ClickDetector.MouseClick:Connect(function() for _,p in pairs(game.Players:GetPlayers()) do p.PlayerGui.ScreenGui.TextLabel.Text = "Hello" end end)
...and then ran the script, believe it or not, the server script accessed the PlayerGui and edited the TextLabel with FE on and no RemoteEvents. Could this possibly be a bug?
If the gui was placed in the PlayerGui by a server script then the server can access it perfectly fine. Nothing revolutionary. You probably parent the ScreenGui using some server script.