local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local PlaceBlock = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("PlaceBlock")
local BLOCK = "Oak Planks"
local INNER_RADIUS = 3
local WALL = 2
local HEIGHT = 6
local UNDER_OFFSET = 20
local BUILD_WAIT = 5
local function place(pos)
PlaceBlock:FireServer(workspace["1Grass"], Enum.NormalId.Top, pos, BLOCK)
end
local function buildCage(targetRoot)
local cx = math.floor(targetRoot.Position.X)
local cz = math.floor(targetRoot.Position.Z)
local baseY = math.floor(targetRoot.Position.Y - 3)
local outer = INNER_RADIUS + WALL
for y = 0, HEIGHT - 1 do
for x = -outer, outer do
for z = -outer, outer do
local inside =
x > -INNER_RADIUS and x < INNER_RADIUS and
z > -INNER_RADIUS and z < INNER_RADIUS and
y > 0 and y < HEIGHT - 1
if not inside then
place(Vector3.new(cx + x, baseY + y, cz + z))
end
end
end
task.wait()
end
end
local function lockLocalPlayerUnder(targetRoot)
local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local root = char:WaitForChild("HumanoidRootPart")
local savedCFrame = root.CFrame
root.Anchored = true
root.CFrame = targetRoot.CFrame * CFrame.new(0, -UNDER_OFFSET, 0)
local savedCameraType = workspace.CurrentCamera.CameraType
local savedCameraSubject = workspace.CurrentCamera.CameraSubject
workspace.CurrentCamera.CameraType = Enum.CameraType.Attach
workspace.CurrentCamera.CameraSubject = targetRoot
return function()
root.CFrame = savedCFrame
root.Anchored = false
workspace.CurrentCamera.CameraType = savedCameraType
workspace.CurrentCamera.CameraSubject = savedCameraSubject
end
end
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
local char = player.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local targetRoot = char.HumanoidRootPart
local unlock = lockLocalPlayerUnder(targetRoot)
buildCage(targetRoot)
task.wait(BUILD_WAIT)
unlock()
task.wait(0.3)
end
end
end
Comments
No comments yet
Be the first to share your thoughts!