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

attempt to index nil with 'WaitForChild'?

Hey I've been getting this error and I tried every method to fix it but it doesn't work.

Image where the parent is: http://imgur.com/a/8BibY5T

Error line:

local Stable = script.Parent:WaitForChild("Stable")

Script:

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local Player = game.Players.LocalPlayer
repeat wait() until Player.Character
local Character = Player.Character
local Humanoid = Character:WaitForChild("Humanoid")

local PlayerGui = Player:WaitForChild("PlayerGui")

local Stable = script.Parent:WaitForChild("Stable")
local Content = Stable:WaitForChild("Content")
local Template = Content:WaitForChild("Container"):WaitForChild("Template")

local Stores = workspace:WaitForChild("Stores")
local StablesFolder = Stores:WaitForChild("Stables")
local Permissions = ReplicatedStorage:WaitForChild("Permissions")
local HorsePerms = require(Permissions:WaitForChild("Horse"))

local Range = 5

local NPCs = {}
local Alive = true
local ActiveObj = nil
local ActiveType = nil

function AddNPC(Object, Type)
	print('added npc' .. Object.Name)
	if Object:IsA("Model") and NPCs[Object] == nil and Object:IsDescendantOf(StablesFolder) then
		if Object:FindFirstChild("NPC") and Object.NPC:FindFirstChild("Detector") then
			NPCs[Object] = Type
			print('NPC LOADED')
		end
	end
end

script.Parent.Enabled = true
Stable.Position = UDim2.new(-0.4, 0, 0, 0)
Stable.Visible = true

wait(2)

-- Stables
for _,Child in pairs(StablesFolder:GetChildren()) do
	AddNPC(Child, "Stable")
end
StablesFolder.ChildAdded:connect(function(Child)
	AddNPC(Child, "Stable")
end)

-- Detect when player dies
Humanoid.Died:connect(function()
	Alive = false
end)

if HorsePerms:Allowed(Player) == true then
	Content.Headings.Visible = false
	local HorseButton = Template:Clone()
	HorseButton.Parent = Content.Container
	HorseButton.Visible = true
	HorseButton.Name = "Horse1"
	
	local Debounce = false
	HorseButton.MouseButton1Click:connect(function()
		if not Debounce then
			Debounce = true
			if ReplicatedStorage:FindFirstChild("Events") and ReplicatedStorage.Events:FindFirstChild("StablesRequest") then
				ReplicatedStorage.Events:FindFirstChild("StablesRequest"):FireServer(ActiveObj)
				wait(5)
			else
				warn("Failed to find StablesRequest")
			end
			Debounce = false
		end
	end)
else
	Stable.NoHorseWarning.Visible = true
	Content.Headings.Visible = false
end

while wait(1) do
	for Model,Type in pairs(NPCs) do
		if Model ~= nil and Model:FindFirstChild("NPC") and Model.NPC:FindFirstChild("Detector") and Player:DistanceFromCharacter(Model.NPC.Detector.Position) <= Range then
			if Alive then
				if ActiveObj ~= Model then
					ActiveObj = Model
					ActiveType = Type
					if script.Parent:FindFirstChild(ActiveType) then
						if game.StarterGui:GetCore("ChatActive") then
							ChatWasOpen = true
						end
						game.StarterGui:SetCore("ChatActive", false)
						script.Parent:FindFirstChild(ActiveType):TweenPosition(UDim2.new(0.1, 0, 0, 0), "Out", "Quad", 0.3)
					end
				end
			end
		else
			if ActiveObj == Model then
				if script.Parent:FindFirstChild(ActiveType) then
					script.Parent:FindFirstChild(ActiveType):TweenPosition(UDim2.new(-0.4, 0, 0, 0), "In", "Quad", 0.3)
				end
				ActiveObj = nil
				ActiveType = nil
				if ChatWasOpen then
					game.StarterGui:SetCore("ChatActive", true)
					ChatWasOpen = false
				end
			end
		end
	end
end

2 comments

0

What is the parent?

0

sorry, forgot to post image. https://imgur.com/a/8BibY5T

1 answer

You Should use PlayerGui instead of script.Parent

local Stable = Player:WaitForChild("PlayerGui").Businesses.Stable

If that doesnt work, let me know

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