Recently, as most of us know of, most (if not all) Roblox games which are classed as an Experimental Mode game are now locked to friends
This tutorial is in no way 100% correct, I am simply using what I know
This obviously killed many 2008 classics as well as some of my older games
What is Filtering Enabled
Before we actually get to converting, I should probably go over what FE is
FilteringEnabled prevents local scripts and server scripts from communicating with each other automatically, this also means that any parts, or instances which are changed on a client do NOT replicate to the server
Most (but not all) instances are auto replicated to the client on the server
Because local scripts and ServerScripts can no longer communicate with each other, this means scripts inside things like GUIs no longer work, as the mouse is client-side
Step 1: Find any connections between the client and the server
First of all, lets say you had a LocalScript that kills a Humanoid, on EM games, this will auto replicate to the server, but with FE it will not
To fix this, we will need a RemoteEvent. Using a listener on the server, this will fix the issue
Killing a player through a LocalScript with FE [code]
First of all, lets assume you have a RemoteEvent inside ReplicatedStorage called KillHuman
So lets hook up the listener to the event inside a ServerScript
game:GetService(“ReplicatedStorage”).KillHuman.OnServerEvent:Connect(function(p)
p.Character.Health = 0
end)
And so now when we call this event in a local script with :FireServer()
it will kill the local player
If a value is required from the server we use RemoteFunctions()
Lets say you required an object out of ServerStorage, obviously, clients cant see ServerStorage, but the server can
Lets say this object was called Map1 and we want to give a clone of it to the client, lets use a RemoteFunction called GetMap1
As before, lets start with the ServerSide code
game:GetService(“ReplicatedStorage”).GetMap1:OnInvoke = function(player)
local objC = game:GetService(“ReplicatedStorage”).Map1:Clone()
return objC
end
And then so if we call this from the client with
``local obj = game:GetService(“ReplicatedStorage”).GetMap1:InvokeServer()```
The client will be given Map1 under the local variable obj
Step 2: Convert any server scripts from ScreenGuis and the player to local scripts
This is simply because ServerScripts will not run inside the player, but local scripts will
This is pretty easy to rework, just repeat Step 1 if the server is required to do anything
I hope this helped!
ps please help me with understanding dividers