Hello everyone! im about to go crazy after trying to making a script local, its a distance changing script and it focuses on only 1 player regardless of the other, the others see what he sees and i dont want that. is there a way to make it local without filtering? Thanks!



Distance = 300
RenderTime = 1
Map = workspace.Map
-------------------------------------------------------------------------



function Descendants(m, children)
children = children or {}
	for i, v in pairs(m:GetChildren()) do
		if v.ClassName == "Part" or v.ClassName == "WedgePart" or v.ClassName == "MeshPart" or v.ClassName == "UnionOperation" then
			if v:FindFirstChild("RealParent") == nil and v.Anchored == true then
			local Obj = Instance.new("ObjectValue", v)
			Obj.Name = "RealParent"
			Obj.Value = v.Parent
			table.insert(children, v)
			end
		end
	Descendants(v, children)
	end
return children
end

function Check(player, v) 

if v.Size.X < 10 or v.Size.Y < 10 or v.Size.Z < 10 then

if (player.Character.Torso.Position - CFrame.new(-v.Size.X / 2, -v.Size.Y / 2, -v.Size.Z / 2).p).magnitude < Distance or
(player.Character.Torso.Position - (v.CFrame * CFrame.new(-v.Size.X / 2, -v.Size.Y / 2, v.Size.Z / 2).p)).magnitude < Distance or
(player.Character.Torso.Position - (v.CFrame * CFrame.new(-v.Size.X / 2, v.Size.Y / 2, v.Size.Z / 2).p)).magnitude < Distance or
(player.Character.Torso.Position - (v.CFrame * CFrame.new(v.Size.X / 2, v.Size.Y / 2, v.Size.Z / 2).p)).magnitude < Distance or
(player.Character.Torso.Position - (v.CFrame * CFrame.new(v.Size.X / 2, -v.Size.Y / 2, -v.Size.Z / 2).p)).magnitude < Distance or
(player.Character.Torso.Position - (v.CFrame * CFrame.new(v.Size.X / 2, v.Size.Y / 2, -v.Size.Z / 2).p)).magnitude < Distance or
(player.Character.Torso.Position - (v.CFrame * CFrame.new(v.Size.X / 2, -v.Size.Y / 2, v.Size.Z / 2).p)).magnitude < Distance or
(player.Character.Torso.Position - (v.CFrame * CFrame.new(-v.Size.X / 2, v.Size.Y / 2, -v.Size.Z / 2).p)).magnitude < Distance or
(player.Character.Torso.Position - v.Position).magnitude < Distance then
return true
end

elseif v.Size.X < 25 or v.Size.Y < 25 or v.Size.Z < 25 then

(MORE OF V SIZE HERE BUT CUTTING THE SCRIPT HERE TO MAKE THE QUESTION FIT)

(player.Character.Torso.Position - v.Position).magnitude < Distance then
return true
end

end
end

repeat Parts = Descendants(Map) wait() until #Parts > 0 

Map1 = Instance.new("Model", game.ReplicatedStorage)
Map1.Name = "Map"

while wait(RenderTime) do 
	for i, v in pairs(Parts) do
		for _, player in pairs(game.Players:GetChildren()) do
			if Check(player, v) == true then
			CFrame = v.CFrame
			v.Parent = v.RealParent.Value
			v.CFrame = CFrame
			CFrame = nil
			else
			CFrame = v.CFrame
			v.Parent = Map1
			v.CFrame = CFrame
			CFrame = nil
			end
		end
	end
end

1 comment

1

use filtering. problem solved