SHOW:
|
|
- or go back to the newest paste.
| 1 | HeightVariation=2 --The Higher this number is the more "Hilly" the maps are going to get.(Measured in Studs) | |
| 2 | - | BiomeSize=420 --This is half the length/width of the Biome Squares |
| 2 | + | BiomeSize=600 --This is half the length/width of the Biome Squares |
| 3 | - | PartsPerBiome=150 |
| 3 | + | PartsPerBiome=200 |
| 4 | - | TreesInForest=55 |
| 4 | + | TreesInForest=200 |
| 5 | - | TreesInSavannah=3 |
| 5 | + | TreesInSavannah=100 |
| 6 | MaxBlockSize=100 | |
| 7 | MinimumBlockSize=80 | |
| 8 | - | BiomeSquares=3 --Choose an integer 1-5, 5 will have 25 Biome squares, and 1 will have 1. |
| 8 | + | BiomeSquares=5 --Choose an integer 1-5, 5 will have 25 Biome squares, and 1 will have 1. |
| 9 | ||
| 10 | ||
| 11 | game.Lighting.TimeOfDay = "12:00:00" | |
| 12 | function Swamp(x,z) | |
| 13 | local Colors = {"Bright green","Dark green", "Camo", "Earth green", "Br. yellowish green"}
| |
| 14 | local f=Instance.new("Part")
| |
| 15 | f.Anchored = true | |
| 16 | f.Name="Waka" | |
| 17 | f.Color = Color3.new(0, 0, 1) | |
| 18 | f.CFrame = CFrame.new(x, 7, z) | |
| 19 | f.Transparency = 0.4 | |
| 20 | f.CanCollide = false | |
| 21 | f.Size = Vector3.new(BiomeSize*2, 20, BiomeSize*2) | |
| 22 | f.Parent = game.Workspace | |
| 23 | for i=1,PartsPerBiome do | |
| 24 | local h = Instance.new("SpawnLocation")
| |
| 25 | h.Position = Vector3.new(math.random(x-BiomeSize, x+BiomeSize), 1+math.random(-1*HeightVariation, HeightVariation), math.random(z-BiomeSize, z+BiomeSize)) | |
| 26 | h.Anchored = true | |
| 27 | h.Name = "Waka" | |
| 28 | h.BrickColor = BrickColor.new(Colors[math.random(1, #Colors)]) | |
| 29 | h.Size = Vector3.new(math.random(MinimumBlockSize,MaxBlockSize), math.random(4, 50), math.random(MinimumBlockSize, MaxBlockSize)) | |
| 30 | h:clone().Parent = game.Workspace | |
| 31 | wait(0.001) | |
| 32 | end | |
| 33 | end | |
| 34 | function Mount(x,z) | |
| 35 | local Colors = {"Medium stone grey", "Black", "Light stone grey"}
| |
| 36 | local f=Instance.new("Part")
| |
| 37 | f.Anchored = true | |
| 38 | f.Name="Waka" | |
| 39 | f.BrickColor = BrickColor.new("Medium stone grey")
| |
| 40 | f.CFrame = CFrame.new(x, 7, z) | |
| 41 | f.Transparency = 0 | |
| 42 | f.CanCollide = true | |
| 43 | f.Size = Vector3.new(BiomeSize*2, 20, BiomeSize*2) | |
| 44 | f.Parent = game.Workspace | |
| 45 | for i=1,PartsPerBiome do | |
| 46 | local h = Instance.new("SpawnLocation")
| |
| 47 | h.Position = Vector3.new(math.random(x-BiomeSize, x+BiomeSize), 17+math.random(-1*HeightVariation, HeightVariation), math.random(z-BiomeSize, z+BiomeSize)) | |
| 48 | h.Anchored = true | |
| 49 | h.Name = "Waka" | |
| 50 | h.BrickColor = BrickColor.new(Colors[math.random(1, #Colors)]) | |
| 51 | h.Size = Vector3.new(math.random(MinimumBlockSize,MaxBlockSize), math.random(4, 50), math.random(MinimumBlockSize, MaxBlockSize)) | |
| 52 | h:clone().Parent = game.Workspace | |
| 53 | wait(0.001) | |
| 54 | end | |
| 55 | end | |
| 56 | function Sand(x,z) | |
| 57 | local Colors = {"Cool yellow", "CGA brown", "Deep orange", "Pastel yellow"}
| |
| 58 | local f=Instance.new("Part")
| |
| 59 | f.Anchored = true | |
| 60 | f.Name="Waka" | |
| 61 | f.BrickColor = BrickColor.new("Deep orange")
| |
| 62 | f.CFrame = CFrame.new(x, 7, z) | |
| 63 | f.Transparency = 0 | |
| 64 | f.CanCollide = true | |
| 65 | f.Size = Vector3.new(BiomeSize*2, 20, BiomeSize*2) | |
| 66 | f.Parent = game.Workspace | |
| 67 | for i=1,PartsPerBiome do | |
| 68 | local h = Instance.new("SpawnLocation")
| |
| 69 | h.Position = Vector3.new(math.random(x-BiomeSize, x+BiomeSize), 17+math.random(-1*HeightVariation, HeightVariation), math.random(z-BiomeSize, z+BiomeSize)) | |
| 70 | h.Anchored = true | |
| 71 | h.Name = "Waka" | |
| 72 | h.BrickColor = BrickColor.new(Colors[math.random(1, #Colors)]) | |
| 73 | h.Size = Vector3.new(math.random(MinimumBlockSize,MaxBlockSize), math.random(4, 50), math.random(MinimumBlockSize, MaxBlockSize)) | |
| 74 | h:clone().Parent = game.Workspace | |
| 75 | wait(0.001) | |
| 76 | end | |
| 77 | end | |
| 78 | function Forest(x,z) | |
| 79 | local Colors = {"Bright green"}
| |
| 80 | local f=Instance.new("Part")
| |
| 81 | f.Anchored = true | |
| 82 | f.Name="Waka" | |
| 83 | f.BrickColor = BrickColor.new("Bright green")
| |
| 84 | f.CFrame = CFrame.new(x, 7, z) | |
| 85 | f.Transparency = 0 | |
| 86 | f.CanCollide = true | |
| 87 | f.Size = Vector3.new(BiomeSize*2, 20, BiomeSize*2) | |
| 88 | f.Parent = game.Workspace | |
| 89 | for i=1,PartsPerBiome do | |
| 90 | local h = Instance.new("SpawnLocation")
| |
| 91 | h.Position = Vector3.new(math.random(x-BiomeSize, x+BiomeSize), 17+math.random(-1*HeightVariation, HeightVariation), math.random(z-BiomeSize, z+BiomeSize)) | |
| 92 | h.Anchored = true | |
| 93 | h.Name = "Waka" | |
| 94 | h.BrickColor = BrickColor.new(Colors[math.random(1, #Colors)]) | |
| 95 | h.Size = Vector3.new(math.random(MinimumBlockSize,MaxBlockSize), math.random(4, 50), math.random(MinimumBlockSize, MaxBlockSize)) | |
| 96 | h:clone().Parent = game.Workspace | |
| 97 | wait(0.001) | |
| 98 | end | |
| 99 | local Base = Instance.new("Part")
| |
| 100 | Base.Name = "Trunk" | |
| 101 | Base.formFactor = "Custom" | |
| 102 | Base.TopSurface = 0 | |
| 103 | Base.BottomSurface = 0 | |
| 104 | Base.Anchored = true | |
| 105 | Base.BrickColor = BrickColor.new("Reddish brown")
| |
| 106 | local Leaves = Base:Clone() | |
| 107 | Leaves.Name = "Leaves" | |
| 108 | Leaves.CanCollide = false | |
| 109 | Leaves.BrickColor = BrickColor.new("Dark green")
| |
| 110 | local leafmesh = Instance.new("SpecialMesh")
| |
| 111 | leafmesh.MeshType = "FileMesh" | |
| 112 | leafmesh.MeshId = "http://www.roblox.com/asset/?id=1290033" | |
| 113 | leafmesh.TextureId = "http://www.roblox.com/asset/?id=2861779" | |
| 114 | leafmesh.Parent = Leaves | |
| 115 | Instance.new("CylinderMesh",Base)
| |
| 116 | function dot(c1,c2) | |
| 117 | local m = CFrame.Angles(math.pi/2,0,0) | |
| 118 | return (c1*m).lookVector:Dot((c2*m).lookVector) | |
| 119 | end | |
| 120 | local leaf_mult = {
| |
| 121 | Vector3.new(1.5,1.5,1.2); | |
| 122 | Vector3.new(1.5,1,1.5); | |
| 123 | Vector3.new(1.2,1.5,1.5); | |
| 124 | Vector3.new(1.5,1.5,1.5); | |
| 125 | } | |
| 126 | ||
| 127 | function Branch(base,c) | |
| 128 | if c <= 0 then | |
| 129 | local leaves = Leaves:Clone() | |
| 130 | local vol = base.Size.x+base.Size.y+base.Size.z | |
| 131 | leaves.Mesh.Scale = leaf_mult[math.random(1,#leaf_mult)]*math.random(vol/3*10,vol/3*12)/10 | |
| 132 | leaves.Size = leaves.Mesh.Scale*0.75 | |
| 133 | leaves.CFrame = base.CFrame * CFrame.new(0,base.Size.y/2,0) | |
| 134 | leaves.Parent = base.Parent | |
| 135 | else | |
| 136 | local pos = base.CFrame*CFrame.new(0,base.Size/2,0) | |
| 137 | local height = base.Size.y | |
| 138 | local width = base.Size.x | |
| 139 | local nb = math.random(2,2) | |
| 140 | local r = math.random(45,135) | |
| 141 | local da = math.random(20+55/c,40+40/c) | |
| 142 | local ba = math.random(-da/3,da/3) | |
| 143 | for i=0,nb-1 do | |
| 144 | local branch = base:Clone() | |
| 145 | branch.Name = "Branch" | |
| 146 | local h = height*math.random(95,115)/100 | |
| 147 | local new = branch.CFrame * CFrame.new(0,height/2,0) * CFrame.Angles(0,0,math.rad(ba)) | |
| 148 | new = new * CFrame.Angles(0,i*(math.pi*2/nb)+r,math.rad(da/2)) * CFrame.new(0,h/2,0) | |
| 149 | local w = dot(new,branch.CFrame)*width*0.9 | |
| 150 | ||
| 151 | branch.Size = Vector3.new(w,h,w) | |
| 152 | branch.CFrame = new | |
| 153 | branch.Parent = base.Parent | |
| 154 | ||
| 155 | Branch(branch,c-1) | |
| 156 | end | |
| 157 | end | |
| 158 | end | |
| 159 | ||
| 160 | ||
| 161 | function _G.Tree(location,complexity,width,height) | |
| 162 | local tree = Instance.new("Model")
| |
| 163 | tree.Name = "Waka" | |
| 164 | tree.archivable = false | |
| 165 | tree.Parent = workspace | |
| 166 | local base = Base:Clone() | |
| 167 | base.Parent = tree | |
| 168 | base.Size = Vector3.new(width,height,width) | |
| 169 | -- move up by half its height, and rotate randomly | |
| 170 | base.CFrame = location * CFrame.new(0,height/2,0) * CFrame.Angles(0,math.rad(math.random(1,360)),0) | |
| 171 | -- start branching | |
| 172 | Branch(base,complexity) | |
| 173 | return tree | |
| 174 | end | |
| 175 | for i=1,TreesInForest do | |
| 176 | _G.Tree(CFrame.new(math.random(x-BiomeSize, x+BiomeSize), 17, math.random(z-BiomeSize, z+BiomeSize)),3,4,20) | |
| 177 | end | |
| 178 | end | |
| 179 | function Savannah(x,z) | |
| 180 | local Colors = {"Bright green"}
| |
| 181 | local f=Instance.new("Part")
| |
| 182 | f.Anchored = true | |
| 183 | f.Name="Waka" | |
| 184 | f.BrickColor = BrickColor.new("Bright green")
| |
| 185 | f.CFrame = CFrame.new(x, 7, z) | |
| 186 | f.Transparency = 0 | |
| 187 | f.CanCollide = true | |
| 188 | f.Size = Vector3.new(BiomeSize*2, 20, BiomeSize*2) | |
| 189 | f.Parent = game.Workspace | |
| 190 | for i=1,PartsPerBiome do | |
| 191 | local h = Instance.new("SpawnLocation")
| |
| 192 | h.Position = Vector3.new(math.random(x-BiomeSize, x+BiomeSize), 17+math.random(-1*HeightVariation, HeightVariation), math.random(z-BiomeSize, z+BiomeSize)) | |
| 193 | h.Anchored = true | |
| 194 | h.Name = "Waka" | |
| 195 | h.BrickColor = BrickColor.new(Colors[math.random(1, #Colors)]) | |
| 196 | h.Size = Vector3.new(math.random(MinimumBlockSize,MaxBlockSize), math.random(4, 50), math.random(MinimumBlockSize, MaxBlockSize)) | |
| 197 | h:clone().Parent = game.Workspace | |
| 198 | wait(0.001) | |
| 199 | end | |
| 200 | local Base = Instance.new("Part")
| |
| 201 | Base.Name = "Trunk" | |
| 202 | Base.formFactor = "Custom" | |
| 203 | Base.TopSurface = 0 | |
| 204 | Base.BottomSurface = 0 | |
| 205 | Base.Anchored = true | |
| 206 | Base.BrickColor = BrickColor.new("Reddish brown")
| |
| 207 | local Leaves = Base:Clone() | |
| 208 | Leaves.Name = "Leaves" | |
| 209 | Leaves.CanCollide = false | |
| 210 | Leaves.BrickColor = BrickColor.new("Dark green")
| |
| 211 | local leafmesh = Instance.new("SpecialMesh")
| |
| 212 | leafmesh.MeshType = "FileMesh" | |
| 213 | leafmesh.MeshId = "http://www.roblox.com/asset/?id=1290033" | |
| 214 | leafmesh.TextureId = "http://www.roblox.com/asset/?id=2861779" | |
| 215 | leafmesh.Parent = Leaves | |
| 216 | Instance.new("CylinderMesh",Base)
| |
| 217 | function dot(c1,c2) | |
| 218 | local m = CFrame.Angles(math.pi/2,0,0) | |
| 219 | return (c1*m).lookVector:Dot((c2*m).lookVector) | |
| 220 | end | |
| 221 | local leaf_mult = {
| |
| 222 | Vector3.new(1.5,1.5,1.2); | |
| 223 | Vector3.new(1.5,1,1.5); | |
| 224 | Vector3.new(1.2,1.5,1.5); | |
| 225 | Vector3.new(1.5,1.5,1.5); | |
| 226 | } | |
| 227 | ||
| 228 | function Branch(base,c) | |
| 229 | if c <= 0 then | |
| 230 | local leaves = Leaves:Clone() | |
| 231 | local vol = base.Size.x+base.Size.y+base.Size.z | |
| 232 | leaves.Mesh.Scale = leaf_mult[math.random(1,#leaf_mult)]*math.random(vol/3*10,vol/3*12)/10 | |
| 233 | leaves.Size = leaves.Mesh.Scale*0.75 | |
| 234 | leaves.CFrame = base.CFrame * CFrame.new(0,base.Size.y/2,0) | |
| 235 | leaves.Parent = base.Parent | |
| 236 | else | |
| 237 | local pos = base.CFrame*CFrame.new(0,base.Size/2,0) | |
| 238 | local height = base.Size.y | |
| 239 | local width = base.Size.x | |
| 240 | local nb = math.random(2,2) | |
| 241 | local r = math.random(45,135) | |
| 242 | local da = math.random(20+55/c,40+40/c) | |
| 243 | local ba = math.random(-da/3,da/3) | |
| 244 | for i=0,nb-1 do | |
| 245 | local branch = base:Clone() | |
| 246 | branch.Name = "Branch" | |
| 247 | local h = height*math.random(95,115)/100 | |
| 248 | local new = branch.CFrame * CFrame.new(0,height/2,0) * CFrame.Angles(0,0,math.rad(ba)) | |
| 249 | new = new * CFrame.Angles(0,i*(math.pi*2/nb)+r,math.rad(da/2)) * CFrame.new(0,h/2,0) | |
| 250 | local w = dot(new,branch.CFrame)*width*0.9 | |
| 251 | ||
| 252 | branch.Size = Vector3.new(w,h,w) | |
| 253 | branch.CFrame = new | |
| 254 | branch.Parent = base.Parent | |
| 255 | ||
| 256 | Branch(branch,c-1) | |
| 257 | end | |
| 258 | end | |
| 259 | end | |
| 260 | ||
| 261 | ||
| 262 | function _G.Tree(location,complexity,width,height) | |
| 263 | local tree = Instance.new("Model")
| |
| 264 | tree.Name = "Waka" | |
| 265 | tree.archivable = false | |
| 266 | tree.Parent = workspace | |
| 267 | local base = Base:Clone() | |
| 268 | base.Parent = tree | |
| 269 | base.Size = Vector3.new(width,height,width) | |
| 270 | -- move up by half its height, and rotate randomly | |
| 271 | base.CFrame = location * CFrame.new(0,height/2,0) * CFrame.Angles(0,math.rad(math.random(1,360)),0) | |
| 272 | -- start branching | |
| 273 | Branch(base,complexity) | |
| 274 | return tree | |
| 275 | end | |
| 276 | for i=1,TreesInSavannah do | |
| 277 | _G.Tree(CFrame.new(math.random(x-BiomeSize, x+BiomeSize), 1, math.random(z-BiomeSize, z+BiomeSize)),3,4,20) | |
| 278 | end | |
| 279 | end | |
| 280 | function find(X,Z) | |
| 281 | local R=math.random(1,5) | |
| 282 | if R==1 then | |
| 283 | Swamp(X,Z) | |
| 284 | end | |
| 285 | if R==2 then | |
| 286 | Mount(X,Z) | |
| 287 | end | |
| 288 | if R==3 then | |
| 289 | Sand(X,Z) | |
| 290 | end | |
| 291 | if R==4 then | |
| 292 | Forest(X,Z) | |
| 293 | end | |
| 294 | if R==5 then | |
| 295 | Savannah(X,Z) | |
| 296 | end | |
| 297 | end | |
| 298 | if BiomeSquares==1 then | |
| 299 | find(BiomeSize*-3,BiomeSize*-3) | |
| 300 | end | |
| 301 | if BiomeSquares==2 then | |
| 302 | find(BiomeSize*-3,BiomeSize*-3) | |
| 303 | find(BiomeSize*-1,BiomeSize*-3) | |
| 304 | find(BiomeSize*-3,BiomeSize*-1) | |
| 305 | find(BiomeSize*-1,BiomeSize*-1) | |
| 306 | end | |
| 307 | if BiomeSquares==3 then | |
| 308 | find(BiomeSize*-3,BiomeSize*-3) | |
| 309 | find(BiomeSize*-1,BiomeSize*-3) | |
| 310 | find(BiomeSize,BiomeSize*-3) | |
| 311 | find(BiomeSize*-3,BiomeSize*-1) | |
| 312 | find(BiomeSize*-1,BiomeSize*-1) | |
| 313 | find(BiomeSize,BiomeSize*-1) | |
| 314 | find(BiomeSize*-3,BiomeSize) | |
| 315 | find(BiomeSize*-1,BiomeSize) | |
| 316 | find(BiomeSize,BiomeSize) | |
| 317 | end | |
| 318 | if BiomeSquares==4 then | |
| 319 | find(BiomeSize*-3,BiomeSize*-3) | |
| 320 | find(BiomeSize*-1,BiomeSize*-3) | |
| 321 | find(BiomeSize,BiomeSize*-3) | |
| 322 | find(BiomeSize*3,BiomeSize*-3) | |
| 323 | find(BiomeSize*-3,BiomeSize*-1) | |
| 324 | find(BiomeSize*-1,BiomeSize*-1) | |
| 325 | find(BiomeSize,BiomeSize*-1) | |
| 326 | find(BiomeSize*3,BiomeSize*-1) | |
| 327 | find(BiomeSize*-3,BiomeSize) | |
| 328 | find(BiomeSize*-1,BiomeSize) | |
| 329 | find(BiomeSize,BiomeSize) | |
| 330 | find(BiomeSize*3,BiomeSize) | |
| 331 | find(BiomeSize*-3,BiomeSize*3) | |
| 332 | find(BiomeSize*-1,BiomeSize*3) | |
| 333 | find(BiomeSize,BiomeSize*3) | |
| 334 | find(BiomeSize*3,BiomeSize*3) | |
| 335 | end | |
| 336 | if BiomeSquares==5 then | |
| 337 | find(BiomeSize*-3,BiomeSize*-3) | |
| 338 | find(BiomeSize*-1,BiomeSize*-3) | |
| 339 | find(BiomeSize,BiomeSize*-3) | |
| 340 | find(BiomeSize*3,BiomeSize*-3) | |
| 341 | find(BiomeSize*5,BiomeSize*-3) | |
| 342 | find(BiomeSize*-3,BiomeSize*-1) | |
| 343 | find(BiomeSize*-1,BiomeSize*-1) | |
| 344 | find(BiomeSize,BiomeSize*-1) | |
| 345 | find(BiomeSize*3,BiomeSize*-1) | |
| 346 | find(BiomeSize*5,BiomeSize*-1) | |
| 347 | find(BiomeSize*-3,BiomeSize) | |
| 348 | find(BiomeSize*-1,BiomeSize) | |
| 349 | find(BiomeSize,BiomeSize) | |
| 350 | find(BiomeSize*3,BiomeSize) | |
| 351 | find(BiomeSize*5,BiomeSize) | |
| 352 | find(BiomeSize*-3,BiomeSize*3) | |
| 353 | find(BiomeSize*-1,BiomeSize*3) | |
| 354 | find(BiomeSize,BiomeSize*3) | |
| 355 | find(BiomeSize*3,BiomeSize*3) | |
| 356 | find(BiomeSize*5,BiomeSize*3) | |
| 357 | find(BiomeSize*-3,BiomeSize*5) | |
| 358 | find(BiomeSize*-1,BiomeSize*5) | |
| 359 | find(BiomeSize,BiomeSize*5) | |
| 360 | find(BiomeSize*3,BiomeSize*5) | |
| 361 | find(BiomeSize*5,BiomeSize*5) | |
| 362 | end |