Kagee

map-3d

May 1st, 2013
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. os.loadAPI("libstruct")
  2. a=aware
  3. b=libstruct
  4.  
  5. args = {...}
  6.  
  7. if #args < 5 then
  8.         error("Arguments: <height> <width> <depth> <inventory> <name>")
  9. end
  10.  
  11. height=tonumber(args[1])
  12. width=tonumber(args[2])
  13. depth=tonumber(args[3])
  14. -- last block in inventory to use
  15. endblock=tonumber(args[4])
  16. name=args[5]
  17.  
  18. t={}
  19. --print("Setting start")
  20. a.setposition("start")
  21.  
  22. height=height-1
  23. width=width-1
  24. depth=depth-1
  25. parwidth=(width %2 == 0) -- width er partall
  26. moveleft = true
  27.  
  28. for h=0,height do
  29.         t[h] = {}
  30.         for w=0,width do
  31.                 t[h][w] = {}
  32.         end
  33. end
  34.  
  35. function line()
  36.     --print("Mapping line")
  37.     for d=0,depth do
  38.         pos = a.getposition("current")
  39.                 --print("Pos: h" .. pos[3]*-1 .. "-w" .. pos[1] .. "-d" .. pos[2])
  40.                 t[pos[3]*-1][pos[1]][pos[2]] = b.block(endblock)
  41.         if(d<depth) then
  42.             a.df()
  43.         end
  44.     end
  45. end
  46.  
  47. function turn()
  48.     if(moveleft) then
  49.         --print("Moving left")
  50.         a.l()
  51.         a.df()
  52.         a.l()
  53.     else
  54.         --print("Moving right")
  55.         a.r()
  56.         a.df()
  57.         a.r()
  58.     end
  59.     moveleft = not moveleft
  60. end
  61.  
  62. function layer()
  63.     --print("Mapping layer")
  64.     for w=0,width do
  65.         line()
  66.         if(w<width) then
  67.             turn()
  68.         end
  69.     end
  70. end
  71.  
  72. for h=0,height do
  73.     layer()
  74.     if not (h == height) then
  75.         a.dd()
  76.         b.t180()
  77.         if parwidth then
  78.             if h%2 == 0 then
  79.                 turnleft=false
  80.             else
  81.                 turnleft=true  
  82.             end
  83.         else
  84.             turnleft=true
  85.         end
  86.     end
  87. end
  88.  
  89. --print("Finised, going home")
  90. a.goto(a.getposition("start"))
  91.  
  92. t["height"]=height
  93. t["width"]=width
  94. t["depth"]=depth
  95. t["endblock"]=endblock
  96.  
  97. b.save(t,name .. ".3d")
  98. print("Saved to ".. name .. ".3d")
  99. b.awarecleanup()
Advertisement
Add Comment
Please, Sign In to add comment