Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.54 KB | None | 0 0
  1. function findpartsnear(part)
  2.     local pos = part.Position
  3.     local parts = {}
  4.     local ray1 = Ray.new(part.Position,Vector3.new(pos.X,pos.Y,pos.Z - 7 ))
  5.     local ray2 = Ray.new(part.Position,Vector3.new(pos.X,pos.Y,pos.Z + 7 ))
  6.     local ray3 = Ray.new(part.Position,Vector3.new(pos.X,pos.Y - 7,pos.Z))
  7.     local ray4 = Ray.new(part.Position,Vector3.new(pos.X,pos.Y + 7,pos.Z))
  8.     local ray5 = Ray.new(part.Position,Vector3.new(pos.X - 7,pos.Y ,pos.Z))
  9.     local ray6 = Ray.new(part.Position,Vector3.new(pos.X + 7,pos.Y,pos.Z))
  10.     local part1,position1 = workspace:FindPartOnRay(ray1,nil,true,false)
  11.     local part2,position2 = workspace:FindPartOnRay(ray2,nil,true,false)
  12.     local part3,position3 = workspace:FindPartOnRay(ray3,nil,true,false)
  13.     local part4,position4 = workspace:FindPartOnRay(ray4,nil,true,false)
  14.     local part5,position5 = workspace:FindPartOnRay(ray5,nil,true,false)
  15.     local part6,position6 = workspace:FindPartOnRay(ray6,nil,true,false)
  16.     if part1 then
  17.         parts[#parts+1] = part1
  18.     end
  19.     if part2 then
  20.         parts[#parts+1] = part2
  21.     end
  22.     if part3 then
  23.         parts[#parts+1] = part3
  24.     end
  25.     if part4 then
  26.         parts[#parts+1] = part4
  27.     end
  28.     if part5 then
  29.         parts[#parts+1] = part5
  30.     end
  31.     if part6 then
  32.         parts[#parts+1] = part6
  33.     end
  34.     return parts
  35. end
  36. function findabove(part)
  37.     local pos = part.Position
  38.     local ray = Ray.new(part.Position,Vector3.new(0, 7,0))
  39.     local part,position = workspace:FindPartOnRay(ray,nil,true,false)
  40.     if part then
  41.         return part
  42.     end
  43. end
  44. function checkifgrassblock(part)
  45.     if part.Material == Enum.Material.Grass and part.BrickColor == BrickColor.new("Camo") then
  46.         return true
  47.     else
  48.         return false
  49.     end
  50. end
  51. function checkifsnow(part)
  52.     if part.Material == Enum.Material.Slate and part.BrickColor == BrickColor.new("Institutional white") then
  53.         return true
  54.     else
  55.         return false
  56.     end
  57. end
  58. function checkifstone(part)
  59.     if part.Material == Enum.Material.Slate and part.BrickColor == BrickColor.new("Medium stone grey") then
  60.         return true
  61.     else
  62.         return false
  63.     end
  64. end
  65. local threshold = 30
  66. local snowthreshold = 145
  67. local grassthreshhold = 0
  68. local folder = workspace.TerrainParts
  69. local maxX = 150
  70. local maxY = 100
  71. local maxZ = 150
  72. local maxnoise = 41
  73. local amplitude = 20
  74. local blocksize = 4
  75. function generate()
  76. local seed = math.random(1,1000000)
  77.     for x = 0,maxX do
  78.         for z = 0, maxZ do
  79.             for y = maxY,0,-1 do
  80.                 local xnoise = math.noise(y/maxnoise,z/maxnoise,seed) * amplitude
  81.                 local ynoise = math.noise(x/maxnoise,z/maxnoise,seed) *amplitude
  82.                 local znoise = math.noise(x/maxnoise,y/maxnoise,seed) * amplitude
  83.                 local density = xnoise + ynoise + znoise + y
  84.                 if density < threshold then
  85.                     local part = Instance.new("Part",folder)
  86.                     part.Anchored = true
  87.                     part.Size = Vector3.new(blocksize,blocksize,blocksize)
  88.                     part.CFrame = CFrame.new(x*blocksize,y*blocksize,z*blocksize)
  89.                     local partabove = findabove(part)
  90.                         if part.Position.Y >= snowthreshold then
  91.                             part.Material = Enum.Material.Slate
  92.                             part.BrickColor = BrickColor.new("Institutional white")
  93.                         elseif part.Position.Y >= grassthreshhold then
  94.                             part.Material = Enum.Material.Grass
  95.                             part.BrickColor = BrickColor.new("Camo")
  96.                         end
  97.                         if partabove then
  98.                             if checkifgrassblock(partabove) == true  or checkifstone(partabove) == true then
  99.                                 part.Material = Enum.Material.Slate
  100.                                 part.BrickColor = BrickColor.new("Medium stone grey")
  101.                             end
  102.                         end
  103.                 end
  104.             end
  105.             game:GetService("RunService").Heartbeat:Wait()
  106.         end
  107.         game:GetService("RunService").Heartbeat:Wait()
  108.     end
  109. end
  110. generate()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement