Загрузка данных
-- ИСПРАВЛЕННЫЙ СКРИПТ ДЛЯ 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("Проёмы во внутрь боковых комнат созданы")