Attempt to call a nil value

It’s inside of StarterGUI.Gui.Frame

Ah I see now.

ServerScriptService.Script:3: attempt to index nil with 'WaitForChild' - Server - Script:3

The character is not loaded in fully when this script is called.

Also, you have another problem.
Infinite yield possible on 'Players.Crcoli737:WaitForChild("Knife")' - Studio
Try what @SOTR654 posted below.

Try this:

function setupButtons()
    for i, v in pairs(script.Parent:GetDescendants()) do
	    if v:IsA("TextButton") then
		    v.Activated:connect(function()
			    if v:IsDescendantOf(script.Parent.Skins) then
				    displayItem(v.Name, "knife")
			    end
		    	if v:IsDescendantOf(script.Parent.Abils) then
	    			displayItem(v.Name, "ability")
    			end
				if v:IsDescendantOf(script.Parent.Gears) then
				    displayItem(v.Name, "gear")
		    	end
			    if v:IsDescendantOf(script.Parent.RevolverSkins) then
				    displayItem(v.Name, "revolver")
			    end
		    end)
	    end
    end
end
setupButtons()

It’s shorter.

u sure? im not getting that error, its in a UI in startergui

Oh my bad. I put the Script in ServerScriptService, it tried to call the character before it was loaded in. So, try what @SOTR654 put above, it may work because it won’t index a nil value, unless there is another problem that I am unaware of.

1 Like

i’m still getting the code error, same error message

So let me get this straight, the function is throwing the error when it is trying to index the player?

I don’t know, i’m revamping an old friend’s code.

“Attempt to call a nil value” normally means you are trying to call a function that doesn’t exist. Did you make sure that the “Skins”, “Abils”, “Gears”, and “RevolverSkins” folders are where they should be?

1 Like

Ok… In the lines that say

for i, v in pairs(script.Parent:GetDescendants()) do

replace with

for _, v in pairs(script.Parent:GetDescendants()) do

I’ve seen some people do it this way, not to sure what exactly this does, but give it a try.

I’m pretty sure that’s just ignoring the index variable of the loop, cause we’re more or less getting the values of them so it wouldn’t make any difference I assume?

yup image

it did absolutely nothing lol.

Could you pcall it? I don’t know, if you can’t tell, I am running out of ideas.

What is a pcall and how do i do it

Well,

pcall stands for Protected Call, it is a type of function that is basically doing “sudo” in a Linux terminal, it is normally used for pulling and saving data to a datastore.

Topic on pcalls

so i just put a pcall in front of it?

Its been a while since I’ve had to use a pcall, but I believe so. Like this, pcall(your function here).

i’m too stupid for this, i’m just gonna give up and stop wasting everyone’s time :confused:

I think that I am overthinking this as well. Hopefully someone can come to the rescue lol.