I keep getting "Map is not a valid member of workspace line 179"
It works in studio but not in game. Basically I have a "mirror" that puts an object behind the player.
local RunService = game:GetService('RunService')
local UserInputService = game:GetService("UserInputService")
local instance,newRay = Instance.new,Ray.new
local v2,v3,cf,udim2 = Vector2.new,Vector3.new,CFrame.new,UDim2.new
local insert,random,abs = table.insert,math.random,math.abs
local Player = game.Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local ViewPort = script.Parent.ViewportFrame
local ReflectionCam = workspace.ReflectionCam
local ScreenPart = workspace.Screen
local Camera = instance("Camera")
Camera.CFrame = ReflectionCam.CFrame
ViewPort.CurrentCamera = Camera
ReflectionCam:GetPropertyChangedSignal("CFrame"):Connect(function()
Camera.CFrame = ReflectionCam.CFrame
end)
local d = math.deg
local function inFOV (p0, p1)
local x1, y1, z1 = p0:ToOrientation()
local cf = cf(p0.p, p1.p)
local x2, y2, z2 = cf:ToOrientation()
return v3(d(x1-x2), d(y1-y2), d(z1-z2))
end
local Humanoids = {}
local Parts = {}
local function RenderVersion(obj)
local Descendants = obj:GetDescendants()
for i=1, #Descendants do
local c = Descendants[i]
if (c:IsA("Script") or c:IsA("Sound") or c:IsA("ManualWeld") or c:IsA("BasePart"))then
c:Destroy()
end
if c.Name == "ASCEND" then
c.Transparency = 0
end
end
return obj
end
local function RenderHumanoid(Model, Parent, MainModel)
local ModelParts = Model:GetChildren()
for i=1, #ModelParts do
local Part = ModelParts[i]
if not Part:IsA("Script") then
local a = Part.Archivable
Part.Archivable = true
local RenderClone = Part:Clone()
Part.Archivable = a
if Part:IsA("MeshPart") or Part:IsA("Part") then
PartUpdater = RunService.Heartbeat:Connect(function()
if Part then
RenderClone.CFrame = Part.CFrame
else
RenderClone:Destroy()
PartUpdater:Disconnect()
end
end)
elseif Part:IsA("Accoutrement") then
PartUpdater = RunService.Heartbeat:Connect(function()
if Part then
RenderClone.Handle.CFrame = Part.Handle.CFrame
else
RenderClone:Destroy()
PartUpdater:Disconnect()
end
end)
elseif Part:IsA("Script") then
RenderClone:Destroy()
end
RenderClone.Parent = Parent
end
end
end
local function RenderObj(Obj,Parent,Map)
local ObjParts = Obj:GetChildren()
for i=1, #ObjParts do
local Part = ObjParts[i]
if Map then
if Part:IsA("BasePart") or Part:IsA("Model") or Part:IsA("Folder") then
local a = Part.Archivable
Part.Archivable = true
local RenderClone = RenderVersion(Part:Clone())
Part.Archivable = a
RenderObj(Part,RenderClone,Map)
RenderClone.Parent = Parent
end
else
if Part:IsDescendantOf(workspace) and Part~=workspace then
if not Parts[Part] and not Humanoids[Part] then
if Part:IsA("Model") or Part:IsA("Folder") then
if Part:FindFirstChildWhichIsA("Humanoid",true) then
Humanoids[Part] = true
local ModelClone = instance("Model")
ModelClone.Name = Part.Name
RenderHumanoid(Part, ModelClone,ModelClone)
ModelClone.Parent = Parent
else
local ModelClone = instance("Model")
ModelClone.Name = Part.Name
Part.ChildAdded:Connect(function(Child)
wait()
RenderObj(Part,ModelClone,Map)
end)
RenderObj(Part, ModelClone, false)
ModelClone.Parent = Parent
end
elseif Part:IsA("BasePart") then
if Part~=workspace.Terrain then
Parts[Part] = true
local a = Part.Archivable
Part.Archivable = true
local RenderClone = RenderVersion(Part:Clone())
Part.Archivable = a
Part.ChildAdded:Connect(function(Child)
wait()
RenderObj(Part,RenderClone,Map)
end)
local LastCF, LastTP, LastColor, LastSize, LastMat = Part.CFrame,Part.Transparency,Part.Color,Part.Size,Part.Material
spawn(function()
while wait() do
if Part then
local v = inFOV(Camera.CFrame,Part.CFrame)
if (abs(v.Y+v.X)*2)<(Camera.FieldOfView+40) then
if LastCF~=Part.CFrame then
LastCF = Part.CFrame
RenderClone.CFrame = Part.CFrame
end
if LastTP~=Part.Transparency then
LastTP = Part.Transparency
RenderClone.Transparency = Part.Transparency
end
if LastColor~=Part.Color then
LastColor = Part.Color
RenderClone.Color = Part.Color
end
if LastSize~=Part.Size then
LastSize = Part.Size
RenderClone.Size = Part.Size
end
if LastMat~=Part.Material then
LastMat = Part.Material
RenderClone.Material = Part.Material
end
end
else
RenderClone:Destroy()
Parts[Part] = false
break
end
end
end)
RenderObj(Part,RenderClone,Map)
RenderClone.Parent = Parent
end
end
end
end
end
end
end
wait(1)
RenderObj(workspace,ViewPort)
workspace.ChildAdded:Connect(function(Child)
wait()
RenderObj(workspace,ViewPort)
end)
Character.HumanoidRootPart.CFrame = cf(ScreenPart.Position+v3(5,0,0))

2 comments
woah dude, there's a code block for a reason.
Maybe use :FindFirstChild() or :WaitForChild()