Advertisement
Guest User

test1

a guest
Jun 26th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.43 KB | None | 0 0
  1. {
  2.   release = 0,
  3.   files = {
  4.     ignore = {
  5.       "ignore",
  6.       "run",
  7.       ".temp",
  8.       "startup",
  9.       "netware",
  10.     },
  11.     api = {
  12.       {
  13.         newlib = "-- newlib\
  14. local burnratio = 12\
  15. \
  16. function set_label(modus)\
  17.  os.setComputerLabel(modus..os.getComputerID())\
  18. end\
  19. \
  20. function pulse(side, times)\
  21.  for i = 1, times do\
  22.    redstone.setOutput(side, true)\
  23.    sleep(.5)\
  24.    redstone.setOutput(side, false)\
  25.    sleep(.5)\
  26.  end\
  27. end\
  28. \
  29. function get_itemcount(slottable)\
  30.  if slottable == {0} then\
  31.    slottable = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }\
  32.  end\
  33.  ic = 0\
  34.  for k,v in pairs{slottable} do\
  35.    ic = ic + turtle.getItemCount(v)\
  36.  end\
  37.  return ic\
  38. end\
  39. function act_direction(mode, amount, direction)\
  40.  if direction == \"up\" then\
  41.    if mode == \"suck\" then\
  42.      return turtle.suckUp(amount)\
  43.    else\
  44.      return turtle.dropUp(amount)\
  45.    end\
  46.  else\
  47.    if direction == \"front\" then\
  48.      if mode == \"suck\" then\
  49.        return turtle.suck(amount)\
  50.      else\
  51.        return turtle.drop(amount)\
  52.      end\
  53.    else\
  54.      if direction == \"down\" then\
  55.        if mode == \"suck\" then\
  56.          return turtle.suckDown(amount)\
  57.        else\
  58.          return turtle.dropDown(amount)\
  59.        end\
  60.      else\
  61.        return false\
  62.      end\
  63.    end\
  64.  end\
  65.      \
  66. end\
  67. \
  68. function is_empty(amount, direction, slottable, amount)\
  69.  empty = true\
  70.  -- get itemcount of all slots in table\
  71.  ic = get_itemcount({0})\
  72. \
  73.  -- probe in direction\
  74.  result = false\
  75.  oldic = get_itemcount({0})\
  76.  if act_direction(\"suck\", amount, direction) then\
  77.    ic = get_itemcount({0})\
  78.    act_direction(\"drop\", (ic - oldic), direction)\
  79.  else\
  80.    result = true\
  81.  end\
  82. end\
  83. \
  84. function get_burnratio()\
  85.  return get_field(16)\
  86. end\
  87. \
  88. function get_mode()\
  89.  return get_field(15)\
  90. end\
  91. \
  92. function get_field(slot)\
  93.  if slot == 15 and turtle.getItemCount(slot) > 1 then\
  94.    data = turtle.getItemCount(slot)\
  95.  else\
  96.    data = turtle.getItemCount(slot)\
  97.  end\
  98.  return data\
  99. end\
  100. \
  101. function feed_burner(itemcount)\
  102.  result = false\
  103.  if turtle.getItemCount(turtle.getSelectedSlot()) >= itemcount then\
  104.    result = turtle.dropDown(itemcount)\
  105.    sleep(1)\
  106.  end\
  107.  return result\
  108. end\
  109. \
  110. function isme(label)\
  111.  if os.getComputerLabel() == label then\
  112.    return true\
  113.  else\
  114.    return false\
  115.  end\
  116. end\
  117. \
  118. \
  119. function load_file(filename)\
  120.  infile = fs.open(filename, \"r\")\
  121.  data = {}\
  122.  if infile then\
  123.    data = infile.readAll()\
  124.  end\
  125.  return data\
  126. end\
  127. \
  128. function load_table(filename)\
  129.  return textutils.unserialize(load_file(filename))\
  130. end\
  131. \
  132. function save_file(data, filename)\
  133.  outfile = fs.open(filename, \"w\")\
  134.  outfile.write(data)\
  135.  result = outfile.flush()\
  136.  outfile.close()\
  137.  return result\
  138. end\
  139. \
  140. function save_table(ttable, filename)\
  141.  return save_file(textutils.serialize(ttable), filename)\
  142. end\
  143. \
  144. function get_key(value, ttable)\
  145.  result = nil\
  146.  for k,v in pairs(ttable) do\
  147.    if value == v then\
  148.      result = k\
  149.    end\
  150.  end\
  151.  return result\
  152. end\
  153. \
  154. function getfilelist()\
  155.  tin = fs.list(\"\")\
  156.  tout = {}\
  157.  for k,v in pairs(tin) do\
  158.    if not fs.isDir(v) and not fs.isReadOnly(v) and not get_key(v, ignore_files) then\
  159.       tout[k] = v\
  160.     end\
  161.  end\
  162.  return tout\
  163. end\
  164. \
  165. function wipe()\
  166.  files = getfilelist()\
  167.  if not files then print(\"nothing found\") return false end\
  168.  for no,file in pairs(files) do\
  169.    print(\"Deleting \"..file..\" ...\")\
  170.    fs.delete(\"/\"..file)\
  171.  end\
  172. end",
  173.       },
  174.       {
  175.         netware = "--netware\
  176. service = \"release\"\
  177. wifi    = nil\
  178. server  = nil\
  179. \
  180. function init()\
  181.  tdevs = peripheral.getNames()\
  182.  for k,v in pairs(tdevs) do\
  183.    if peripheral.getType(v) == \"modem\"\
  184.   and peripheral.wrap(v).isWireless() then \
  185.      rednet.open(v)\
  186.      if rednet.isOpen(v) then\
  187.        rednet.close(v)\
  188.        return v\
  189.        --break\
  190.      end\
  191.    end\
  192.  end\
  193. end\
  194. \
  195. function sopen(side)\
  196.  if rednet.isOpen(side) then rednet.close(side) end\
  197.  rednet.open(side)\
  198.  return rednet.isOpen(side)\
  199. end\
  200. \
  201. function sclose(side)\
  202.  if rednet.isOpen(side) then return rednet.close(side) end\
  203. end\
  204. \
  205. function ssend(service, tcommands)\
  206.  sopen(wifi)\
  207.  rednet.send(server, textutils.serialize(tcommands), service)\
  208.  sclose(wifi)\
  209. end\
  210. \
  211. function get_server(service)\
  212.  sopen(wifi)\
  213.  if not server then\
  214.    server = rednet.lookup(service)\
  215.  end\
  216.  sclose(wifi)\
  217.  return server\
  218. end\
  219. wifi = init()\
  220. server = get_server(service)\
  221. cmds = {\
  222.      latest = { \"get\", \"latest\" },\
  223.      report = { \"report\", \"\" },     \
  224.      }\
  225. ssend(service, cmds)\
  226. \
  227. ",
  228.       },
  229.     },
  230.     config = {
  231.       {
  232.         ignore = "{\
  233.  \"ignore_files\",\
  234.  \"run_files\",\
  235.  \".temp\",\
  236.  \"startup\",\
  237.  \"updater\",\
  238. }",
  239.       },
  240.       {
  241.         run = "{\
  242.  \"updater\",\
  243. }",
  244.       },
  245.       {
  246.         startup = "--startup\
  247. os.loadAPI(shell.resolve(\"source/newlib\"))\
  248. release = newlib.load_table(\"./release\")\
  249. print(release)\
  250. \
  251. \
  252. ",
  253.       },
  254.     },
  255.     run = {
  256.       {
  257.         distributor = "os.loadAPI(\"lib\")\
  258. burnratio = lib.get_burnratio()\
  259. mode = lib.get_mode()\
  260. idlecounter = 0\
  261. early_offset = 3\
  262. \
  263. turtle.placeUp()\
  264. sleep(1)\
  265. turtle.placeUp()\
  266. sleep(1)\
  267. \
  268. if burnratio >= 1 and mode == 2 then\
  269.  print(\"Entering secondary mode...\")\
  270.  modus = \"secondary\"\
  271.  lib.set_label(modus)\
  272. end\
  273. while modus == \"secondary\" do\
  274.  if turtle.getItemCount(1) >= (burnratio + 1) then\
  275.    idlecounter = 0\
  276.    if not turtle.suck(1) then\
  277.      if lib.feed_burner(1) then\
  278.        turtle.drop(burnratio)\
  279.      end\
  280.      lib.pulse(\"front\", burnratio)\
  281.      turtle.turnLeft()\
  282.    else\
  283.      turtle.drop(1)\
  284.      lib.pulse(\"front\", burnratio)\
  285.    end\
  286.  else\
  287.    ic = turtle.getItemCount(1)\
  288.    sum = burnratio + 1 - ic\
  289.    if not turtle.suckUp(sum) then\
  290.      idlecounter = idlecounter + 1\
  291.    end\
  292.  end\
  293.  if idlecounter > 100 then\
  294.    lib.pulse(\"front\", burnratio)\
  295.  end\
  296.  sleep(.1)\
  297.  burnratio = lib.get_burnratio()\
  298. end\
  299. \
  300. if burnratio <= 1 and mode == 3 then\
  301.  print(\"Entering tertiary mode...\")\
  302.  turtle.select(1)\
  303.  modus = \"tertiary\"\
  304.  lib.set_label(modus)\
  305. end\
  306. while modus == \"tertiary\" do\
  307.  if turtle.getItemCount(burnratio) >= 1 then\
  308.    if turtle.drop(1) then\
  309.      turtle.turnLeft()\
  310.    end\
  311.  end\
  312.  sleep(.2)\
  313. end\
  314. \
  315. if burnratio >= 1 and mode == 1 then\
  316.  print(\"Entering primary mode...\")\
  317.  modus = \"primary\"\
  318.  lib.set_label(modus)\
  319. end\
  320. \
  321. rounds = 0\
  322. while modus == \"primary\" do\
  323.  before = os.time()/20*1000\
  324.  if not (turtle.getItemCount(1) >= burnratio) then\
  325.    turtle.suckUp(burnratio - turtle.getItemCount(1))\
  326.  else\
  327.    if turtle.drop(burnratio) then\
  328.      rounds = rounds + 1\
  329.      print(\"Round No. \"..rounds)\
  330.      turtle.turnLeft()\
  331.    end\
  332.  end\
  333.  if rounds >= 4 then\
  334.    rounds = 0\
  335.    burntime = (burnratio/4-1) * 10\
  336.    now = os.time()/20*1000\
  337.    delta = now - before\
  338.    if delta <= (burntime- early_offset) then\
  339.      print(\"Sleeping for \"..(burntime-delta-early_offset).. \"seconds\")\
  340.      sleep(burntime - delta - early_offset)\
  341.    end\
  342.    before = os.time()/20*1000\
  343.  end\
  344.  sleep(.2)\
  345. end\
  346. \
  347. lib.set_label(\"unconfigured\")\
  348. print(\"Reboot in 10...\")\
  349. sleep(10)\
  350. os.reboot()",
  351.       },
  352.     },
  353.   },
  354. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement