Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

When I switched to FE, This broke?

I decided to switch to FE, so I don't get hacked. Can someone tell me what broke? This is in a server script inside of a text button in the startergui.

local passid = 236050258 -- The ID of the gamepass goes here
local GamePassService = game:GetService('GamePassService')
local player = script.Parent.Parent.Parent.Parent.Parent
--[[
while true do
	wait(1)
	for i,v in pairs(game.ReplicatedStorage.Perkers:GetChildren()) do
	if GamePassService:PlayerHasPass(player, passid) then
		player:FindFirstChild("PlayerGui").WalkSpeedPass.Frame.Visible = true
	elseif player.Name == v.Value then
		player:FindFirstChild("PlayerGui").WalkSpeedPass.Frame.Visible = true
else
	player:FindFirstChild("PlayerGui").WalkSpeedPass.Frame.Visible = false
	script.Disabled = true
		end
	end
end
--]]

function hasGamePass()
	return GamePassService:PlayerHasPass(player, passid)
end

function isPerker()
	for _, perker in pairs(game.ReplicatedStorage.Perkers:GetChildren()) do
		if perker.Value == player.Name then
			return true
		end
	end
	return false
end

local frame = script.Parent.Parent
while true do
	frame.Visible = isPerker() or hasGamePass()
	wait(1)
end

1 answer

✓ Accepted answer

With FilteringEnabled, the server no longer has access to clients' GUIs. Only LocalScripts can modify GUIs with FilteringEnabled, as LocalScripts run client-side. If you want a GUI to display on the client, you'll have to use RemoteEvents. Here's an example of how you could use a RemoteEvent to make your current method work with FilteringEnabled...

First, create a RemoteEvent in ReplicatedStorage and name it ShowGuiEvent.

Here's a basic example of what you're trying to accomplish:

[Script (in ServerScriptService or equivalent)]

local ShowGuiEvent = game.ReplicatedStorage.ShowGuiEvent

ShowGuiEvent:FireClient(player) -- player should be the player you want to send the message to

[LocalScript (parented to the frame you want to show)]

local ShowGuiEvent = game.ReplicatedStorage.ShowGuiEvent

local frame = script.Parent


ShowGuiEvent.OnClientEvent:connect(function()
    frame.Visible = true
end)

Keep in mind that the RemoteEvent can take up to 2 seconds to be received on the client (though it usually takes less than a second.)

To learn more about RemoteEvents and RemoteFunctions, this wiki page will likely prove invaluable.

Good luck! I hope this helps.

This discussion is preserved as it was. New answers, comments, and votes are closed.