Currently, I am creating an engine that can be used in JoJo's Bizarre Adventure games. However, since I am at a somewhat beginner to intermediate level, I am having trouble referencing the player's humanoidrootpart so it can be welded to a dummy. Any tips on how to get around the index nil error? As an extra note, this is on a server script triggered by an event.
01 | game.ReplicatedStorage.DefStand.Summon.OnServerEvent:Connect( function () |
02 | local sound = game.Workspace.DS_summon |
03 | local Stand = game.ServerStorage.DefaultStand:Clone() |
04 | local StandModel = Stand.Dummy:Clone() |
05 | local debounce = false |
06 |
07 | sound:Play() |
08 | StandModel.Parent = game.Workspace |
09 | if StandModel then |
10 | local function summonWeld() |
11 | local player = game.Players.LocalPlayer |
12 | local char = player.Character or player.CharacterAdded:Wait() --Error here. |
13 | local weld = game.Workspace.Weld:Clone() |
14 |
15 | weld.Part 0 = char |
16 | weld.Part 1 = StandModel |
17 | end |
18 | summonWeld() |
19 | end |
20 | end ) |
Hello. Regular/ServerScripts cannot detect the LocalPlayer from game.Players.LocalPlayer
so it returns nil and it will error when trying to index something with it. Instead, use the automatic player
parameter of OnServerEvent
. Try this:
01 | game:GetService( "ReplicatedStorage" ).DefStand.Summon.OnServerEvent:Connect( function (player) |
02 | local sound = workspace.DS_summon |
03 | local Stand = game:GetService( "ServerStorage" ).DefaultStand:Clone() |
04 | local StandModel = Stand.Dummy:Clone() |
05 | local debounce = false |
06 |
07 | sound:Play() |
08 | StandModel.Parent = workspace |
09 | if StandModel then |
10 | local function summonWeld() |
11 | local char = player.Character or player.CharacterAdded:Wait() --Error here. |
12 | local weld = game.Workspace.Weld:Clone() |
13 | weld.C 0 = char.HumanoidRootPart.CFrame:Inverse() |
14 | weld.C 1 = StandModel.HumaniodRootPart.CFrame:Inverse() |
15 | weld.Part 0 = char.HumanoidRootPart |
16 | weld.Part 1 = StandModel |
17 | end |
18 | summonWeld() |
19 | end |
20 | end ) |
Also, welds don't work if they're a child of a Model. Instead, use the character's HumanoidRootPart. Also, you forgot the C0
and C1
properties of the weld.
Please accept and upvote this answer if it helped.