Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function findpartsnear(part)
- local parts = {}
- local rays = {
- ray1 = Ray.new(part.Position, Vector3.new(part.Position.X, part.Position.Y, part.Position.Z - 7 ))
- ray2 = Ray.new(part.Position, Vector3.new(part.Position.X, part.Position.Y, part.Position.Z + 7 ))
- ray3 = Ray.new(part.Position, Vector3.new(part.Position.X, part.Position.Y - 7, part.Position.Z))
- ray4 = Ray.new(part.Position, Vector3.new(part.Position.X, part.Position.Y + 7, part.Position.Z))
- ray5 = Ray.new(part.Position, Vector3.new(part.Position.X - 7, part.Position.Y, part.Position.Z))
- ray6 = Ray.new(part.Position, Vector3.new(part.Position.X + 7, part.Position.Y, part.Position.Z))
- {
- for i, ray in pairs(rays) do
- local part, position = workspace:FindPartOnRay(ray, part)
- if part then
- table.insert(parts, i, part)
- end
- end
- return parts
- end
- function findabove(part)
- local ray = Ray.new(part.Position, Vector3.new(0, 7, 0))
- return workspace:FindPartOnRay(ray, part)
- end
- function checkItem(part, material, color)
- if part.Material == material and part.BrickColor == color then
- return true
- end
- return false
- end
- local threshold = 30
- local snowthreshold = 145
- local grassthreshhold = 0
- local folder = workspace.Terrain
- local maxX = 150
- local maxY = 100
- local maxZ = 150
- local maxnoise = 41
- local amplitude = 20
- local blocksize = 4
- function generate(seed)
- for x = -maxX, maxX do
- for z = -maxZ, maxZ do
- for y = maxY, 0, -1 do
- local xnoise = math.noise(y / maxnoise, z / maxnoise, seed) * amplitude
- local ynoise = math.noise(x / maxnoise, z / maxnoise, seed) * amplitude
- local znoise = math.noise(x / maxnoise, y / maxnoise, seed) * amplitude
- local density = xnoise + ynoise + znoise + y
- if density < threshold then
- local part = Instance.new("Part")
- part.Anchored = true
- part.Size = Vector3.new(blocksize, blocksize, blocksize)
- part.CFrame = CFrame.new(x * blocksize, y * blocksize, z * blocksize)
- local partabove = findabove(part)
- if part.Position.Y >= snowthreshold then
- part.Material = Enum.Material.Slate
- part.BrickColor = BrickColor.new("Institutional white")
- elseif part.Position.Y >= grassthreshhold then
- part.Material = Enum.Material.Grass
- part.BrickColor = BrickColor.new("Camo")
- end
- local grass = check(partabove, Enum.Material.Grass, BrickColor.new("Camo"))
- local stone = check(partabove, Enum.Material.Slate, BrickColor.new("Medium stone grey"))
- if (partabove(part)) and (grass or stone) then
- part.Material = Enum.Material.Slate
- part.BrickColor = BrickColor.new("Medium stone grey")
- end
- part.Parent = folder
- end
- end
- end
- end
- end
- generate(math.random())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement