I’m trying to create a LocalPart script. There are plenty of tutorial on the internet about this matter, but most of them seem to use finicky strategies such as placing scripts in StarterGUI that exploit the system more than untilising it.
So, I’m mainly trying to see if there is a better method or strategy to resolve this.
FilteringEnabled already does all of this job for you. Any parts created or destroyed on the client will only show up on that client, and won’t replicate to the server. When a server does any change to a part, it will replicate to ALL clients.
So if you just want to create a part that only a specific player sees, just create it on their client, inside a LocalScript.
StarterGui will work for what you are trying to achieve, but I would avoid it. The reason why many tutorials use it is because they were made before StarterPlayer service was added. Placing local stuff in Lighting was also a thing back then.
StarterPlayer contains StarterCharacterScripts which will run its contents every time the character is spawned and StarterPlayerScripts which will run when the player is loaded. StarterPlayerScripts should be generally used for LocalScripts that only need to be run once.
ModuleScripts can be also stored in ReplicatedStorage or ReplicatedFirst if you want them to be accessible from LocalScripts, though they can be placed into pretty much anything else. ReplicatedFirst acts just like ReplicatedStorage, but its contents are loaded before scripts get executed so it’s good for loading your game.
Don’t fully understand what you’re trying to do but :
all should be in a local script, separately for what you’re trying to achieve, and the part itself should be in replicated storage there is no need to load it before anything else in replicated first unless you’re trying to do something with datastores/
--this one is for creating a part just shown to one client/player upon clicking a gui object
local player = game:GetService("Players").LocalPlayer
script.Parent.MouseButton1Click:Connect(function()
local part = Instance.new("Part")
part.Parent = workspace
part.Anchored=true
part.Position = Vector3.new(1068, 113, -501)--at this position
part.Name = "My part"
part.BrickColor=BrickColor.new("Bright blue")
end)
--or a script for getting a part from replicated storage and showing it to a certain player
script.Parent.MouseButton1Click:Connect(function()--when the button is clicked , then..
local playes_to_rep_to= {
"XxELECTROFUSIONxX";
"My player name";
}
if table.find(playes_to_rep_to,plr.Name)
then local cp = game.ReplicatedStorage.Part:Clone()
cp.Parent = workspace
end
end)
--or for simply replicating a part to players of a team on joining
game.Players.PlayerAdded:Connect(function(player)
if player.Team.Name == "ThisTeamGetsToSeeThisPart.."
then local plrt = player
game.ReplicatedStorage.Part:Clone().Parent = plrt
end
end)
–edit, took me a minute it shouldnt be that complicated, unless i dont understand your issue that is