Advertisement
QuantumWarpCode

Computercraft City Generator V1

Nov 1st, 2015
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.68 KB | None | 0 0
  1. local tArgs = { ... }
  2.  
  3. if #tArgs ~= 1 and #tArgs ~= 6 then
  4.     print("citygen <Command> <Corner X> <Height> <Corner Z> <Chunks X> <Chunks Y>")
  5.     print("Command can be gen or reset")
  6.     print("The corner is the southwest corner")
  7.     return
  8. end
  9.  
  10. function csetblock(xshift, yshift, zshift, block)
  11.     x = tArgs[2] + xshift
  12.     y = tArgs[3] + yshift
  13.     z = tArgs[4] + zshift
  14.     print("Placing block of "..block.." at "..x.." "..y.." "..z)
  15.     commands.exec("setblock "..x.." "..y.." "..z.." "..block)
  16. end
  17.  
  18. function generateGround()
  19.     blockx = 0
  20.     chunkx = 0
  21.  
  22.     while chunkx*16 + blockx < 16*tArgs[5] do
  23.         blockz = 0
  24.         chunkz = 0
  25.        
  26.         while chunkz*16 + blockz < 16*tArgs[6] do
  27.             if blockx == 0 or blockz == 0 or blockx == 15 or blockz == 15 then
  28.                 csetblock(chunkx*16 + blockx, 0, chunkz*16 + blockz, "stone")
  29.             else
  30.                 csetblock(chunkx*16 + blockx, 0, chunkz*16 + blockz, "grass")
  31.             end
  32.             if blockz == 15 then
  33.                 chunkz = chunkz + 1
  34.                 blockz = 0
  35.             else
  36.                 blockz = blockz + 1
  37.             end
  38.         end
  39.        
  40.         if blockx == 15 then
  41.                 chunkx = chunkx + 1
  42.                 blockx = 0
  43.             else
  44.                 blockx = blockx + 1
  45.         end
  46.     end
  47. end
  48.  
  49. function generateBuildings()
  50.     chunkx = 0
  51.    
  52.     while chunkx < 1*tArgs[5] do
  53.         chunkz = 0
  54.         while chunkz < 1*tArgs[6] do
  55.            
  56.            
  57.             --start of building
  58.            
  59.            
  60.             grass = math.random(3) + 1
  61.             start = grass
  62.             length = 16 - grass
  63.            
  64.             blockx = grass
  65.             while blockx < length do
  66.                 blockz = grass
  67.                 while blockz < length do
  68.                     csetblock(chunkx*16 + blockx, 0, chunkz*16 + blockz, "stone")
  69.                     blockz = blockz + 1
  70.                 end
  71.                 blockx = blockx + 1
  72.             end
  73.            
  74.             height = math.random(3, 8)
  75.             blocky = 1
  76.             floor = 0
  77.             while floor*4+blocky < height*4+1 do
  78.                 blockx = start
  79.                 while blockx < length do
  80.                     blockz = start
  81.                     while blockz < length do
  82.                         if blocky == 0 then
  83.                                 csetblock(chunkx*16 + blockx, floor*4 + blocky, chunkz*16 + blockz, "stone")
  84.                         else
  85.                             if  blockx == grass or blockz == grass or blockx == 15 - grass or blockz == 15 - grass then
  86.                                 if (blockx == grass or blockx == 15-grass) and (blockz == grass or blockz == 15-grass) then
  87.                                     csetblock(chunkx*16 + blockx, floor*4 + blocky, chunkz*16 + blockz, "stone")
  88.                                 else
  89.                                     csetblock(chunkx*16 + blockx, floor*4 + blocky, chunkz*16 + blockz, "glass")
  90.                                 end
  91.                             else
  92.                                 csetblock(chunkx*16 + blockx, floor*4 + blocky, chunkz*16 + blockz, "air")
  93.                             end
  94.                         end
  95.                         blockz = blockz + 1
  96.                     end
  97.                     blockx = blockx + 1
  98.                 end
  99.                
  100.                 if blocky == 3 then
  101.                     floor = floor + 1
  102.                     blocky = 0
  103.                 else
  104.                     blocky = blocky + 1
  105.                 end
  106.             end
  107.            
  108.            
  109.             --end of building
  110.            
  111.            
  112.             chunkz = chunkz + 1
  113.         end
  114.         chunkx = chunkx + 1
  115.     end
  116. end
  117.  
  118.  
  119.  
  120.  
  121.  
  122. if tArgs[1] == "gen" then
  123.     print("Ground generating...")
  124.     generateGround()
  125.     print("Ground generated!")
  126.    
  127.     sleep(2)
  128.    
  129.     print("Buildings generating...")
  130.     generateBuildings()
  131.     print("Buildings generated!")
  132.  
  133.    
  134.     --=============================================================================================
  135.     --Reset code
  136. elseif tArgs[1] == "build" then
  137.  
  138.     generateBuildings()
  139.  
  140. elseif tArgs[1] == "reset" then
  141.     blocky = 0
  142.     while blocky + tArgs[3] < 255 do
  143.         blockx = 0
  144.         if blocky < 1 then
  145.             while blockx < 16*tArgs[5] do
  146.                 blockz = 0
  147.                 while blockz < 16*tArgs[6] do
  148.                     csetblock(blockx, 0, blockz, "grass")
  149.                     blockz = blockz + 1
  150.                 end
  151.                 blockx = blockx + 1
  152.             end
  153.         else
  154.             while blockx < 16*tArgs[5] do
  155.                 blockz = 0
  156.                 while blockz < 16*tArgs[6] do
  157.                     csetblock(blockx, blocky, blockz, "air")
  158.                     blockz = blockz + 1
  159.                 end
  160.                 blockx = blockx + 1
  161.             end
  162.         end
  163.         blocky = blocky + 1
  164.     end
  165. else
  166.     print("Error: Invalid Command")
  167. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement