local ServerStorage = game:GetService("ServerStorage")
local Rooms = ServerStorage.Rooms:GetChildren()
local workspace = game:GetService("Workspace")
-- Функция для проверки, свободно ли место для новой комнаты
local function isPositionFree(position, roomSize)
local region = Region3.new(position - roomSize / 2, position + roomSize / 2)
local parts = workspace:FindPartsInRegion3(region, nil, math.huge)
return #parts == 0
end
-- Функция для генерации комнаты
local function generateRoom()
local chosenRoom = Rooms[math.random(1, #Rooms)]:Clone()
-- Определяем размер комнаты
local roomSize = chosenRoom:GetExtentsSize()
-- Позиция для размещения комнаты
local position = Vector3.new(math.random(-50, 50), 0, math.random(-50, 50)) -- Задайте диапазон по вашему усмотрению
-- Проверяем, свободно ли место
if isPositionFree(position, roomSize) then
chosenRoom:SetPrimaryPartCFrame(CFrame.new(position))
chosenRoom.Parent = workspace
else
print("Место занято, пробуем снова...")
generateRoom() -- Рекурсивный вызов для попытки генерации комнаты на свободном месте
end
end
-- Генерация комнаты при запуске
generateRoom()
Создание шаблонов комнат: Создайте несколько моделей комнат и сохраните их в ServerStorage или ReplicatedStorage. Настройка размещения: Используйте функции Model:MoveTo() или Model:SetPrimaryPartCFrame() для правильного размещения и ориентации комнат