local LP = game:GetService("Players").LocalPlayer local out = {} local function add(s) table.insert(out, s) end local root = LP.Character:FindFirstChild("HumanoidRootPart") add("player=" .. tostring(root.Position)) local function partInfo(p) local ok, s = pcall(function() return p.Size end) return string.format("%s pos=(%.0f,%.0f,%.0f) size=(%.0f,%.0f,%.0f) anchored=%s", p.Name, p.Position.X, p.Position.Y, p.Position.Z, s.X, s.Y, s.Z, tostring(p.Anchored)) end add("Walls:") for _, c in ipairs(workspace:FindFirstChild("Walls"):GetChildren()) do if c:IsA("BasePart") then add(" " .. partInfo(c)) end end add("names containing Bound/Deck/Rail/Ground/Floor:") local seen = {} for _, d in ipairs(workspace:GetDescendants()) do if d:IsA("BasePart") and (d.Name:find("Bound") or d.Name:find("Deck") or d.Name:find("Rail") or d.Name:find("Floor") or d.Name:find("Ground")) then seen[#seen+1] = d end end add("count=" .. #seen) for i = 1, math.min(#seen, 30) do add(" " .. seen[i]:GetFullName() .. " " .. partInfo(seen[i])) end -- overall footprint of all parts in Lobby local minX, maxX, minZ, maxZ = math.huge, -math.huge, math.huge, -math.huge local minY, maxY = math.huge, -math.huge for _, d in ipairs(workspace.Lobby:GetDescendants()) do if d:IsA("BasePart") then minX = math.min(minX, d.Position.X); maxX = math.max(maxX, d.Position.X) minZ = math.min(minZ, d.Position.Z); maxZ = math.max(maxZ, d.Position.Z) minY = math.min(minY, d.Position.Y); maxY = math.max(maxY, d.Position.Y) end end add(string.format("Lobby footprint X[%.0f,%.0f] Y[%.0f,%.0f] Z[%.0f,%.0f]", minX, maxX, minY, maxY, minZ, maxZ)) print(table.concat(out, "\n"))