Share Pastebin
Guest
Public paste!

Island

By: a guest | Mar 16th, 2010 | Syntax: None | Size: 5.01 KB | Hits: 28 | Expires: Never
Copy text to clipboard
  1. function Place_Palm(Map_ID, Map_X, Map_Y, Map_Z)
  2.         local Size
  3.         local iz
  4.        
  5.         Size = 4 + math.random(3)
  6.         for iz = 1, Size do
  7.                 Map_Block_Change_Fast(-1, Map_ID, Map_X, Map_Y, Map_Z+iz, 17, 0, 0, 0, 0)
  8.         end
  9.         Map_Block_Change_Fast(-1, Map_ID, Map_X+1, Map_Y, Map_Z+Size+1, 18, 0, 0, 0, 0)
  10.         Map_Block_Change_Fast(-1, Map_ID, Map_X-1, Map_Y, Map_Z+Size+1, 18, 0, 0, 0, 0)
  11.         Map_Block_Change_Fast(-1, Map_ID, Map_X, Map_Y+1, Map_Z+Size+1, 18, 0, 0, 0, 0)
  12.         Map_Block_Change_Fast(-1, Map_ID, Map_X, Map_Y-1, Map_Z+Size+1, 18, 0, 0, 0, 0)
  13.         Map_Block_Change_Fast(-1, Map_ID, Map_X+2, Map_Y, Map_Z+Size, 18, 0, 0, 0, 0)
  14.         Map_Block_Change_Fast(-1, Map_ID, Map_X-2, Map_Y, Map_Z+Size, 18, 0, 0, 0, 0)
  15.         Map_Block_Change_Fast(-1, Map_ID, Map_X, Map_Y+2, Map_Z+Size, 18, 0, 0, 0, 0)
  16.         Map_Block_Change_Fast(-1, Map_ID, Map_X, Map_Y-2, Map_Z+Size, 18, 0, 0, 0, 0)
  17.         return
  18. end
  19.  
  20. function Mapfill_island(Map_ID, Map_Size_X, Map_Size_Y, Map_Size_Z)
  21.        
  22.         if Map_Size_X <= 512 and Map_Size_Y <= 512 then
  23.                 Iterations = 8
  24.         end
  25.         if Map_Size_X <= 256 and Map_Size_Y <= 256 then
  26.                 Iterations = 7
  27.         end
  28.         if Map_Size_X <= 128 and Map_Size_Y <= 128 then
  29.                 Iterations = 6
  30.         end
  31.         if Map_Size_X <= 64 and Map_Size_Y <= 64 then
  32.                 Iterations = 5
  33.         end
  34.         if Map_Size_X <= 32 and Map_Size_Y <= 32 then
  35.                 Iterations = 4
  36.         end
  37.         if Map_Size_X <= 16 and Map_Size_Y <= 16 then
  38.                 Iterations = 3
  39.         end
  40.        
  41.         System_Message_Network_Send_2_All(Map_ID, "&c Iterations:"..tostring(Iterations))
  42.        
  43.         local Counter = {}
  44.         for i = 0, 600 do
  45.                 Counter[i] = {}
  46.         end
  47.        
  48.         local Size = 2
  49.        
  50.         local Height_Dunes = Map_Size_Z * 0.52
  51.         local Height_Sand = Map_Size_Z * 0.52
  52.         local Height_Water = Map_Size_Z * 0.5
  53.         local Height_Dirt = Map_Size_Z * 0.3
  54.         local Height_Mountain = Map_Size_Z * 0.7
  55.        
  56.         local ix
  57.         local iy
  58.         local iz
  59.        
  60.         local RND_Factor
  61.         local RND_Factor_2
  62.        
  63.         System_Message_Network_Send_2_All(Map_ID, "&c test")
  64.        
  65.         for ix = 0, Size do
  66.                 for iy = 0, Size do
  67.                         Counter[ix][iy] = math.random(Height_Dunes)
  68.                         if Counter[ix][iy] < Height_Dunes then
  69.                                 Counter[ix][iy] = (Counter[ix][iy] + Height_Dunes*10) / 11
  70.  
  71.                                        
  72.                         end
  73.  
  74.                 end
  75.  
  76.         end
  77.        
  78.         System_Message_Network_Send_2_All(Map_ID, "&c test1")
  79.        
  80.         for i = 1, Iterations do
  81.                 if i >= Iterations-3 then
  82.                         RND_Factor = 0
  83.                 else
  84.                         RND_Factor = 0.010*(Iterations-i)
  85.                 end
  86.                
  87.                 for ix = Size, 0, -1 do
  88.                         for iy = Size, 0, -1 do
  89.                                 Counter[ix*2][iy*2] = Counter[ix][iy]
  90.                         end
  91.                 end
  92.                 for ix = 0, Size-1 do
  93.                         for iy = 0, Size-1 do
  94.                                 if Counter[ix*2][iy*2] <= Height_Water then
  95.                                         RND_Factor_2 = RND_Factor * 0.5
  96.                                 elseif Counter[ix*2][iy*2] <= Height_Sand then
  97.                                         RND_Factor_2 = RND_Factor * 0.4
  98.                                 elseif Counter[ix*2][iy*2] <= Height_Mountain then
  99.                                         RND_Factor_2 = RND_Factor * 1.2
  100.                                 else
  101.                                         RND_Factor_2 = RND_Factor
  102.                                 end
  103.                                 Counter[ix*2][iy*2+1] = (Counter[ix*2][iy*2] + Counter[ix*2][iy*2+2]) / 2 + ((math.random(255)-128)*RND_Factor_2)
  104.                                 Counter[ix*2+2][iy*2+1] = (Counter[ix*2+2][iy*2] + Counter[ix*2+2][iy*2+2]) / 2 + ((math.random(255)-128)*RND_Factor_2)
  105.                                
  106.                                 Counter[ix*2+1][iy*2] = (Counter[ix*2][iy*2] + Counter[ix*2+2][iy*2]) / 2 + ((math.random(255)-128)*RND_Factor_2)
  107.                                 Counter[ix*2+1][iy*2+2] = (Counter[ix*2][iy*2+2] + Counter[ix*2+2][iy*2+2]) / 2 + ((math.random(255)-128)*RND_Factor_2)
  108.                                
  109.                                 Counter[ix*2+1][iy*2+1] = (Counter[ix*2][iy*2] + Counter[ix*2+2][iy*2] + Counter[ix*2][iy*2+2] + Counter[ix*2+2][iy*2+2]) / 4 + ((math.random(255)-128)*RND_Factor_2)
  110.                         end
  111.                 end
  112.                 Size = Size * 2
  113.         end
  114.        
  115.         for ix = 0, Size do
  116.                 for iy = 0, Size do
  117.                         Height = math.ceil(Counter[ix][iy])
  118.                         X = ix
  119.                         Y = iy
  120.                         if Height > Height_Water then
  121.                                 for iz = 0, Height do
  122.                                         Z = iz
  123.                                         if iz > Height - 5 then
  124.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 2, 0, 0, 0, 0)
  125.                                         elseif iz > Height_Dirt then
  126.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 3, 0, 0, 0, 0)
  127.                                         else
  128.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 1, 0, 0, 0, 0)
  129.                                         end
  130.                                 end
  131.                         else
  132.                                 for iz = 0, Height_Water do
  133.                                         Z = iz
  134.                                         if iz > Height then
  135.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 8, 0, 0, 0, 0)
  136.                                         elseif iz == Height_Water then
  137.                                                 if math.random(20) == 1 then
  138.                                                         Place_Palm(Map_ID, X, Y, Z)
  139.                                                 end
  140.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 12, 0, 0, 0, 0)
  141.                                         elseif iz > Height_Dirt then
  142.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 3, 0, 0, 0, 0)
  143.                                         else
  144.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 1, 0, 0, 0, 0)
  145.                                         end
  146.                                 end
  147.                         end
  148.                 end
  149.         end
  150.  
  151.         for ix = 0, Size do
  152.                 for iy = 0, size do
  153.                         Height = math.ceil(Counter[ix][iy])
  154.                         X = ix
  155.                         Y = iy
  156.                         if Height > Height_Dunes then
  157.                                 for iz = 3, Height do
  158.                                         Z = iz
  159.                                         if iz > Height - 6 then
  160.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 1, 0, 0, 0, 0)
  161.                                         elseif iz > Height_Sand then
  162.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 2, 0, 0, 0, 0)
  163.                                         else
  164.                                                 Map_Block_Change_Fast(-1, Map_ID, X, Y, Z, 1, 0, 0, 0, 0)
  165.                                        
  166.                                         end
  167.                                 end
  168.                         end
  169.                 end
  170.         end
  171.                                                
  172.         System_Message_Network_Send_2_All(Map_ID, "&c Map done.")
  173.        
  174. end