Загрузка данных
-- ЛАБОРАТОРИЯ ЧП — РЕТРО СТИЛЬ R6
-- Вставь в Command Bar и нажми Enter
local C = {
asphalt = Color3.fromRGB(99, 95, 98),
grass = Color3.fromRGB(75, 151, 75),
wall_white = Color3.fromRGB(240, 240, 240),
wall_grey = Color3.fromRGB(163, 162, 165),
roof = Color3.fromRGB(50, 50, 50),
fence = Color3.fromRGB(99, 95, 98),
door = Color3.fromRGB(124, 92, 70),
crate = Color3.fromRGB(196, 40, 28),
barrel = Color3.fromRGB(80, 80, 80),
warning = Color3.fromRGB(196, 40, 28),
light = Color3.fromRGB(245, 205, 48),
glass = Color3.fromRGB(180, 210, 255),
tent = Color3.fromRGB(255, 255, 255)
}
function part(name, size, pos, color, parent, transparency)
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.Transparency = transparency or 0
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 oldMap = workspace:FindFirstChild("Map")
if oldMap then oldMap:Destroy() end
local oldNPCs = workspace:FindFirstChild("NPCs")
if oldNPCs then oldNPCs:Destroy() end
local oldSpawns = workspace:FindFirstChild("Spawns")
if oldSpawns then oldSpawns:Destroy() end
-- ПАПКИ
local map = Instance.new("Folder")
map.Name = "Map"
map.Parent = workspace
local npcs = Instance.new("Folder")
npcs.Name = "NPCs"
npcs.Parent = workspace
local spawns = Instance.new("Folder")
spawns.Name = "Spawns"
spawns.Parent = workspace
-- ==================== УЛИЦА ====================
part("Ground", Vector3.new(300, 1, 300), Vector3.new(0, 0, 0), C.asphalt, map)
local grassN = part("GrassNorth", Vector3.new(300, 1, 30), Vector3.new(0, -0.5, -165), C.grass, map)
grassN.TopSurface = Enum.SurfaceType.Studs
local grassS = part("GrassSouth", Vector3.new(300, 1, 30), Vector3.new(0, -0.5, 165), C.grass, map)
grassS.TopSurface = Enum.SurfaceType.Studs
local grassE = part("GrassEast", Vector3.new(30, 1, 240), Vector3.new(165, -0.5, 0), C.grass, map)
grassE.TopSurface = Enum.SurfaceType.Studs
local grassW = part("GrassWest", Vector3.new(30, 1, 240), Vector3.new(-165, -0.5, 0), C.grass, map)
grassW.TopSurface = Enum.SurfaceType.Studs
-- ==================== ЗАБОР ====================
for _, z in pairs({-135, 135}) do
for x = -135, 135, 10 do
if math.random() > 0.15 then
wall("Fence", Vector3.new(1, 8, 10), Vector3.new(x, 4, z), C.fence, map)
end
end
end
for _, x in pairs({-135, 135}) do
for z = -135, 135, 10 do
if math.random() > 0.15 then
wall("Fence", Vector3.new(10, 8, 1), Vector3.new(x, 4, z), C.fence, map)
end
end
end
-- ==================== РЕСЕПШН ====================
local rx, rz = -80, -80
local reception = Instance.new("Folder")
reception.Name = "Reception"
reception.Parent = map
wall("WallBack", Vector3.new(40, 15, 1), Vector3.new(rx, 7.5, rz - 20), C.wall_white, reception)
wall("WallLeft", Vector3.new(1, 15, 40), Vector3.new(rx - 20, 7.5, rz), C.wall_white, reception)
wall("WallRight", Vector3.new(1, 15, 40), Vector3.new(rx + 20, 7.5, rz), C.wall_white, reception)
wall("WallFrontTop", Vector3.new(40, 5, 1), Vector3.new(rx, 12.5, rz + 20), C.wall_white, reception)
wall("WallFrontLeft", Vector3.new(14, 10, 1), Vector3.new(rx - 13, 5, rz + 20), C.wall_white, reception)
wall("WallFrontRight", Vector3.new(14, 10, 1), Vector3.new(rx + 13, 5, rz + 20), C.wall_white, reception)
local door = part("Door", Vector3.new(12, 10, 1), Vector3.new(rx, 5, rz + 20), C.door, reception)
door.TopSurface = Enum.SurfaceType.Smooth
part("Roof", Vector3.new(42, 1, 42), Vector3.new(rx, 15.5, rz), C.roof, reception)
part("WindowLeft", Vector3.new(1, 6, 10), Vector3.new(rx - 20.5, 7, rz - 5), C.glass, reception, 0.3)
part("WindowRight", Vector3.new(1, 6, 10), Vector3.new(rx + 20.5, 7, rz + 5), C.glass, reception, 0.3)
part("Desk", Vector3.new(12, 3, 4), Vector3.new(rx, 1.5, rz + 10), C.wall_grey, reception)
-- ==================== КЛАДОВКА ====================
local kx, kz = 80, 80
local storage = Instance.new("Folder")
storage.Name = "Storage"
storage.Parent = map
wall("WallBack", Vector3.new(25, 12, 1), Vector3.new(kx, 6, kz - 12), C.wall_grey, storage)
wall("WallLeft", Vector3.new(1, 12, 25), Vector3.new(kx - 12, 6, kz), C.wall_grey, storage)
wall("WallRight", Vector3.new(1, 12, 25), Vector3.new(kx + 12, 6, kz), C.wall_grey, storage)
wall("WallFront", Vector3.new(25, 12, 1), Vector3.new(kx, 6, kz + 12), C.wall_grey, storage)
part("Roof", Vector3.new(27, 1, 27), Vector3.new(kx, 12.5, kz), C.roof, storage)
local sdoor = part("Door", Vector3.new(8, 8, 1), Vector3.new(kx, 4, kz + 12.5), C.door, storage)
sdoor.TopSurface = Enum.SurfaceType.Smooth
for i = 1, 5 do
local crate = part("Crate"..i, Vector3.new(4, 4, 4), Vector3.new(kx + math.random(-8, 8), 2, kz + math.random(-8, 8)), C.crate, storage)
crate.TopSurface = Enum.SurfaceType.Smooth
end
-- ==================== ВЫШКА ====================
local vx, vz = 100, -100
local tower = Instance.new("Folder")
tower.Name = "Tower"
tower.Parent = map
for _, offset in pairs({{-8, -8}, {8, -8}, {-8, 8}, {8, 8}}) do
wall("Leg", Vector3.new(2, 20, 2), Vector3.new(vx + offset[1], 10, vz + offset[2]), C.fence, tower)
end
part("Platform", Vector3.new(20, 1, 20), Vector3.new(vx, 20.5, vz), C.fence, tower)
part("Roof", Vector3.new(22, 1, 22), Vector3.new(vx, 25, vz), C.roof, tower)
for i = 1, 10 do
local step = part("Ladder"..i, Vector3.new(3, 1, 1), Vector3.new(vx + 12, i * 2, vz), C.fence, tower)
step.TopSurface = Enum.SurfaceType.Smooth
end
-- ==================== ДЕКОР ====================
for i = 1, 8 do
local bx = math.random(-100, 100)
local bz = math.random(-100, 100)
part("Barrel"..i, Vector3.new(3, 4, 3), Vector3.new(bx, 2, bz), C.barrel, map)
end
for i = 1, 3 do
local tx = math.random(-120, 120)
local tz = math.random(-120, 120)
part("Tent"..i, Vector3.new(10, 6, 10), Vector3.new(tx, 3, tz), C.tent, map)
end
part("Sign1", Vector3.new(4, 6, 1), Vector3.new(-50, 3, -50), C.warning, map)
part("Sign2", Vector3.new(4, 6, 1), Vector3.new(50, 3, 50), C.warning, map)
part("CarBody", Vector3.new(12, 4, 6), Vector3.new(-60, 2, 60), C.wall_grey, map)
part("CarWheel1", Vector3.new(2, 2, 2), Vector3.new(-65, 1, 57), C.fence, map)
part("CarWheel2", Vector3.new(2, 2, 2), Vector3.new(-55, 1, 63), C.fence, map)
-- ==================== ТОЧКИ NPC ====================
local panicPoints = {
{name = "Reception", center = Vector3.new(-80, 0.5, -80)},
{name = "Street1", center = Vector3.new(-50, 0.5, 0)},
{name = "Street2", center = Vector3.new(50, 0.5, 0)},
{name = "Street3", center = Vector3.new(0, 0.5, -50)},
{name = "Street4", center = Vector3.new(0, 0.5, 50)},
{name = "Street5", center = Vector3.new(-100, 0.5, 100)},
{name = "Street6", center = Vector3.new(100, 0.5, -100)},
{name = "Storage", center = Vector3.new(80, 0.5, 80)},
{name = "Tower", center = Vector3.new(100, 0.5, -100)},
{name = "Fence1", center = Vector3.new(-130, 0.5, 0)},
{name = "Fence2", center = Vector3.new(130, 0.5, 0)}
}
for _, p in pairs(panicPoints) do
local f = Instance.new("Folder")
f.Name = p.name .. "_Points"
f.Parent = npcs
for i = 1, math.random(4, 5) do
local point = Instance.new("Part")
point.Name = "Point" .. i
point.Size = Vector3.new(1, 1, 1)
point.CFrame = CFrame.new(
p.center.X + math.random(-20, 20),
0.5,
p.center.Z + math.random(-20, 20)
)
point.Transparency = 1
point.CanCollide = false
point.Anchored = true
point.Parent = f
end
end
-- ==================== СПАВНЫ ====================
local spawnData = {
{"SpawnAlpha", Vector3.new(-120, 1, -120), Color3.fromRGB(75, 151, 75)},
{"SpawnBravo", Vector3.new(-120, 1, 120), Color3.fromRGB(196, 40, 28)},
{"SpawnCharlie", Vector3.new(120, 1, -120), Color3.fromRGB(13, 105, 172)},
{"SpawnDelta", Vector3.new(120, 1, 120), Color3.fromRGB(245, 205, 48)}
}
for _, s in pairs(spawnData) do
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
-- ==================== СВЕТ ====================
for _, pos in pairs({{-100, -100}, {100, 100}, {-100, 100}, {100, -100}, {0, 0}}) do
local pole = wall("LampPole", Vector3.new(1, 12, 1), Vector3.new(pos[1], 6, pos[2]), C.fence, map)
local lamp = part("Lamp", Vector3.new(3, 2, 3), Vector3.new(pos[1], 12.5, pos[2]), C.light, map)
lamp.Material = Enum.Material.Neon
local light = Instance.new("PointLight")
light.Brightness = 5
light.Range = 30
light.Color = Color3.fromRGB(255, 255, 200)
light.Parent = lamp
end
-- ==================== ПАРАЗИТ ====================
local gameLogic = workspace:FindFirstChild("GameLogic") or Instance.new("Folder")
gameLogic.Name = "GameLogic"
gameLogic.Parent = workspace
local parasite = Instance.new("Part")
parasite.Name = "Parasite"
parasite.Shape = Enum.PartType.Ball
parasite.Size = Vector3.new(2, 2, 2)
parasite.Position = Vector3.new(0, 50, 0)
parasite.Color = Color3.fromRGB(0, 0, 0)
parasite.Material = Enum.Material.Plastic
parasite.Transparency = 0.5
parasite.Anchored = true
parasite.Parent = gameLogic
local pLight = Instance.new("PointLight")
pLight.Color = Color3.fromRGB(255, 0, 0)
pLight.Brightness = 5
pLight.Range = 10
pLight.Parent = parasite
print("=== ЛАБОРАТОРИЯ ЧП [РЕТРО R6] ПОСТРОЕНА ===")
print("Сохрани проект: Ctrl+S")