| |
|
| |
|
| | local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
| | local CollectionService = game:GetService("CollectionService")
|
| |
|
| | local GameConfig = require(ReplicatedStorage:WaitForChild("Shared"):WaitForChild("GameConfig"))
|
| |
|
| | local worldFolder = workspace:WaitForChild("WorldStructures")
|
| |
|
| |
|
| | local function createMarketArea()
|
| | local marketFolder = Instance.new("Folder")
|
| | marketFolder.Name = "Market"
|
| | marketFolder.Parent = worldFolder
|
| |
|
| |
|
| | local floor = Instance.new("Part")
|
| | floor.Name = "MarketFloor"
|
| | floor.Size = GameConfig.MarketSize
|
| | floor.Position = GameConfig.MarketPosition
|
| | floor.Anchored = true
|
| | floor.Material = Enum.Material.Cobblestone
|
| | floor.BrickColor = BrickColor.new("Dark stone grey")
|
| | floor.TopSurface = Enum.SurfaceType.Smooth
|
| | floor.Parent = marketFolder
|
| |
|
| |
|
| | local wallHeight = 10
|
| | local wallThickness = 1
|
| | local marketPos = GameConfig.MarketPosition
|
| | local mSize = GameConfig.MarketSize
|
| |
|
| | local walls = {
|
| | {name = "BackWall", pos = Vector3.new(marketPos.X, marketPos.Y + wallHeight/2, marketPos.Z - mSize.Z/2), size = Vector3.new(mSize.X, wallHeight, wallThickness)},
|
| | {name = "LeftWall", pos = Vector3.new(marketPos.X - mSize.X/2, marketPos.Y + wallHeight/2, marketPos.Z), size = Vector3.new(wallThickness, wallHeight, mSize.Z)},
|
| | {name = "RightWall", pos = Vector3.new(marketPos.X + mSize.X/2, marketPos.Y + wallHeight/2, marketPos.Z), size = Vector3.new(wallThickness, wallHeight, mSize.Z)},
|
| | }
|
| |
|
| | for _, wallData in ipairs(walls) do
|
| | local wall = Instance.new("Part")
|
| | wall.Name = wallData.name
|
| | wall.Size = wallData.size
|
| | wall.Position = wallData.pos
|
| | wall.Anchored = true
|
| | wall.Material = Enum.Material.WoodPlanks
|
| | wall.BrickColor = BrickColor.new("Burlap")
|
| | wall.Parent = marketFolder
|
| | end
|
| |
|
| |
|
| | local roof = Instance.new("Part")
|
| | roof.Name = "MarketRoof"
|
| | roof.Size = Vector3.new(mSize.X + 4, 1, mSize.Z + 4)
|
| | roof.Position = Vector3.new(marketPos.X, marketPos.Y + wallHeight, marketPos.Z)
|
| | roof.Anchored = true
|
| | roof.Material = Enum.Material.WoodPlanks
|
| | roof.BrickColor = BrickColor.new("Reddish brown")
|
| | roof.Parent = marketFolder
|
| |
|
| |
|
| | local dropoff = Instance.new("Part")
|
| | dropoff.Name = "MarketDropoffZone"
|
| | dropoff.Size = Vector3.new(15, 3, 15)
|
| | dropoff.Position = GameConfig.MarketPosition + Vector3.new(0, 2, 10)
|
| | dropoff.Anchored = true
|
| | dropoff.CanCollide = false
|
| | dropoff.Transparency = 0.7
|
| | dropoff.BrickColor = BrickColor.new("Bright green")
|
| | dropoff.Material = Enum.Material.ForceField
|
| | CollectionService:AddTag(dropoff, "MarketDropoff")
|
| | dropoff.Parent = marketFolder
|
| |
|
| |
|
| | local signPart = Instance.new("Part")
|
| | signPart.Name = "MarketSign"
|
| | signPart.Size = Vector3.new(12, 3, 0.5)
|
| | signPart.Position = Vector3.new(marketPos.X, marketPos.Y + wallHeight + 2.5, marketPos.Z + mSize.Z/2)
|
| | signPart.Anchored = true
|
| | signPart.Material = Enum.Material.Wood
|
| | signPart.BrickColor = BrickColor.new("Dark orange")
|
| | signPart.Parent = marketFolder
|
| |
|
| | local signGui = Instance.new("SurfaceGui")
|
| | signGui.Face = Enum.NormalId.Front
|
| | signGui.Parent = signPart
|
| |
|
| | local signLabel = Instance.new("TextLabel")
|
| | signLabel.Size = UDim2.new(1, 0, 1, 0)
|
| | signLabel.BackgroundTransparency = 1
|
| | signLabel.Text = "LUMBER MARKET"
|
| | signLabel.TextColor3 = Color3.new(1, 1, 1)
|
| | signLabel.TextScaled = true
|
| | signLabel.Font = Enum.Font.GothamBold
|
| | signLabel.Parent = signGui
|
| |
|
| | print("Market area created")
|
| | end
|
| |
|
| |
|
| | local function createShopArea()
|
| | local shopFolder = Instance.new("Folder")
|
| | shopFolder.Name = "Shop"
|
| | shopFolder.Parent = worldFolder
|
| |
|
| | local shopPos = GameConfig.ShopPosition
|
| | local sSize = GameConfig.ShopSize
|
| |
|
| |
|
| | local floor = Instance.new("Part")
|
| | floor.Name = "ShopFloor"
|
| | floor.Size = sSize
|
| | floor.Position = shopPos
|
| | floor.Anchored = true
|
| | floor.Material = Enum.Material.WoodPlanks
|
| | floor.BrickColor = BrickColor.new("Burlap")
|
| | floor.TopSurface = Enum.SurfaceType.Smooth
|
| | floor.Parent = shopFolder
|
| |
|
| |
|
| | local wallHeight = 12
|
| | local wallThickness = 1
|
| |
|
| | local walls = {
|
| | {name = "BackWall", pos = Vector3.new(shopPos.X, shopPos.Y + wallHeight/2, shopPos.Z - sSize.Z/2), size = Vector3.new(sSize.X, wallHeight, wallThickness)},
|
| | {name = "LeftWall", pos = Vector3.new(shopPos.X - sSize.X/2, shopPos.Y + wallHeight/2, shopPos.Z), size = Vector3.new(wallThickness, wallHeight, sSize.Z)},
|
| | {name = "RightWall", pos = Vector3.new(shopPos.X + sSize.X/2, shopPos.Y + wallHeight/2, shopPos.Z), size = Vector3.new(wallThickness, wallHeight, sSize.Z)},
|
| | }
|
| |
|
| | for _, wallData in ipairs(walls) do
|
| | local wall = Instance.new("Part")
|
| | wall.Name = wallData.name
|
| | wall.Size = wallData.size
|
| | wall.Position = wallData.pos
|
| | wall.Anchored = true
|
| | wall.Material = Enum.Material.Brick
|
| | wall.BrickColor = BrickColor.new("Reddish brown")
|
| | wall.Parent = shopFolder
|
| | end
|
| |
|
| |
|
| | local roof = Instance.new("Part")
|
| | roof.Name = "ShopRoof"
|
| | roof.Size = Vector3.new(sSize.X + 4, 1, sSize.Z + 4)
|
| | roof.Position = Vector3.new(shopPos.X, shopPos.Y + wallHeight, shopPos.Z)
|
| | roof.Anchored = true
|
| | roof.Material = Enum.Material.Slate
|
| | roof.BrickColor = BrickColor.new("Dark stone grey")
|
| | roof.Parent = shopFolder
|
| |
|
| |
|
| | local counter = Instance.new("Part")
|
| | counter.Name = "ShopCounter"
|
| | counter.Size = Vector3.new(10, 3, 3)
|
| | counter.Position = shopPos + Vector3.new(0, 1.5, -5)
|
| | counter.Anchored = true
|
| | counter.Material = Enum.Material.WoodPlanks
|
| | counter.BrickColor = BrickColor.new("Pine Cone")
|
| | CollectionService:AddTag(counter, "ShopCounter")
|
| | counter.Parent = shopFolder
|
| |
|
| |
|
| | local signPart = Instance.new("Part")
|
| | signPart.Name = "ShopSign"
|
| | signPart.Size = Vector3.new(10, 3, 0.5)
|
| | signPart.Position = Vector3.new(shopPos.X, shopPos.Y + wallHeight + 2.5, shopPos.Z + sSize.Z/2)
|
| | signPart.Anchored = true
|
| | signPart.Material = Enum.Material.Wood
|
| | signPart.BrickColor = BrickColor.new("Bright blue")
|
| | signPart.Parent = shopFolder
|
| |
|
| | local signGui = Instance.new("SurfaceGui")
|
| | signGui.Face = Enum.NormalId.Front
|
| | signGui.Parent = signPart
|
| |
|
| | local signLabel = Instance.new("TextLabel")
|
| | signLabel.Size = UDim2.new(1, 0, 1, 0)
|
| | signLabel.BackgroundTransparency = 1
|
| | signLabel.Text = "SUE'S SUPPLY SHOP"
|
| | signLabel.TextColor3 = Color3.new(1, 1, 1)
|
| | signLabel.TextScaled = true
|
| | signLabel.Font = Enum.Font.GothamBold
|
| | signLabel.Parent = signGui
|
| |
|
| | print("Shop area created")
|
| | end
|
| |
|
| |
|
| | local function createRoads()
|
| | local roadFolder = Instance.new("Folder")
|
| | roadFolder.Name = "Roads"
|
| | roadFolder.Parent = worldFolder
|
| |
|
| |
|
| | local roads = {
|
| | {from = GameConfig.SpawnPosition, to = GameConfig.MarketPosition, width = 8},
|
| | {from = GameConfig.MarketPosition, to = GameConfig.ShopPosition, width = 6},
|
| | }
|
| |
|
| | for i, roadData in ipairs(roads) do
|
| | local midpoint = (roadData.from + roadData.to) / 2
|
| | local direction = (roadData.to - roadData.from)
|
| | local length = direction.Magnitude
|
| |
|
| | local roadPart = Instance.new("Part")
|
| | roadPart.Name = "Road_" .. i
|
| | roadPart.Size = Vector3.new(roadData.width, 0.3, length)
|
| | roadPart.CFrame = CFrame.lookAt(midpoint, roadData.to) + Vector3.new(0, 0.2, 0)
|
| | roadPart.Anchored = true
|
| | roadPart.Material = Enum.Material.Cobblestone
|
| | roadPart.Color = Color3.fromRGB(120, 110, 100)
|
| | roadPart.TopSurface = Enum.SurfaceType.Smooth
|
| | roadPart.Parent = roadFolder
|
| | end
|
| |
|
| | print("Roads created")
|
| | end
|
| |
|
| |
|
| | task.spawn(function()
|
| | task.wait(1)
|
| |
|
| | createMarketArea()
|
| | createShopArea()
|
| | createRoads()
|
| |
|
| | print("=== Map Structures Complete ===")
|
| | end)
|
| |
|