Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Attempt to index nil with Parent?

Hi, I'm trying to make a fire sword and when it it activated on the second time, it will make the opponent burn. This is the the burning script in the firesword tool:

local cool = false
script.Parent.Touched:Connect(function(hit)
	if hit.Parent:FindFirstChild("Humanoid") and cool == false and hit.Parent ~= script.Parent.Parent.Parent then
		if hit.Parent.Humanoid.Health > 0 then
			cool = true
			if game.ServerStorage:FindFirstChild("Burn")then
				local burn = game.ServerStorage.Burn:Clone()
				burn.Parent = hit
				burn.Disabled = false
				if burn ~= nil then
					wait()
					if hit.Parent.Humanoid.Health == 0 then
						local name = game.Players:GetPlayerFromCharacter(script.Parent.Parent.Parent)
						if name:FindFirstChild("leaderstats")then
							name.leaderstats.Kills.Value = name.leaderstats.Kills.Value + 1
							name.leaderstats.Coins.Value = name.leaderstats.Coins.Value + 1
						end
					end
				end
			end
			script.Disabled = true
			cool = false
		end
	end
end)

This will duplicate a burning script in my ServerStorage and send it to the hit part. here is the script:

while script ~= nil do
	wait(0.1)
	local check = script.Parent.Parent:FindFirstChild("Humanoid")  -- 'Attempt to index nil with Parent 'error here
	if check then
		if script.Parent.Parent.Humanoid.Health > 0 then
			cool = true
			local wa = Instance.new("Fire")
			wa.Parent = script.Parent
			for i = 1,5 do
				script.Parent.Parent.Humanoid.Health = script.Parent.Parent.Humanoid.Health - 10
				wait(1)
			end
			wa:Destroy()
			script:Destroy()
			cool = false
		end
	end
end

Please help me fix this error. Thank you!

1 answer

✓ Accepted answer

The problem is that it can't find the parent of the game.

script.Parent = ServerStorage script.Parent.Parent = game script.Parent.Parent.Parent = nil

And you're also trying to find the player's humanoid inside server storage, which humanoid is not one of server storage children.

Fortunately, we can use the data from the first script to get the player's humanoid using remote events.

No changes need to be made except pasting the script.

First code:

local remoteevent = Instance.new("RemoteEvent", game.ReplicatedStorage)
remoteevent.Name = "BurnEvent"
local cool = false
script.Parent.Touched:Connect(
    function(hit)
        if hit.Parent:FindFirstChild("Humanoid") and cool == false and hit.Parent ~= script.Parent.Parent.Parent then
            if hit.Parent.Humanoid.Health > 0 then
                cool = true
                if game.ServerStorage:FindFirstChild("Burn") then
                    local burn = game.ServerStorage.Burn:Clone()
                    burn.Parent = hit
                    burn.Disabled = false
                    if burn ~= nil then
                        wait()
                        if hit.Parent.Humanoid.Health == 0 then
                            local name = game.Players:GetPlayerFromCharacter(script.Parent.Parent.Parent)
                            if name:FindFirstChild("leaderstats") then
                                name.leaderstats.Kills.Value = name.leaderstats.Kills.Value + 1
                                name.leaderstats.Coins.Value = name.leaderstats.Coins.Value + 1
                                emoteevent:FireServer(hit)
                            end
                        end
                    end
                end
                script.Disabled = true
                cool = false
            end
        end
    end
)

second code

local remoteevent = game.ReplicatedStorage.BurnEvent
remoteevent:OnServerEvent(hit)
while script ~= nil do
    wait(0.1)
    local check = hit.Parent:FindFirstChild("Humanoid")
    if check then
        if hit.Parent:FindFirstChild("Humanoid").Health > 0 then
            cool = true
            local wa = Instance.new("Fire")
            wa.Parent = script.Parent
            for i = 1, 5 do
                hit.Parent:FindFirstChild("Humanoid").Health = hit.Parent:FindFirstChild("Humanoid").Health - 10
                wait(1)
            end
            wa:Destroy()
            script:Destroy()
            cool = false
        end
    end
end

This discussion is preserved as it was. New answers, comments, and votes are closed.