Hello everyone!
I'm trying to convert a game to FE but it has a complicated placement system. It clones a part and then places it. But when you place it, only the player that placed it can see it.
I wanted to solve this by creating a thing when the event gets fired, it contains the created part as a parameter. Then the server will parent the provided part to workspace. But it always says "Atempt to index local 'part': a nil value".
I'm sure that my script is right because i've seen some other people having the same problem: not being able to pass instances though remoteEvents. I've also tried parenting it to a folder in replicatedStorage but it looks like the server can't see what the client putted in replicated storage.... T
hen i thought "Hey! A server and a client can read the leaderstats, so maybe i'm able to put an objectValue in there with a link to the created part. Wrong. The server can see that there is a leaderstat but it can't see the value if a client changed it....
So my question: How will i be able to pass a client sided created part to the server?
print("Thanks for your time and help")
Jonas (marketmanager1)
First of all, when you’re creating a part on the client then replicating it to the server you’ll need a local script and a script. The script should be placed in ServerScriptService
and put the localscript wheere you need it to go.
If I make mistakes it because I’m typing fast
Roblox Wiki on remote events and functions
In the Script:
1 | local RemoEv = Instance.new( "RemoteEvent" ) -- Allow us to communicate between the server and the client |
2 | RemoEv.Name = "PartTransfer_$001" -- A complicated name makes it harder for people to bypass Filtering. |
3 | RemoEv.Parent = game:GetService( "ReplicatedStorage" ) -- Put the RemoteEvent somewhere |
4 |
5 | RemoEv.OnServerEvent:connect( function (player, part) -- When the localscript asks this script to make the part |
6 | part:Clone().Parent = game.Workspace -- Put the part in the workspace or wherever u want |
7 | end ) |
In the local script:
1 | local PT 1 = game:GetService( "ReplicatedStorage" ):WaitForChild( "PartTransfer_$001" ) -- Find the Remote Event |
2 |
3 | function sendPart(part) -- Run this to send a part to the server so it can replicate |
4 | PT 1 :FireServer(part) -- Tell the server to make the part |
5 | end |