I really don't know how to spawn a forcefield in, but what is blocking me is how do I find a character in a script. (not local script)
01 | Tool = script.Parent |
02 | local event = game.ReplicatedStorage |
03 | local Players = game:GetService( "Players" ) |
04 | local character = Players.Character or Players.CharacterAdded:wait() |
05 |
06 | event.Block.OnServerEvent:connect( function (plr) |
07 | local forceField = Instance.new( "ForceField" ) |
08 | forceField.Visible = true |
09 | forceField.Parent = character |
10 | wait(. 5 ) |
11 | forceField:remove() |
12 | end ) |
You can easily get a player's character through the Character property of the player. Since you're using a remoteevent, you already have a player, so all you need to do is get the Character.
01 | Tool = script.Parent |
02 | local event = game.ReplicatedStorage |
03 | local Players = game:GetService( "Players" ) |
04 |
05 | event.Block.OnServerEvent:connect( function (plr) |
06 | local character = plr.Character |
07 | local forceField = Instance.new( "ForceField" ) |
08 | forceField.Visible = true |
09 | forceField.Parent = character |
10 | wait(. 5 ) |
11 | forceField:Destroy() -- Apparently :remove() is deprecated, use :Destroy() instead for getting rid of things. |
12 | end ) |
You cannot do player.Character, even if you have the player object, on the server. My best option is just finding the character in workspace using the player's name.
01 | Tool = script.Parent |
02 | local event = game.ReplicatedStorage |
03 | local Players = game:GetService( "Players" ) |
04 |
05 | event.Block.OnServerEvent:connect( function (plr) |
06 |
07 | local character = game.Workspace:WaitForChild(plr.Name) -- will look in workspace for an object wich has the players name, wich is their character |
08 | local forceField = Instance.new( "ForceField" ) |
09 | forceField.Visible = true |
10 | forceField.Parent = character |
11 | wait(. 5 ) |
12 | forceField:remove() |
13 | end ) |
Hope this solved your problem!