Загрузка данных


-- ИСПРАВЛЕННЫЙ СКРИПТ ДЛЯ COMMAND BAR
-- Проёмы во внутрь боковых комнат, ничего не пропадает

local C = {
    wall = Color3.fromRGB(163, 162, 165),
    corridor = Color3.fromRGB(120, 120, 120),
    side = Color3.fromRGB(80, 80, 80),
    floor = Color3.fromRGB(150, 150, 150),
    ceiling = Color3.fromRGB(27, 42, 53),
    red = Color3.fromRGB(196, 40, 28),
    blue = Color3.fromRGB(13, 105, 172),
    green = Color3.fromRGB(75, 151, 75),
    brown = Color3.fromRGB(124, 92, 70),
    grey = Color3.fromRGB(163, 162, 165),
    yellow = Color3.fromRGB(245, 205, 48)
}

function part(name, size, pos, color, parent)
    local p = Instance.new("Part")
    p.Name = name
    p.Size = size
    p.CFrame = CFrame.new(pos)
    p.Color = color
    p.Material = Enum.Material.Plastic
    p.Anchored = true
    p.TopSurface = Enum.SurfaceType.Studs
    p.BottomSurface = Enum.SurfaceType.Inlet
    p.Parent = parent
    return p
end

function wall(name, size, pos, color, parent)
    local w = part(name, size, pos, color, parent)
    w.TopSurface = Enum.SurfaceType.Smooth
    w.BottomSurface = Enum.SurfaceType.Smooth
    w.LeftSurface = Enum.SurfaceType.Studs
    w.RightSurface = Enum.SurfaceType.Studs
    return w
end

-- Папки
local map = workspace:FindFirstChild("Map") or Instance.new("Folder")
map.Name = "Map"
map.Parent = workspace

local npcs = workspace:FindFirstChild("NPCs") or Instance.new("Folder")
npcs.Name = "NPCs"
npcs.Parent = workspace

local spawns = workspace:FindFirstChild("Spawns") or Instance.new("Folder")
spawns.Name = "Spawns"
spawns.Parent = workspace

-- ПОТОЛОК
if not map:FindFirstChild("Ceiling") then
    part("Ceiling", Vector3.new(512, 1, 512), Vector3.new(0, 20, 0), C.ceiling, map)
end

-- КОРИДОРЫ (5 штук между комнатами)
local corridorX = {-120, -60, 0, 60, 120}
for _, x in pairs(corridorX) do
    local name = "Corridor_" .. x
    if map:FindFirstChild(name) then continue end
    
    local f = Instance.new("Folder")
    f.Name = name
    f.Parent = map
    
    part("Floor", Vector3.new(20, 1, 10), Vector3.new(x, 0, 0), C.corridor, f)
    wall("WallNorth", Vector3.new(20, 20, 1), Vector3.new(x, 10, -5.5), C.wall, f)
    wall("WallSouth", Vector3.new(20, 20, 1), Vector3.new(x, 10, 5.5), C.wall, f)
end

-- ДВЕРНЫЕ ПРОЁМЫ в главные комнаты (внутрь, не наружу)
-- Room1: только справа (в коридор 1→2)
-- Room2: слева и справа
-- Room3: слева и справа
-- Room4: слева и справа
-- Room5: слева и справа
-- Room6: только слева (тупик)

local mainDoors = {
    {room = "Room1", x = -130.5, z = 0, color = C.red, side = "Right"},
    {room = "Room2", x = -110.5, z = 0, color = C.blue, side = "Left"},
    {room = "Room2", x = -69.5, z = 0, color = C.blue, side = "Right"},
    {room = "Room3", x = -50.5, z = 0, color = C.green, side = "Left"},
    {room = "Room3", x = -9.5, z = 0, color = C.green, side = "Right"},
    {room = "Room4", x = 9.5, z = 0, color = C.brown, side = "Left"},
    {room = "Room4", x = 50.5, z = 0, color = C.brown, side = "Right"},
    {room = "Room5", x = 69.5, z = 0, color = C.grey, side = "Left"},
    {room = "Room5", x = 110.5, z = 0, color = C.grey, side = "Right"},
    {room = "Room6", x = 129.5, z = 0, color = C.yellow, side = "Left"}
}

