BruceWplays

Craft V5

Sep 28th, 2022 (edited)
793
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 10.41 KB | None | 0 0
  1. function craft(crargs)
  2.     os.loadAPI("sugurapi/gt")
  3.     term.clear()
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.     if fs.exists("AndysPrograms/craft/settings") then
  17.         settings.load("AndysPrograms/craft/settings")
  18.     end
  19.     local maxW, maxH = term.getSize()
  20.    
  21.    
  22.    
  23.     function exit()
  24.         term.clear()
  25.         term.setCursorPos(1, 1)
  26.         print("Starting")
  27.         openset = 0
  28.     end
  29.     function chngset()
  30.         chngsel = 1
  31.     end
  32.    
  33.     function savesets()
  34.         settings.save("AndysPrograms/craft/settings")
  35.     end
  36.     gpstab = {}
  37.     local stgpsx, stgpsy, stgpsz = gps.locate(5)
  38.     table.insert(gpstab, stgpsx)
  39.     table.insert(gpstab, stgpsy)
  40.     table.insert(gpstab, stgpsz)
  41.     table.insert(gpstab, "n")
  42.     if fs.exists("AndysPrograms/craft/settings") == false then
  43.         if fs.exists("AndysPrograms/craft") == false then
  44.           fs.makeDir("AndysPrograms/craft")
  45.         end
  46.    
  47.    
  48.    
  49.     local temp = {}
  50.  
  51.         settings.set("item Location", gpstab)
  52.         settings.set("item slots", temp)
  53.         settings.set("put Location", gpstab)
  54.         settings.set("put slot", temp)
  55.         savesets()
  56.      
  57.        
  58.        
  59.       end
  60.     function resetmenu()
  61.     deftab = {}
  62.     setmenu = {}
  63.     setmenu = {
  64.         {text = "Finish editing:", options = "Finish", handler = exit},
  65.         {text = "Item Location", setname = "item Location", options = settings.get("item Location"), type = deftab, handler = chngset},
  66.         {text = "Item Slots", setname = "item slots", options = settings.get("item slots"), type = deftab, handler = chngset},
  67.         {text = "Put Location", setname = "put Location", options = settings.get("put Location"), type = deftab, handler = chngset},
  68.         {text = "Put Slot", setname = "put slot", options = settings.get("put slot"), type = "num", handler = chngset}
  69.     }
  70.    
  71.     end
  72.     resetmenu()
  73.    
  74.     function addsettings(num, value)
  75.         settings.set(setmenu[num].setname, value)
  76.         savesets()
  77.     end
  78.    
  79.     openset = 1
  80.    
  81.     if crargs[1] == "noset" then
  82.         openset = 0
  83.     end
  84.    
  85.     while openset == 1 do
  86.    
  87.     local overprintw = 0
  88.    
  89.     local sublet = 0
  90.     if openset == 1 then
  91.         chngsel = 0
  92.         term.clear()
  93.         local setsoffset = 3
  94.         local selitem = 1
  95.         --if (maxH) < (#setmenu * 2) then
  96.         --    selitem = maxH / 2
  97.        -- elseif (maxH) > (#setmenu) then
  98.            --selitem = 1
  99.         --end
  100.         divamloop = 0
  101.         divamloopo = 0
  102.         divamo = 0
  103.         function printmenu(menu)
  104.             while divamloopo > 1 do
  105.                 --setsoffset = setsoffset + #setmenu[sets].text / maxW
  106.                 setsoffset = setsoffset - 1
  107.                 divamloopo = divamloopo - 1
  108.             end
  109.  
  110.             while divamloop > 1 do
  111.                 --setsoffset = setsoffset + #setmenu[sets].text / maxW
  112.                 setsoffset = setsoffset - 1
  113.                 divamloop = divamloop - 1
  114.             end
  115.  
  116.             for sets=1,#setmenu do
  117.                
  118.                 setsmul = (sets * 2) - 1
  119.                 if (setsmul + setsoffset) <= maxH then
  120.                     divam = #setmenu[sets].text / maxW
  121.                     --print(divam)
  122.                     while divam > 1 do
  123.                         --setsoffset = setsoffset + #setmenu[sets].text / maxW
  124.                         setsoffset = setsoffset + 1
  125.                         divam = divam - 1
  126.                         divamloop = divamloop + 1
  127.                     end
  128.                     term.setCursorPos(1, setsmul + setsoffset)
  129.                     print(setmenu[sets].text)
  130.                     --print(divam)
  131.                     term.setCursorPos(1, (setsmul + 1) + setsoffset)
  132.                     if setmenu[sets].options ~= nil then
  133.  
  134.                         term.clearLine()
  135.                         prntset = setmenu[sets].options
  136.                         if (type(prntset) == "table") then
  137.                             prntset = table.concat(setmenu[sets].options, ", ")
  138.                         end
  139.                         divamo = (#tostring(prntset) / maxW) + 1
  140.                         --print(divamo)
  141.                         while divamo > 1 do
  142.                             --setsoffset = setsoffset + #setmenu[sets].text / maxW
  143.                             setsoffset = setsoffset + 1
  144.                             divamo = divamo - 1
  145.                             divamloopo = divamloopo + 1
  146.                         end
  147.                         if selitem == sets then
  148.                             if chngsel == 1 then
  149.                                 input = read()
  150.                                 if input then
  151.                                     inptesset = setmenu[sets].type
  152.                                     if type(inptesset) == "table" then
  153.                                         settingsinputtable = {}
  154.                                         input2 = string.gsub(input, ", ", ",")
  155.                                         --print(input)
  156.                                         for i in string.gmatch(input2, '([^,]+)') do
  157.                                             table.insert(settingsinputtable, i)
  158.                                         end
  159.                                         --print(input)
  160.                                         addsettings(selitem, settingsinputtable)
  161.                                     end
  162.                                     if type(inptesset) ~= "table" then
  163.                                         addsettings(selitem, input)
  164.                                     end
  165.                                     resetmenu()
  166.                                     --print(chngsel)
  167.                                     chngsel = 0
  168.                                 end
  169.        
  170.                             else
  171.                                 print(">  "..prntset)
  172.                             end
  173.                         else
  174.                             print("   "..prntset)
  175.                         end
  176.  
  177.                     end
  178.  
  179.                 end
  180.             end
  181.         end
  182.         function onsel(menu, selected)
  183.             menu[selected].handler()
  184.         end
  185.    
  186.         function onkeypress(key, menu, selected)
  187.             if key == keys.enter or key == keys.space then
  188.                 if chngsel == 0 then
  189.                     onsel(menu, selected)
  190.                 end
  191.                -- if chngsel == 1 and (key == keys.enter or key == keys.space) then
  192.                  --   chngsel = 0
  193.                -- end
  194.             elseif key == keys.up or key == keys.w then
  195.                 if selitem > 1 then
  196.                     setsoffset = setsoffset + 2
  197.                     --setsoffset = math.floor(setsoffset)
  198.                     selitem = selitem - 1
  199.                 end
  200.             elseif key == keys.down or key == keys.s then
  201.                 if selitem < (#menu) then
  202.                     setsoffset = setsoffset - 2
  203.                     --setsoffset = math.floor(setsoffset)
  204.                     selitem = selitem + 1
  205.                 end
  206.             elseif key == keys.q then
  207.                 exit()
  208.             end
  209.         end
  210.    
  211.     while openset == 1 do
  212.         term.setCursorPos(1, 1)
  213.         term.clear()
  214.         printmenu(setmenu)
  215.         event, key = os.pullEvent("key")
  216.         onkeypress(key, setmenu, selitem)
  217.     end
  218.  
  219.  
  220.  
  221. end
  222.  
  223.  
  224.  
  225.  
  226. end
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.     while true do
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.     ---------------------
  251.     ---------------------
  252.     ---------------------
  253.     --CHANGE HERE START--
  254.     ---------------------
  255.     ---------------------
  256.     ---------------------
  257.     pieloc = settings.get(setmenu[4].setname)
  258.     pieslot = tonumber(settings.get(setmenu[5].setname))
  259.  
  260.  
  261.  
  262.  
  263.  
  264.     wait_time = 60 / 72
  265.     wait_time = wait_time / 8
  266.     -------------------
  267.     -------------------
  268.     --CHANGE HERE END--
  269.     -------------------
  270.     -------------------
  271.  
  272.  
  273.     itemlocs = {
  274.         {itloc = {303, 69, 348, "s"}, itslot = 1},
  275.         {itloc = {303, 66, 331, "n"}, itslot = 2},
  276.         {itloc = {305, 65, 327, "w"}, itslot = 3}
  277.     }
  278.     itemlocs = {}
  279.     itemlocss = {}
  280.     itemlocstemp = {}
  281.     itemlocstempfin = {}
  282.     itemloctab = settings.get(setmenu[2].setname)
  283.     itemslottab =settings.get(setmenu[3].setname)
  284.     loadioffset = 0
  285.     for i=1,#itemslottab do
  286.         itemlocstemp = {}
  287.         itemlocstempfin = {}
  288.         for i2=1 + loadioffset,4 + loadioffset do
  289.             table.insert(itemlocstemp, itemloctab[i2])
  290.             --print(table.concat(itemlocstemp, ", "))
  291.             --sleep(2)
  292.            
  293.         end
  294.         loadioffset = loadioffset + 4
  295.         table.insert(itemlocs, {itloc = itemlocstemp, itslot = tonumber(itemslottab[i])})
  296.         table.insert(itemlocss, itemlocstempfin)
  297.     end
  298. --for i=1,#itemlocs do
  299. --    print(table.concat(itemlocs[i].itloc, ", "))
  300. --print(itemlocs[i].itloc)
  301. --print(itemlocs[i].itslot)
  302. --end
  303. --sleep(5)
  304.  
  305.  
  306. function cdrop(slot, crloc)
  307.     if turtle.getItemCount(slot) ~= 0  then
  308.         turtle.turnLeft()
  309.         gt.goto(crloc)
  310.         turtle.select(slot)
  311.         while turtle.getItemCount(slot) ~= 0 do
  312.             turtle.drop()
  313.             term.setCursorPos(1,1)
  314.             print("Putting: "..slot)
  315.             if turtle.getItemCount(slot) ~= 0 then
  316.                 sleep(wait_time)
  317.             end
  318.         end
  319.     end
  320. end
  321.                            
  322.                        
  323.                            
  324. function cgrab(slot, crloc)
  325.     if turtle.getItemCount(slot) == 0 then
  326.         turtle.select(slot)
  327.         gt.goto(crloc)
  328.         while turtle.getItemCount(slot) == 0 do
  329.             turtle.suck()
  330.             term.setCursorPos(1,1)
  331.             print("Getting: "..slot)
  332.             if turtle.getItemCount(slot) == 0 then
  333.                 sleep(wait_time)
  334.             end
  335.         end
  336.     end
  337. end
  338.    
  339. function checkcraft(slot, cheloc)
  340.     fullitems = 0
  341.     for i =1,#itemlocs do
  342.         if turtle.getItemCount(i) ~= 0 then
  343.             fullitems = fullitems + 1
  344.         end
  345.         if fullitems == #itemlocs then
  346.             term.setCursorPos(1,1)
  347.             print("Crafting: "..slot)
  348.             turtle.select(slot)
  349.             turtle.craft()
  350.             cdrop(slot, cheloc)
  351.         end
  352.     end
  353. end
  354.  
  355. function getitems()
  356.     for i =1,#itemlocs do
  357.         cgrab(itemlocs[i].itslot, itemlocs[i].itloc)
  358.     end
  359. end
  360.  
  361.  
  362. checkcraft(pieslot, pieloc)
  363. getitems()
  364. checkcraft(pieslot, pieloc)
  365. break
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372. end
  373. end
Add Comment
Please, Sign In to add comment