local player = game:GetService("Players").LocalPlayer local replicatedStorage = game:GetService("ReplicatedStorage") local placeBlock = replicatedStorage:WaitForChild("RE"):WaitForChild("PlaceBlock") local workspace = game:GetService("Workspace") local bases = workspace:WaitForChild("Bases") local base = bases:WaitForChild(player.Name) local step = 4 local startY = 6 local minX = base.Position.X - base.Size.X / 2 local maxX = base.Position.X + base.Size.X / 2 local minZ = base.Position.Z - base.Size.Z / 2 local maxZ = base.Position.Z + base.Size.Z / 2 local startX = math.ceil(minX / step) * step local startZ = math.ceil(minZ / step) * step local endX = math.floor(maxX / step) * step local endZ = math.floor(maxZ / step) * step local size_blocks_x = math.floor((endX - startX) / step) + 1 local size_blocks_z = math.floor((endZ - startZ) / step) + 1 local function place(x, y, z) if x >= minX and x <= maxX and z >= minZ and z <= maxZ then local args = {player, vector.create(x, y, z), 360} placeBlock:InvokeServer(unpack(args)) end end local current_iy = 0 while true do local y = startY + current_iy * step for ix = 0, size_blocks_x - 1 do local x = startX + ix * step for iz = 0, size_blocks_z - 1 do local z = startZ + iz * step if (ix + current_iy + iz) % 2 == 0 then place(x, y, z) end end end current_iy = current_iy + 1 end