for _, d in pairs(mainDoors) do
    local room = workspace:FindFirstChild(d.room)
    if not room then continue end
    
    local doorName = "Door_" .. d.side .. "_" .. d.x
    if room:FindFirstChild(doorName) then continue end
    
    local df = Instance.new("Folder")
    df.Name = doorName
    df.Parent = room
    
    -- Проём: верх + 2 боковины
    wall("Top", Vector3.new(1, 8, 40), Vector3.new(d.x, 16, d.z), d.color, df)
    wall("SideLeft", Vector3.new(1, 12, 16), Vector3.new(d.x, 6, d.z - 12), d.color, df)
    wall("SideRight", Vector3.new(1, 12, 16), Vector3.new(d.x, 6, d.z + 12), d.color, df)
end

-- Room6 сплошная правая стена (тупик)
local room6 = workspace:FindFirstChild("Room6")
if room6 and not room6:FindFirstChild("WallRightSolid") then
    wall("WallRightSolid", Vector3.new(1, 20, 40), Vector3.new(170.5, 10, 0), C.yellow, room6)
end

-- БОКОВЫЕ КОМНАТЫ с проёмами ВНУТРЬ (со стороны коридоров)

-- SideA: кладовая, над Room1 (Z = -50)
-- Проём снизу (со стороны коридора от Room1)
if not map:FindFirstChild("SideA") then
    local f = Instance.new("Folder")
    f.Name = "SideA"
    f.Parent = map
    
    -- Стены
    wall("Back", Vector3.new(25, 20, 1), Vector3.new(-150, 10, -62.5), C.side, f)
    wall("Left", Vector3.new(1, 20, 25), Vector3.new(-162.5, 10, -50), C.side, f)
    wall("Right", Vector3.new(1, 20, 25), Vector3.new(-137.5, 10, -50), C.side, f)
    part("Floor", Vector3.new(23, 1, 23), Vector3.new(-150, 0, -50), C.floor, f)
    
    -- Проём ВНУТРЬ (передняя стена, снизу)
    local doorF = Instance.new("Folder")
    doorF.Name = "DoorFront"
    doorF.Parent = f
    
    -- Передняя стена с проёмом по центру
    wall("Top", Vector3.new(25, 8, 1), Vector3.new(-150, 16, -37.5), C.side, doorF)
    wall("SideLeft", Vector3.new(16, 12, 1), Vector3.new(-158, 6, -37.5), C.side, doorF)
    wall("SideRight", Vector3.new(16, 12, 1), Vector3.new(-142, 6, -37.5), C.side, doorF)
    
    -- Коридор к ней (от Room1 вверх)
    local cf = Instance.new("Folder")
    cf.Name = "CorridorToA"
    cf.Parent = map
    
    part("Floor", Vector3.new(8, 1, 20), Vector3.new(-150, 0, -28.75), C.corridor, cf)
    wall("WallWest", Vector3.new(1, 20, 20), Vector3.new(-154.5, 10, -28.75), C.side, cf)
    wall("WallEast", Vector3.new(1, 20, 20), Vector3.new(-145.5, 10, -28.75), C.side, cf)
end

-- SideB: техническая, под Room4 (Z = 50)
-- Проём сверху (со стороны коридора от Room4)
if not map:FindFirstChild("SideB") then
    local f = Instance.new("Folder")
    f.Name = "SideB"
    f.Parent = map
    
    -- Стены
    wall("Front", Vector3.new(25, 20, 1), Vector3.new(30, 10, 62.5), C.side, f)
    wall("Left", Vector3.new(1, 20, 25), Vector3.new(17.5, 10, 50), C.side, f)
    wall("Right", Vector3.new(1, 20, 25), Vector3.new(42.5, 10, 50), C.side, f)
    part("Floor", Vector3.new(23, 1, 23), Vector3.new(30, 0, 50), C.floor, f)
    
    -- Проём ВНУТРЬ (задняя стена, сверху)
    local doorF = Instance.new("Folder")
    doorF.Name = "DoorBack"
    doorF.Parent = f
    
    -- Задняя стена с проёмом по центру
    wall("Top", Vector3.new(25, 8, 1), Vector3.new(30, 16, 37.5), C.side, doorF)
    wall("SideLeft", Vector3.new(16, 12, 1), Vector3.new(22, 6, 37.5), C.side, doorF)
    wall("SideRight", Vector3.new(16, 12, 1), Vector3.new(38, 6, 37.5), C.side, doorF)
    
    -- Коридор к ней (от Room4 вниз)
    local cf = Instance.new("Folder")
    cf.Name = "CorridorToB"
    cf.Parent = map
    
    part("Floor", Vector3.new(8, 1, 20), Vector3.new(30, 0, 28.75), C.corridor, cf)
    wall("WallWest", Vector3.new(1, 20, 20), Vector3.new(25.5, 10, 28.75), C.side, cf)
    wall("WallEast", Vector3.new(1, 20, 20), Vector3.new(34.5, 10, 28.75), C.side, cf)
