I’ve been working on my TDS game when this error message got me.
My script :
local enemies = game:GetService("ReplicatedStorage").Monsters
local monster = {}
function monster.moveEnemy(enemy, map)
if not map then
map = workspace.Info.Map.Value
end
enemy:SetPrimaryPartCFrame(map.EnemyBase.CFrame)
local nodes = map.EnemySpawns:GetChildren()[math.random(1, #map.EnemySpawns:GetChildren())]
local humanoid = enemy.Humanoid
for node=1, #nodes:GetChildren() do
if enemy.PrimaryPart == nil or enemy == nil then return end
humanoid:MoveTo(nodes[nodes].Position)
--[[local unitPosVector = enemy.PrimaryPart.Position * Vector3.new(1, 0, 1)
local waypointPosVector = nodes[node].Position * Vector3.new(1, 0, 1)
local unitDist = (unitPosVector - waypointPosVector).Magnitude
local waypointVector = Vector3.new(nodes[node].Position.X, nodes[node].Position.Y, nodes[node].Position.Z)
local reached = false
repeat task.wait(0.05)
if not humanoid or humanoid.Health <= 0 then return end
humanoid:MoveTo(waypointPosVector)
unitPosVector = enemy.PrimaryPart.Position * Vector3.new(1, 0, 1)
waypointPosVector = nodes[node].Position * Vector3.new(1, 0, 1)
unitDist = (unitPosVector - waypointPosVector).Magnitude
if unitDist <= 0.7 then
reached = true
end
until reached == true]]
end
map.PlayerBase.Humanoid.Health:TakeDamage(enemy.Humanoid.Health)
enemy:Destroy()
end
function monster.Optimize(unitToOptimize)
local humanoid = unitToOptimize:WaitForChild("Humanoid")
if unitToOptimize:FindFirstChild("HumanoidRootPart") then
unitToOptimize.HumanoidRootPart:SetNetworkOwner(nil)
else
unitToOptimize.PrimaryPart:SetNetworkOwner(nil)
end
if not humanoid then return end
humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Running, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.GettingUp, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Climbing, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Landed, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Freefall, false)
end
function monster.Spawn(enemy, amount, map)
enemy = game:GetService('ReplicatedStorage').Monsters[enemy]
local map = workspace.Info.Map.Value
for i=1, amount do
task.wait(0.5)
local newMob = enemy:Clone()
newMob.Parent = workspace.Monsters
newMob.HumanoidRootPart:SetNetworkOwner(nil)
monster.Optimize(newMob)
newMob.Humanoid.MaxHealth = newMob.Humanoid.MaxHealth * #game.Players:GetPlayers()
newMob.Humanoid.Health = newMob.Humanoid.Health * #game.Players:GetPlayers()
newMob.Humanoid.Died:Connect(function()
task.wait(0.5)
newMob:Destroy()
end)
coroutine.wrap(monster.moveEnemy)(newMob, map)
end
end
return monster