Why is this happening?

Hey!
I’m making a zombie moving system and this is a prototype, and whenever it runs, I get this:

ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: ServerScriptService.ModuleScript:4: C stack overflow - Server - ModuleScript:4

The code:

local MainModule = {}

function MainModule.Spawn(MapName, ZombieName)
	coroutine.wrap(MainModule.Spawn)(MapName, ZombieName)
	local Zombie = game.ServerStorage.Maps:FindFirstChild(MapName).Zombies:FindFirstChild(ZombieName):Clone()
	for index, value in ipairs(workspace:FindFirstChild(MapName).Path.Waypoints:GetChildren()) do
		warn(index, value)
		Zombie.Parent = workspace
		Zombie:FindFirstChildOfHumanoid("Humanoid"):MoveTo(value.Position)
		Zombie:FindFirstChildOfHumanoid("Humanoid").MoveToFinished:Wait()
	end
end

return MainModule

The function is calling itself recursively like this basically

local testFunction
testFunction = function()
testFunction ()
end

I believe this is what you meant

local MainModule = {}

function MainModule.Spawn(MapName, ZombieName)
	coroutine.wrap(function()
	local Zombie = game.ServerStorage.Maps:FindFirstChild(MapName).Zombies:FindFirstChild(ZombieName):Clone()
	for index, value in ipairs(workspace:FindFirstChild(MapName).Path.Waypoints:GetChildren()) do
		warn(index, value)
		Zombie.Parent = workspace
		Zombie:FindFirstChildOfHumanoid("Humanoid"):MoveTo(value.Position)
		Zombie:FindFirstChildOfHumanoid("Humanoid").MoveToFinished:Wait()
	end
end)()
end

return MainModule
1 Like

Now I get this:

ServerScriptService.ModuleScript:12: ServerScriptService.ModuleScript:5: attempt to index nil with ‘Zombies’ - Server - ModuleScript:12

Pro tip to debug nil erors
first identify the line, which is line 5

	local Zombie = game.ServerStorage.Maps:FindFirstChild(MapName).Zombies:FindFirstChild(ZombieName):Clone()

Then print the preceding item that is being which in this case it’s the find first child

print("Map found: ", game.ServerStorage.Maps:FindFirstChild(MapName), "The map name is: ",MapName)

Then make sure you have map within this maps folder.

I usually keep this line or comment it out in case I need to debug further or for better practice use an assert like so

assert(game.ServerStorage.Maps:FindFirstChild(MapName), "Error map not found!")
1 Like

I did some debugging and fixed it, but now I get this:

ServerScriptService.ModuleScript:19: Path is not a valid member of Folder “ServerStorage.Maps.Baseplate_MAP” - Server - ModuleScript:19

The new code:

local MainModule = {}

function MainModule.Spawn(MapName, ZombieName)
	coroutine.wrap(function()
		local CheckForMap = game:GetService("ServerStorage").Maps:FindFirstChild(tostring(MapName)) 
		if not CheckForMap then return false end
		local CheckForZombie = CheckForMap.Zombies:FindFirstChild(tostring(ZombieName))
		if not CheckForZombie then return nil end
		local Zombie = CheckForZombie:Clone()
		Zombie.HumanoidRootPart.CFrame = CheckForMap.Path.StartingPoint.CFrame
		Zombie.Parent = workspace
		local WorkspaceMap = workspace:FindFirstChild(tostring(MapName))
		for index, value in ipairs(WorkspaceMap.Path.Waypoints:GetChildren()) do
			warn(index, value)
			Zombie.Parent = workspace
			Zombie:FindFirstChildOfHumanoid("Humanoid"):MoveTo(value.Position)
			Zombie:FindFirstChildOfHumanoid("Humanoid").MoveToFinished:Wait()
		end
	end)()
end

return MainModule
1 Like

Nice work debugging,

now we gotten do some more making sure there is a path folder with a part named starting point,

  Zombie.HumanoidRootPart.CFrame = CheckForMap.Path.StartingPoint.CFrame

I think CheckForMap is the ServerStorage one, not workspace.