end

-- SideC: секретная, над Room2 (Z = -50)
-- Проём снизу (со стороны коридора от Room2)
if not map:FindFirstChild("SideC") then
    local f = Instance.new("Folder")
    f.Name = "SideC"
    f.Parent = map
    
    -- Стены
    wall("Back", Vector3.new(25, 20, 1), Vector3.new(-90, 10, -62.5), C.side, f)
    wall("Left", Vector3.new(1, 20, 25), Vector3.new(-102.5, 10, -50), C.side, f)
    wall("Right", Vector3.new(1, 20, 25), Vector3.new(-77.5, 10, -50), C.side, f)
    part("Floor", Vector3.new(23, 1, 23), Vector3.new(-90, 0, -50), C.floor, f)
    
    -- Проём ВНУТРЬ (передняя стена, снизу)
    local doorF = Instance.new("Folder")
    doorF.Name = "DoorFront"
    doorF.Parent = f
    
    -- Передняя стена с проёмом по центру
    wall("Top", Vector3.new(25, 8, 1), Vector3.new(-90, 16, -37.5), C.side, doorF)
    wall("SideLeft", Vector3.new(16, 12, 1), Vector3.new(-98, 6, -37.5), C.side, doorF)
    wall("SideRight", Vector3.new(16, 12, 1), Vector3.new(-82, 6, -37.5), C.side, doorF)
    
    -- Коридор к ней (от Room2 вверх)
    local cf = Instance.new("Folder")
    cf.Name = "CorridorToC"
    cf.Parent = map
    
    part("Floor", Vector3.new(8, 1, 20), Vector3.new(-90, 0, -28.75), C.corridor, cf)
    wall("WallWest", Vector3.new(1, 20, 20), Vector3.new(-94.5, 10, -28.75), C.side, cf)
    wall("WallEast", Vector3.new(1, 20, 20), Vector3.new(-85.5, 10, -28.75), C.side, cf)
end

-- СПАВНЫ
local spawnData = {
    {"SpawnGreen", Vector3.new(-180, 1, 80), Color3.fromRGB(75, 151, 75)},
    {"SpawnRed", Vector3.new(-160, 1, 80), Color3.fromRGB(196, 40, 28)},
    {"SpawnBlue", Vector3.new(-180, 1, 100), Color3.fromRGB(13, 105, 172)},
    {"SpawnYellow", Vector3.new(-160, 1, 100), Color3.fromRGB(245, 205, 48)}
}

for _, s in pairs(spawnData) do
    if spawns:FindFirstChild(s[1]) then continue end
    local sp = Instance.new("SpawnLocation")
    sp.Name = s[1]
    sp.Size = Vector3.new(6, 1, 6)
    sp.CFrame = CFrame.new(s[2])
    sp.Color = s[3]
    sp.Material = Enum.Material.Plastic
    sp.TopSurface = Enum.SurfaceType.Studs
    sp.BottomSurface = Enum.SurfaceType.Inlet
    sp.Parent = spawns
end

-- NPC ТОЧКИ
local npcData = {
    {"Room1", -150, 0}, {"Room2", -90, 0}, {"Room3", -30, 0},
    {"Room4", 30, 0}, {"Room5", 90, 0}, {"Room6", 150, 0},
    {"SideA", -150, -50}, {"SideB", 30, 50}, {"SideC", -90, -50}
}

for _, n in pairs(npcData) do
    local fname = n[1] .. "_Points"
    if npcs:FindFirstChild(fname) then continue end
    
    local f = Instance.new("Folder")
    f.Name = fname
    f.Parent = npcs
    
    for i = 1, 3 do
        local p = Instance.new("Part")
        p.Name = "Point" .. i
        p.Size = Vector3.new(1, 1, 1)
        p.CFrame = CFrame.new(n[2] + math.random(-12, 12), 0.5, n[3] + math.random(-12, 12))
        p.Transparency = 1
        p.CanCollide = false
        p.Anchored = true
        p.Parent = f
    end
end

print("=== ГОТОВО! Сохрани Ctrl+S ===")
print("Проёмы во внутрь боковых комнат созданы")